Bug hunt
A free-text investigation over the whole project via a bounded agentic tool loop.
tools=/tool_calls mechanism. If the resolved provider isn't ollama, the launch fails with 400.kind: bughunt runs a free-text investigation over the whole ingested project (not a diff): a bounded in-process agentic loop (≤12 rounds) gives the model search, grep_project, get_entity, neighbors, get_file and load_skill tools, and the model decides what to look at based on the scope you give it.
curl -X POST localhost:8000/routines/runs \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{
"kind": "bughunt",
"project": "your-repo",
"scope": "look for unhandled errors and resource leaks in the ingestion pipeline",
"path_prefix": "src/services"
}'scope is required (422 if omitted). path_prefix restricts reported findings to files under that prefix, but the agent may still read files outside it for context.
Evidence and anchoring
Every raw finding is validated against the project graph/repo before it's stored: a file_path that matches neither a graph node nor a file on disk is dropped as a hallucination. A mechanical read-before-report guard runs after the model's first verdict: if it reported findings without ever calling get_entity or get_file, the run pushes back once before accepting the corrected answer.
qwen2.5-coder:14b, roughly half of read-verified findings can still misinterpret the code they cite. The evidence trail exists precisely so you can verify a finding against the real code before acting on it — treat bug-hunt output as a lead, not a verdict.