About agenttrio
agenttrio runs bounded planner-coder-reviewer workflows on a local Ollama backend. It is for operators who want workspace status, configured checks, and task runs that are marked verified only after a host-enforced gate passes.
Key features
- 01Run planner, coder, and read-only reviewer roles
- 02Enforce budgets for turns, cycles, tools, and context
- 03Require checks and reviewer approval for verification
- 04Report workspace status and configured checks
- 05Run configured checks individually or together
Use cases
- 01Inspect workspace and Ollama status
- 02Run a bounded coding task with verification
- 03Run configured project checks
- 04Review whether a task passed the verification gate
MCP support
Its stdio MCP server exposes three tools: `flow_status`, `flow_run`, and `flow_check`. The tools report workspace status, run gated tasks, and execute configured checks.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
3Saved tool list · updated 1w ago
This tool takes no parameters.
Details
From the project READMEagenttrio
agenttrio runs bounded agent workflows made of three roles — a planner, a coder, and a separate read-only reviewer — against a local Ollama backend. It reports the workspace status, runs one task through the trio behind a host-enforced verification gate, and runs the workspace's configured checks. One binary serves a command-line interface and a stdio MCP server with exactly three tools.
Work is bounded by the operator config: model turns per role,
coder → verification → reviewer cycles, total tool calls, and
context size all have explicit budgets, and a run is only
verified when the gate below passes — never on the model's say
alone.
Configuration
agenttrio reads an operator-reviewed TOML file. Passing --config <file> explicitly approves loading that file; a workspace
config.toml or .flow.toml is never auto-loaded. The only
auto-loaded location is $XDG_CONFIG_HOME/flow/config.toml.
workspace_dir = "/absolute/path/to/workspace"
[ollama]
base_url = "http://127.0.0.1:11434"
model = "qwen2.5-coder:7b"
timeout = 120
[models]
planner = "qwen2.5-coder:7b"
coder = "qwen2.5-coder:7b"
reviewer = "qwen2.5-coder:7b"
[agent]
max_iterations = 6
max_cycles = 2
max_tool_calls = 64
max_context_chars = 100000
[checks.test]
cmd = ["npm", "test"]
timeout = 60000
required = true
kind = "test"
filetypes = ["ts"]
Notes that matter:
- Check
timeoutvalues are milliseconds; the Ollamatimeoutis seconds. --workspaceoverrides the config's workspace, and--modeloverrides every role's model.- A non-loopback Ollama endpoint is refused unless the config sets
ollama.allow_remote = true. - Default mode is read-only.
runandcheckrequire--trusted, which is what allows project edits and explicitly configured named checks. - With no resolvable configuration, every command fails with an error naming the missing configuration — nothing is invented.
- Ollama itself is external: run
ollama serveand pull a tool-capable model (for exampleollama pull qwen2.5-coder:7b) before expecting runs to work.
Install
npx @reneturcios/agenttrio status --config /path/to/operator.toml
Or run the container image:
docker run -i ghcr.io/cloudcorprecords/agenttrio
The container defaults to the MCP server (see below). Pass CLI arguments to use it as a CLI instead; mount your config and workspace into the container if you use it that way.
CLI
agenttrio status --config operator.toml
agenttrio run "Fix the failing parser test" --config operator.toml --trusted
agenttrio check --config operator.toml --trusted
agenttrio check test --config operator.toml --trusted
agenttrio --version
Reports print as JSON. Exit codes follow the documented scheme:
0 on success, 1 for a runtime failure (including an
unverifiable run configuration), and 2 for usage errors.
Arguments are validated before any configuration is read, so a
malformed invocation is always a usage error.
The verification gate
A run is reported verified: true only when all of these hold:
- the planner and coder complete within their budgets;
- at least one required named check runs, and every required check passes;
- a separate read-only reviewer returns structured approval (a
JSON object with
"approved": true).
If the gate fails, the cycle repeats (coder → checks → reviewer)
up to max_cycles, and the final report says verified: false
with a note naming which condition failed.
MCP server
One bin serves both faces. The mcp subcommand starts a stdio
MCP server (newline-delimited JSON-RPC):
npx -y @reneturcios/agenttrio mcp --config /path/to/operator.toml --trusted
MCP client configuration:
{
"mcpServers": {
"agenttrio": {
"command": "npx",
"args": ["-y", "@reneturcios/agenttrio", "mcp", "--config", "/path/to/operator.toml", "--trusted"]
}
}
}
Replies carry the report as a JSON text block plus
structuredContent; failures are returned as isError results.
The server is deliberately sequential.
Tools
The tool list is intentionally only these three tools.
| Tool | Input | What it returns |
|---|---|---|
flow_status | {} | The status report: workspace, Ollama reachability and available models, per-role models, agent budgets, and configured checks. |
flow_run | {"task": "..."} | The run report: planner/coder output, check results, reviewer decision, cycles used, and the verified gate verdict. |
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. |
Development
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network (fake executor/fetch/runner only)
npm run dev # run the CLI from source via tsx
License
MIT — see LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.