{"id":"63938857-e804-47c8-94f6-95b8e425ee5a","slug":"agenttrio","kind":"mcp","name":"agenttrio","summary":"Bounded planner-coder-reviewer workflows: status, verified run, and configured checks.","owner":"CloudCorpRecords","repoUrl":"https://github.com/CloudCorpRecords/agenttrio","license":"MIT","licenseTier":"permissive","trust":"community","stars":0,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-11-02T14:10:23.000Z","addedAt":"2026-11-02T20:39:30.616Z","logoUrl":"https://avatars.githubusercontent.com/u/95189389?u=8e277e1a24ff84ae7b49c89e6897fa44178a5c34&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["utilities"],"tags":[],"runtime":"node","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-11-02T20:40:25.718Z","sample":false,"url":"https://conduits.dev/tools/agenttrio","language":"TypeScript","transports":["stdio"],"install":{"npm":"@reneturcios/agenttrio"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# agenttrio\n\nagenttrio runs bounded agent workflows made of three roles — a\nplanner, a coder, and a separate read-only reviewer — against a\nlocal Ollama backend. It reports the workspace status, runs one\ntask through the trio behind a host-enforced verification gate,\nand runs the workspace's configured checks. One binary serves a\ncommand-line interface and a stdio MCP server with exactly three\ntools.\n\nWork is bounded by the operator config: model turns per role,\ncoder → verification → reviewer cycles, total tool calls, and\ncontext size all have explicit budgets, and a run is only\n`verified` when the gate below passes — never on the model's say\nalone.\n\n## Configuration\n\nagenttrio reads an operator-reviewed TOML file. Passing `--config\n<file>` explicitly approves loading that file; a workspace\n`config.toml` or `.flow.toml` is **never** auto-loaded. The only\nauto-loaded location is `$XDG_CONFIG_HOME/flow/config.toml`.\n\n```toml\nworkspace_dir = \"/absolute/path/to/workspace\"\n\n[ollama]\nbase_url = \"http://127.0.0.1:11434\"\nmodel = \"qwen2.5-coder:7b\"\ntimeout = 120\n\n[models]\nplanner = \"qwen2.5-coder:7b\"\ncoder = \"qwen2.5-coder:7b\"\nreviewer = \"qwen2.5-coder:7b\"\n\n[agent]\nmax_iterations = 6\nmax_cycles = 2\nmax_tool_calls = 64\nmax_context_chars = 100000\n\n[checks.test]\ncmd = [\"npm\", \"test\"]\ntimeout = 60000\nrequired = true\nkind = \"test\"\nfiletypes = [\"ts\"]\n```\n\nNotes that matter:\n\n- Check `timeout` values are **milliseconds**; the Ollama\n  `timeout` is seconds.\n- `--workspace` overrides the config's workspace, and `--model`\n  overrides every role's model.\n- A non-loopback Ollama endpoint is refused unless the config sets\n  `ollama.allow_remote = true`.\n- Default mode is read-only. `run` and `check` require `--trusted`,\n  which is what allows project edits and explicitly configured\n  named checks.\n- With no resolvable configuration, every command fails with an\n  error naming the missing configuration — nothing is invented.\n- Ollama itself is external: run `ollama serve` and pull a\n  tool-capable model (for example `ollama pull qwen2.5-coder:7b`)\n  before expecting runs to work.\n\n## Install\n\n```bash\nnpx @reneturcios/agenttrio status --config /path/to/operator.toml\n```\n\nOr run the container image:\n\n```bash\ndocker run -i ghcr.io/cloudcorprecords/agenttrio\n```\n\nThe container defaults to the MCP server (see below). Pass CLI\narguments to use it as a CLI instead; mount your config and\nworkspace into the container if you use it that way.\n\n## CLI\n\n```bash\nagenttrio status --config operator.toml\nagenttrio run \"Fix the failing parser test\" --config operator.toml --trusted\nagenttrio check --config operator.toml --trusted\nagenttrio check test --config operator.toml --trusted\n\nagenttrio --version\n```\n\nReports print as JSON. Exit codes follow the documented scheme:\n`0` on success, `1` for a runtime failure (including an\nunverifiable run configuration), and `2` for usage errors.\nArguments are validated before any configuration is read, so a\nmalformed invocation is always a usage error.\n\n### The verification gate\n\nA `run` is reported `verified: true` only when all of these hold:\n\n- the planner and coder complete within their budgets;\n- at least one required named check runs, and every required check\n  passes;\n- a separate read-only reviewer returns structured approval (a\n  JSON object with `\"approved\": true`).\n\nIf the gate fails, the cycle repeats (coder → checks → reviewer)\nup to `max_cycles`, and the final report says `verified: false`\nwith a `note` naming which condition failed.\n\n## MCP server\n\nOne bin serves both faces. The `mcp` subcommand starts a stdio\nMCP server (newline-delimited JSON-RPC):\n\n```bash\nnpx -y @reneturcios/agenttrio mcp --config /path/to/operator.toml --trusted\n```\n\nMCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"agenttrio\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@reneturcios/agenttrio\", \"mcp\", \"--config\", \"/path/to/operator.toml\", \"--trusted\"]\n    }\n  }\n}\n```\n\nReplies carry the report as a JSON text block plus\n`structuredContent`; failures are returned as `isError` results.\nThe server is deliberately sequential.\n\n### Tools\n\nThe tool list is intentionally only these three tools.\n\n| Tool | Input | What it returns |\n| --- | --- | --- |\n| `flow_status` | `{}` | The status report: workspace, Ollama reachability and available models, per-role models, agent budgets, and configured checks. |\n| `flow_run` | `{\"task\": \"...\"}` | The run report: planner/coder output, check results, reviewer decision, cycles used, and the `verified` gate verdict. |\n| `flow_check` | `{}` or `{\"name\": \"configured-name\"}` | The check report: every result for the checks that ran and whether they all passed. Omit `name` to run all configured checks. |\n\n## Development\n\n```bash\nnpm install\nnpm run build   # tsc -> dist/\nnpm test        # node test runner over test/*.test.ts, no network (fake executor/fetch/runner only)\nnpm run dev     # run the CLI from source via tsx\n```\n\n## License\n\nMIT — see `LICENSE`.\n"}