Troubleshooting#

Agent Fails During Startup#

Inspect the validated configuration:

docker compose -f docker/compose.yaml logs aqh-agent

Startup intentionally fails for invalid modes, URLs, ports, MQTT credentials, missing agents.yaml or fallback policy, and missing LLM prompt files. Correct the reported variable or mounted asset; do not expect the service to continue with an incomplete configuration.

Storage Requests Fail#

Storage is required and external:

curl "$STORAGE_SERVICE_URL/detections"
curl "$STORAGE_SERVICE_URL/detections/stats"

The default is http://host.docker.internal:5001. Ensure the host service listens on an address reachable from Docker and implements both bounded read routes. Detection Service, not Agent Quality Handler, owns writes.

Batch Events Do Not Arrive#

The bundled broker is private and has no host port. Check its health and agent connection:

docker compose -f docker/compose.yaml ps
docker compose -f docker/compose.yaml logs mqtt-broker aqh-agent

For an external broker, verify MQTT_HOST, MQTT_PORT, MQTT_BATCH_TOPIC, MQTT_BATCH_CLIENT_ID, credentials. Set MQTT_DISABLED=true only for manual HTTP operation.

Valid events remain unacknowledged until their run is terminal. Repeated delivery of the same run_id is expected and does not rerun reasoning.

LLM Services Are Missing#

Both settings are required:

export LLM_MODE=llm
docker compose -f docker/compose.yaml --profile llm up --build -d

Without --profile llm, aqh-ovms and model-download do not start. For rule-based operation, unset LLM_MODE or set it to fallback and start without the profile.

Result Has Status error#

Inspect both status and result:

curl "http://localhost:5002/agents/status/$RUN_ID"
curl "http://localhost:5002/agents/results/$RUN_ID"

A graph failure sets status to error and returns structured entries in errors. Outputs from successful graph stages may still be present and are valid partial results. A Detection Service error event also creates an error result, but does not invoke the graph.

API Is Unreachable#

There is no UI or Nginx endpoint. Use the direct service port:

curl http://localhost:5002/health
docker compose -f docker/compose.yaml logs aqh-agent

Run history is in memory and resets when the agent restarts.

Persisted Agent Output Is Missing#

Check the output mount and service logs:

docker compose -f docker/compose.yaml exec aqh-agent ls -l /app/output
docker compose -f docker/compose.yaml logs aqh-agent
curl http://localhost:5002/agents/outputs/analysis

The service must be able to create and atomically replace policy.json, analysis.json, evidence.json, and ticket.json. Entries older than RUN_RETENTION_SECONDS or beyond MAX_RETAINED_RUNS are removed.