Agent Team v0.1 · local-first · MIT
オープンソースの AI チーム · 依頼は一度、検証済みの成果物が返る

依頼は一度。
AI チームが作り、確かめ
経緯を残す。

一文の依頼を入れるだけ。Master が計画し、Researcher / Builder / Reviewer が実際に作業します。成果物と一緒に、Bot 間の実メッセージ・時系列・revision 単位の検証が返ってきます。後から書いた台本の会話はありません。

AI に仕事を任せたいが、確かめられない成果物には判を押せない開発者のために。
Claude Code があれば API キー不要 · Claude API / OpenAI 互換 / Ollama も可 · MIT

58 秒の紹介 · ナレーション付き

一連の流れを見る。

依頼を入力し、各 Bot が終えるたびに実メッセージがチャットに届き、revision をクリックすると誰が作りどの検証を通ったかが分かり、最後に証拠から組み立てた報告を読む。その流れです。

Disclosure: the screen recording drives the real UI and runtime with the scripted test provider (no LLM calls, labelled “FAKE PROVIDER” in the header) so the sequence is deterministic and free. Narration is synthesized speech. 日本語版はこちら. No timing edits in the recording. Raw, un-narrated walkthrough: demo.mp4 · demo.gif. With a real connection the same screens are fed by live model calls; the run header shows the model the provider actually reported and the measured cost.

毎日見る画面

実際の仕事が、読める大きさで。

run 画面が製品そのものです。アバター付きのチャット窓ではなく、チーム列、不変の成果物 revision、そして配送されたメッセージだけを表示するチャット。

Run view: team column, artifact revisions with hashes, delivered messages 1 2 3 4
1チーム: 各 Bot のモデル・接続・プロンプトのハッシュ、タスクの状態と試行回数。
2成果物: r1, r2… と SHA-256、種別、誰がどのタスクで公開したか。
3チャット: send_message の配送だけ。目的と reply_to 付き。相槌はありません。
4経緯: 選択中の revision について、公開イベント、通過/失敗した検証、レビュー、修正を求めたメッセージ。
仕組み

Master が提案し、Runtime が検査し、Bot が実際に働く。

1

One request → a checked plan

The Master turns your request into deliverables, recorded assumptions and a task DAG. The runtime validates schema, cycles, owners, tools, write scopes and limits before anything runs. Reversible choices are recorded as assumptions instead of questions back to you.

2

Independent bots, real delivery

Each bot has its own conversation state, mailbox, task scope, tools and workspace. send_message really delivers to the recipient; a question wakes the other bot to answer. Files become immutable, hashed artifact revisions.

3

Verify, revise, report from evidence

The Reviewer runs checks against a specific revision. Fail → the Builder revises → re-review, up to a limit. The final report is compiled from the event log; the model’s summary can’t upgrade “started” to “done”.

The part you'll remember

Open a deliverable, walk back to why.

Every artifact revision links to the events that produced it: the handoff it was built from, the check it passed or failed, the review verdict, the message that asked for a fix. The chat below is not a transcript written after the fact — each line is a delivered message.

researcherbuilder handoff t1
brief.md r1 is ready. Pricing could not be confirmed — leave it out.
builderresearcher question t2
Who is the target audience?
researcherbuilder answer re: msg_…
Independent developers.
reviewerbuilder finding index.html r1
index.html r1: viewport meta is missing. Please fix and republish.

Then: builder publishes index.html r2 → reviewer runs html_basic on r2 → pass → task accepted. Replay never calls a model. Fork from any checkpoint with a different model for one bot and compare.

Run view: team, artifact revisions, chat
Team · artifact revisions with hashes · real chat
Timeline of events
Timeline: seq, actor, action, outcome
Final report from evidence
Final report compiled from evidence
Per-bot model, connection and prompt settings
Per-bot model, endpoint, locked prompts
Why not just “N bots in a chat room”

Fewer messages, more evidence.

ConcernTypical multi-bot demoAgent Team
ChatBots narrate to each other; the log is the productOnly request / question / answer / handoff / finding / decision. Acknowledgements don't wake a model.
ContextEveryone reads the whole history every turnA worker gets its task, input artifact refs and its own inbox. Full logs stay searchable, not re-sent.
Verification“Tests started” becomes “tests passed” in the summaryChecks are events bound to a revision hash. Reports are compiled from those events.
PermissionsPrompt says “don't”Tool scope, write scope, budget reservation, approvals and cancellation are enforced by the runtime.
Model choiceOne model, one keyPer-bot connection, model, effort and prompt (lockable). Configured vs. provider-reported model both shown. No silent fallbacks.
CostUnknown until the billBudget reserved per call, unknown prices refuse to start, spend shown live.
始め方

数コマンド。Claude Code があればキー不要。

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
export ANTHROPIC_API_KEY=sk-ant-…   # reference only; never written to disk
.venv/bin/agentteam serve            # http://127.0.0.1:8787

First run: open Settings → Probe. It makes one tiny real call to confirm tool calling and JSON-schema output on the model you picked, then unlocks the Start button. Placeholder models and unknown prices refuse to start with a structured reason.

Works with Claude (official SDK), any OpenAI-compatible chat endpoint, and local Ollama. Each bot can override the endpoint and model.

Full README → · What's verified →

約束ではなく証拠

実 run を、端から端まで。

2026-09-13、デモと同じ依頼をローカルの Claude Code CLI(API キー不要)で実際に実行しました。下の数字はすべて run 自身のイベントログから読み取ったもので、ログはリポジトリに無編集で置いてあります。

RequestJapanese launch page + 3 social-post drafts from a product description; stop before publishing
Model (reported by provider)claude-opus-5 via claude_cli
PlanMaster chose 1 builder task + 1 reviewer task; skipped the researcher (nothing to research). 8 recorded assumptions incl. “no prices, no invented numbers, placeholder URLs only”.
Deliverablesindex.html r1 (14 KB, single file), posts.md r1, HANDOFF.md r1, final-report.md
Verification10 programmatic checks (html_basic, markdown_basic, text_contains, text_not_contains) → all pass; reviewer verdict 6/6 pass, plus 4 optional findings sent back as a real message
Messages2 delivered: builder → reviewer handoff, reviewer → builder finding
Usage39 model turns · 35 tool calls · $1.66 list-price equivalent · 18 min 37 s wall clock
Statuscompleted

Files: generated index.html · posts.md · final report · 77-event log (JSONL). Earlier runs are there too: run 1 finished partial and exposed a reviewer bug (fixed); runs 2–3 hit limits that were then tuned. Nothing was edited by hand.

Landing page generated by the real run
What the Builder shipped: the top of the generated landing page (unedited).

Also verified

  • 39 deterministic tests: DAG validation, real delivery with Q&A, review → revise → re-review, budget reservation, approvals with hash/nonce, cancel → resume, fork, redaction, SSRF guard, sandbox write confinement, SSE cursor replay, event-schema conformance.
  • Capability probe through the CLI: tool calling via MCP and JSON-schema output, model reported claude-opus-5.
  • macOS seatbelt sandbox: no network, no writes outside the task workspace.

Still open

  • One request, four runs so far; no benchmark. Plans differ between runs (2 vs 3 tasks) because the Master decides. Prompts are original seeds.
  • The Anthropic API and OpenAI-compatible drivers are implemented and unit-tested but have not had a live run yet.
  • No Docker sandbox; the non-macOS backend is not an isolation boundary and says so in every result.