a chat agent that lives in your terminal
Streaming chat with tool calls, slash commands, session resume, and a live inspector for every agent, channel, and memory in play. Built on Bubble Tea.
a meta-harness for LLM agents
Sirene is a terminal app for orchestrating LLM agents. Talk to a chat agent for ad-hoc work. Let it spawn a fleet of subagents across models and worktrees. Check the patterns that work into version control as Starlark workflows, and run them anywhere.
what's inside
Sirene is an agent harness in its own right — and the toolkit for building the domain-specific one your team actually needs. Every agent runs on the same machinery, stays addressable, and can pick up new work after its first job is done.
Streaming chat with tool calls, slash commands, session resume, and a live inspector for every agent, channel, and memory in play. Built on Bubble Tea.
Multi-agent pipelines are checked-in Starlark files. Sequential, parallel, fan-out/fan-in, debate, iterative refinement — any shape you can write as a script.
The chat agent spawns workers on whatever models fit the job. Each gets its own git worktree, tool grant, and sandbox, so a parallel fleet never clobbers itself.
Seshat watches your conversations and files what matters. Thoth consolidates the store between sessions. Tell sirene something once; it stays told.
Typed channels with JSON schemas, and a claim-post-release blackboard for shared state. Coordination is a primitive, not a prompt-engineering trick.
sirene --workflow <name> runs any pipeline from CI, a cron job, or another coding agent. Every run leaves a JSONL event trail you can replay.
The MCP bridge turns a live session into an orchestration surface for Claude Code, Codex, or anything that speaks MCP. Drivers come and go; subagents keep working.
Authenticated Claude, Codex, and Muse CLIs are preferred where they match. Anthropic, OpenAI, and OpenRouter APIs sit behind an explicit billing policy.
Long conversations compact automatically near the window limit. Old turns are offloaded, not deleted, and every compaction can be rolled back.
workflows
Three reviewers critique a diff in parallel; a lead synthesizes their findings. Each agent
is a folder with an AGENT.md system prompt and Markdown prompt templates.
Run it inside the TUI and watch every agent stream live in the inspector, or run it
headless with sirene --workflow review. Completed steps short-circuit on
resume, so a crashed run picks up where it fell over.
DESCRIPTION = "Three reviewers critique a diff in parallel; a lead synthesizes."
def run(args):
diff = exec(command="git", args=["diff", "main"])["stdout"]
reviewer = Agent(name="reviewer", model="anthropic/claude-sonnet-4-6")
lead = Agent(name="lead", model="anthropic/claude-opus-4-7")
reviewers = reviewer.spawn(3)
handles = [
r.run(prompt="review.md", prompt_vars={"diff": diff})
for r in reviewers
]
results = await_agents(handles)
reviews = {results[h]["agent"]: results[h]["output"] for h in handles}
h = lead.run(prompt="synthesize.md", prompt_vars=reviews)
verdict = await_agents([h])[h]["output"]
save_to_session(filename="review.md", content=verdict)how it fits together
┌───────────────────────────────────────────┐
│ chat agent ← your persistent conversation
└────┬──────────────────────────────────────┘
│ tool calls
┌──────────┼────────────────────────────────────────┐
│ │ │
▼ ▼ ▼
subagents channels · blackboard memory (SQLite)
(workers) (agent ↔ agent IPC) · scopes
│ · Seshat (in-session observer)
▼ · Thoth (cross-store consolidator)
worktrees · compaction (context management)
(isolated
filesystems)
▲ ▲
│ │
.star workflow MCP bridge (external clients: claude code, codex)
(checked-in DAG)try this first
One prompt spawns three reviewers on three models. They post findings to a schema-validated channel; the chat agent synthesizes a verdict.
Run a workflow and open the inspector: the step graph renders live, parallel branches and all. A failed step can be retried, skipped, or resumed later.
Mention "we never use ORMs here" in passing. Quit. Start fresh tomorrow and ask for a data-access layer. The rule surfaces without you repeating it.
early access
Sirene is in use by a small group while it settles. If you have access, the repository README walks you through the install, and the full user guide ships inside the binary.