cd /news/ai-agents/i-built-an-ai-team-that-ships-real-w… · home topics ai-agents article
[ARTICLE · art-127750] src=dev.to ↗ pub= topic=ai-agents verified=true sentiment=↑ positive

I built an AI team that ships real work — and shows you the conversation

A developer released Agent Team, an open-source MIT-licensed local-first runtime in which a Master agent plans work and Researcher, Builder and Reviewer agents execute it, emitting real artifacts plus an auditable log of bot-to-bot messages, timelines and verification bound to each artifact revision. In a 2026-09-13 run through the local Claude Code CLI, the system produced a Japanese launch page and three social-post drafts with four deliverables, 10 passing programmatic checks and a 6/6 reviewer verdict across 39 model turns and 35 tool calls at a $1.66 list-price equivalent. The project supports the Claude API, any OpenAI-compatible endpoint and local Ollama per bot, and the developer is seeking feedback on the review-revise-re-review loop and on limiting workers to task, artifact refs and inbox rather than full history.

by read3 min views5 publishedSep 12, 2026

Most "multi-agent" demos are bots narrating to each other. The log is the product; the work is secondary. I wanted the opposite: one request in, real files out, and a trail I could audit afterwards.

Agent Team is an open-source (MIT), local-first runtime where a Master plans, a Researcher / Builder / Reviewer actually do the work, and you get the artifacts plus the real bot-to-bot messages, a timeline, and verification bound to each artifact revision.

Repo: https://github.com/FORIFOR/Multibot · Site + 59s intro: https://forifor.github.io/Multibot/

message.sent events — messages that were really delivered to another bot's mailbox. A question from the Builder wakes the Researcher, which answers with reply_to. Acknowledgements never wake a model. The default connection runs every agent session through the local claude -p. Claude Code owns the loop for one session; the team's tools (send_message, publish_artifact, run_check, …) are exposed to it as MCP tools through a small stdio proxy that forwards each call to the runtime's ToolGateway. Policy, budget and the event log are identical to the API path; Claude Code's own built-in tools are disabled for these sessions. Cost and usage are read from the CLI's JSON result, and the model it actually used comes from modelUsage, never from the model's own claims.

Claude API (official SDK), any OpenAI-compatible chat endpoint and local Ollama work the same way, per bot.

On 2026-09-13 I ran this request through the local Claude Code CLI: "From this product description, build a Japanese launch page and three social-post drafts. Record assumptions for anything missing. Stop before publishing. Have the Reviewer verify."

| Model (reported by the provider) | claude-opus-5 | | Plan | Master chose 1 builder task + 1 reviewer task and skipped the researcher; 8 recorded assumptions (no prices, no invented numbers, placeholder URLs only) | | Deliverables | index.html (single-file page),posts.md ,HANDOFF.md ,final-report.md | | Verification | 10 programmatic checks → all pass; reviewer verdict 6/6, plus 4 optional findings sent back as a real message | | Usage | 39 model turns · 35 tool calls · $1.66 list-price equivalent · 18 min 37 s | | Status | completed |

The generated files, the final report and the 77-event JSONL log are committed under docs/evidence/ without edits. Four runs total: run 1 finished partial and exposed a bug (a reviewer verifying two tasks had only its last verdict applied — fixed), runs 2–3 hit limits that were then tuned. One request is not a benchmark, and the prompts are original seeds.

The demo video on the site drives the real UI and runtime with a scripted test provider (labelled on screen) so it is deterministic and free to reproduce.

Stack: Python 3.12 / FastAPI / SQLite (WAL, append-only events, SSE), React + TypeScript. macOS seatbelt sandbox for builder commands (no network, writes only inside the task workspace); elsewhere a plain subprocess that says so in every result.

git clone https://github.com/FORIFOR/Multibot && cd Multibot
cd backend && uv venv .venv --python 3.12 && uv pip install --python .venv/bin/python -e '.[dev]'
cd ../frontend && pnpm install && pnpm build && cd ../backend
.venv/bin/agentteam probe    # real capability check through `claude -p`
.venv/bin/agentteam serve    # http://127.0.0.1:8787

I'd love feedback on two things: whether the review → revise → re-review loop bound to revisions holds up on your tasks, and where "fewer messages, more evidence" (workers get their task, artifact refs and inbox — not the history) breaks down.

── more in #ai-agents 4 stories · sorted by recency
── more on @agent team 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-built-an-ai-team-t…] indexed:0 read:3min 2026-09-12 ·