This document is the operator runbook for RAGU.
Use it to:
- start and stop the stack
- verify that services are healthy
- troubleshoot common failures
- understand which logs and endpoints matter first
For product overview and setup, see README.md. For architectural structure, see ARCHITECTURE.md. For security assumptions and risks, see SECURITY.md.
RAGU currently runs as a Docker Compose stack with these core services:
appollamachromaredisotel-collectorzipkinollama-exporterprometheusgrafanacadvisor
Start the full stack:
docker compose up --buildStop the stack:
docker compose downStop and remove named volumes:
docker compose down -vRemove orphaned containers from older compose definitions:
docker compose down --remove-orphansThe core product is healthy when all of these are true:
- Streamlit UI loads
- PDFs can be processed
- Chroma accepts retrieval traffic
- Ollama returns chat and embedding responses
- answers stream in the UI
The observability stack is healthy when:
- Zipkin UI loads
- Prometheus UI loads
- Grafana UI loads
- Grafana dashboards show real data
- App:
http://localhost:8501 - Ollama API:
http://localhost:11434 - Chroma API:
http://localhost:8000 - Redis:
localhost:6379 - Zipkin UI:
http://localhost:9411 - Ollama exporter metrics:
http://localhost:8001/metrics - Prometheus UI:
http://localhost:9090 - Grafana UI:
http://localhost:3000 - cAdvisor UI:
http://localhost:8081
flowchart TD
User[User] --> App[Streamlit app]
App --> Ollama[Ollama]
App --> Chroma[Chroma]
App -. future .-> Redis[Redis]
Chroma --> OTel[OTEL Collector]
OTel --> Zipkin[Zipkin]
OTel --> Prometheus[Prometheus]
Ollama --> Exporter[Ollama exporter]
Exporter --> Prometheus
CAdvisor[cAdvisor] --> Prometheus
Prometheus --> Grafana[Grafana]
Check whether containers are up:
docker compose psExpected high-level result:
apprunningollamahealthyredishealthy- all remaining services running
Open the UI and verify:
- the page loads
- the logo appears
- the question box is visible
- TTS status is visible
Check loaded models:
docker compose exec ollama ollama listExpected:
- configured chat model exists
- configured embedding model exists
Quick heartbeat:
curl http://localhost:8000/api/v2/heartbeatOpen:
http://localhost:9090/targets
Expected:
ollama-exporterisUPcadvisorisUPotel-collectorscrape isUP
Open Grafana and verify:
- Prometheus datasource exists
Ollama Overviewdashboard loads- CPU and RAM gauges show values
- GPU gauge may stay
0on hosts without exposed accelerator metrics
Generate traffic:
curl http://localhost:8000/api/v2/heartbeatThen open Zipkin and run a query.
Use this order:
docker compose psdocker compose logs <service>- direct endpoint checks
- UI validation
Checks:
docker compose logs ollama
docker compose exec ollama ollama listLikely causes:
- first startup still downloading models
.envmodel names do not match pulled models
Checks:
docker compose logs chroma
docker compose logs app
curl http://localhost:8000/api/v2/heartbeatLikely causes:
- Chroma started but app-side collection init failed
- embedding requests to Ollama failed
- collection configuration drift
Checks:
- Prometheus targets page
- exporter metrics endpoint
- Grafana datasource configuration
Commands:
docker compose logs prometheus
docker compose logs grafana
curl http://localhost:8001/metricsCheck:
docker compose logs otel-collector
docker compose logs chromaExpected behavior:
- the app still works
- the UI shows a TTS availability message
- no audio player is rendered if Piper is unavailable
Check:
docker compose logs appCheck:
docker compose logs cadvisordocker compose build --no-cache app
docker compose updocker compose restart app
docker compose restart grafana
docker compose restart prometheusUse with care. This removes persisted data too.
docker compose down -v --remove-orphans
docker compose up --buildUse the sample PDFs from examples and validate:
- Upload one or more PDFs.
- Process them successfully.
- Ask a question and receive a streamed answer.
- Open the retrieval debug expanders.
- If a PDB is detected, confirm the Mol* viewer appears.
- Confirm the TTS status is visible.
- If TTS is available, confirm audio playback appears.
- Confirm Grafana panels show data.
- Confirm Zipkin receives Chroma traffic.
If you are an AI agent changing runtime behavior:
- read README.md first
- read AGENT.md for repository guardrails
- read ARCHITECTURE.md before refactoring service boundaries
- update this file if ports, services, health behavior, startup order, or recovery steps change