MultiManager

A team of agents, working from one board.

Self-hosted multi-agent orchestration. Built on Claude — adaptable to any model provider, local or cloud. Each agent lives in its own persistent container — Docker on a home server, Kubernetes in production, or Fly Machines globally — with its own personality, memory, and credentials. Drag work onto a kanban. Watch them collaborate.

Scroll
1:1
Container per agent
3+
Tasks in parallel
Agents per team
0$
Per-token billing
A familiar board

Drag work onto Todo. Watch an agent pick it up.

Tasks flow through statuses you configure. The dispatcher auto-runs cards in the right column. Cards land in Done. Each lane behaves like you'd expect — except the workers are AI specialists running in their own containers, not people.

Backlog2
Atlas
Audit which files agent X shouldn't see
Nova
Draft Q3 marketing landing copy
Todo2
Vera
Pull every customer complaint raised this quarter
Forge
Add SSE retry on the chat client
In Progress1
Vera
Index new policy uploads — 412 files
Done2
Atlas
Onboard the new Marketing agent
Nova
Generate template options (3 variants)

↳ try dragging a card between columns

The state machine

Three flags. Infinite workflows.

Every status column has three boolean flags. Combine them to model any review process — sequential approvals, hand-back loops, escalations.

autoRun

Cards here run automatically

Drop a card in. If the agent's container is up and under its concurrency cap, dispatch fires within seconds. Use for Todo / In Progress lanes.

humanReview

Park, wait for a comment

Agent uses mm-status review "<question>" to land cards here. Your next comment flips the card back to autoRun and resumes the agent.

terminal

Finished work, until it isn't

Run button disabled. But: a human comment on a terminal card auto-reopens it to the first autoRun status. Done isn't forever.

Agents that talk

One chat thread. Many specialists.

Talk to the orchestrator. It routes sub-questions to the right specialist agent automatically. You see one conversation; under the hood, multiple Claude processes are collaborating on your behalf.

Chat with Atlaslive

Delegation just works.

When Atlas spots a question that fits another agent's expertise, it uses mm-call to delegate — and the response comes back in the same thread, tagged with the specialist's name and accent colour.

  • One Claude process per active task, in the agent's container
  • Session resume across turns via --resume
  • Cross-agent calls preserve the user's intent + task context
  • Live SSE stream of stdout straight into the bubble
  • Chats are exempt from concurrency caps — always responsive
The crew

Specialist agents, each with their own toolkit.

Agents are persistent containers with baked-in identity. Different system prompts, different skills, different MCP servers, different env vars, different bind mounts. The orchestrator routes work to whoever fits best.

You design the agents you wish you'd hired — then you actually use them every day.
— The product, in one sentence
Where this fits

Real business problems agents solve well.

Multi-agent setups earn their keep on work that's repeatable, document-heavy, or cuts across people who don't normally sit together. A few patterns that map cleanly to the architecture — the personas mentioned are just example fits from a typical crew.

01 · Knowledge work

Internal document search & archive retrieval

"Find me everything we have on X" across years of SharePoint, network shares, and project folders. A librarian agent runs semantic vector search, cross-references with live source-of-truth APIs, and returns cited excerpts with paths back to the original — no fabrication, every claim links to a real file.

Best fitVeraAtlas
02 · Document production

Branded proposals, reports & templates

Generate proposals, audit reports, quote covers, or weekly summaries that respect a brand palette + typography system. Outputs land as Word + PDF + Excel side-by-side, ready to send. Re-runs with different content stay visually consistent.

Best fitNova
03 · Engineering work

Code review, refactoring & debugging

Walk a codebase, propose diffs, write tests, debug stack traces, draft pull requests. A developer agent uses Bash / Read / Edit / Grep deeply, can spin up scratch services via MCP, and returns reviewable patches rather than vibe-coded blobs.

Best fitForge
04 · Compliance & audit

Cross-period audits & control reviews

"List every non-conformance raised this year by client, with root cause and corrective action." The orchestrator delegates the lookup to the librarian, hands findings to the document agent to format as an audit-ready report, all in one task thread.

Best fitAtlasVeraNova
05 · Triage & correspondence

Inbox triage & reply drafting

Ingest emails / tickets / form submissions, classify by urgency + topic, summarize the thread, and draft a first-pass reply. A triage agent escalates anything novel; routine items go through with a human "send" click.

Best fitAtlasNova
06 · Recurring reports

Scheduled summaries & digests

Monday-morning rollups: open work, blockers, deliveries since last week. Cron fires the recurring task; the orchestrator pulls data, the document agent formats it, the file lands in your shared volume before you've opened your laptop.

Best fitAtlasNova
07 · Data extraction

Line-item extraction from quotes & invoices

Drop a folder of PDFs, get a normalised spreadsheet. Line items, prices, dates, parties pulled into structured rows you can filter and pivot. Re-run when the source changes; the schema stays stable.

Best fitVeraForge
08 · Onboarding

New-starter knowledge tours

"What's our X workflow? Who owns Y? Where's the spec for Z?" The librarian surfaces the relevant docs, the orchestrator stitches them into a coherent tour. New starters self-serve their first week of how-do-I questions.

Best fitVeraAtlas
09 · Spec & proposal drafting

Tender responses & statement-of-work drafts

Pull boilerplate from past wins, drop in the new scope, generate a draft response with consistent voice + compliant structure. Reviewable in hours, not days. The developer agent can also draft technical sections.

Best fitNovaForgeVera
Read more ↗
Three tiers of memory

Agents that remember — without forgetting too much.

Persistent context across sessions is what makes an agent feel like a teammate rather than a chatbot. MultiManager gives each agent three memory layers, each tuned to a different time-scale and access pattern.

01

Stable identity

agents.memory · markdown

A single markdown blob prepended to every dispatch. Use for facts that should never be forgotten — user preferences, working agreements, stable defaults.

memory.md
The user prefers concise replies.
Always cite sources with markdown links.
Default search depth: 10 results.
02

Semantic recall

Qdrant + bge-m3 / nomic embeddings

Vector memory in a Qdrant collection. Agents write notes, search them later by meaning, share team-scoped memories across the crew.

$ mm-memory write "user prefers dark"
$ mm-memory search "ui preference"
$ mm-memory list --scope team
03

Conversation history

Claude session JSONL files

Each task gets its own session UUID. The dispatcher resumes via --resume <id>; multi-turn conversations carry full context across hours, days, or container recreates.

/home/agent/.claude/projects/
  -workspace/
    f3a8c91e-...jsonl
Survives crashes

Three layers of self-healing.

Long-running async systems break. MultiManager bakes recovery into the architecture so an app crash, container restart, or mid-stream failure becomes a non-event — no manual intervention needed.

1

Boot recovery

runs on every app start

Applies pending migrations. Marks any stuck-running executions as failed. Resumes tasks that were mid-flight when the app went down. Starts the cron scheduler + watchdog.

2

Watchdog

every 60 seconds

Scans running executions. Tracks output growth. If an execution's stdout hasn't grown in 5 minutes, marks it failed and clears the task lock. Catches silent dispatcher crashes.

3

Comment retrigger

on every human comment

New comment on a paused task? Flip the card back to autoRun. New comment on Done? Reopen it. The agent picks up your latest message without manual restart.

Boring tech, doing boring tech things reliably

Three containers. One source of truth.

Designed to live anywhere containers run — a single Docker host at home, a Kubernetes cluster in production, or a fleet of Fly Machines distributed globally. Postgres is the source of truth. The app spawns per-agent workloads on demand. Each agent has its own persistent storage for workspace, memory, and Claude's session files.

The Web Tier

multimanager-app

Next.js 16 server. Kanban + chat UI, REST API, dispatcher, cron scheduler, watchdog. Provisions agents through a pluggable runtime abstraction.

Source of truth

multimanager-db

Postgres 17. Tasks, comments, agents, statuses, attachments, cron jobs, usage records. Migrations apply on every boot.

The Workers

mm-agent-*

One persistent workload per agent — Docker container, K8s pod, or Fly Machine. Same image, same volumes, same behaviour on every runtime.

# Same mount layout on every runtime — only the mechanism changes: workspace: "/workspace", // per-agent volume / PVC / Fly volume memory: "/home/agent", // memory + Claude session JSONLs shared: "/shared", // cross-agent file handoff ...agent.extraMounts // per-agent specials (Docker only — SMB, NAS)
Next.js 16.2 Tailwind v4 Postgres 17 Docker 24+ Kubernetes 1.28+ Fly Machines Claude OAuth Qdrant opt SSE SheetJS mammoth.js React 19
Runtime-portable by design

Same image. Three deployment targets.

A single AgentRuntime interface fronts every container lifecycle, file, and exec operation. Pick a backend via one env var; the dispatcher, file UI, memory layer, and peer-delegation pipeline don't change.

Docker

AGENT_RUNTIME=docker

The default. One persistent container per agent on a single host. Named volumes for workspace + memory. docker exec for streaming + one-shot ops. Ideal for self-hosting on a home server, NUC, or single VPS.

Kubernetes

AGENT_RUNTIME=k8s

One StatefulSet (replicas=1) per agent with per-replica PVCs. Headless Service for stable DNS. Native streaming exec via the apiserver. Drop in next to your existing workloads with standard RBAC.

Fly Machines

AGENT_RUNTIME=fly

One Fly Machine (Firecracker microVM) per agent, addressed over 6PN private networking. A bundled WebSocket daemon handles streaming stdio. Per-agent regional placement for latency-sensitive specialists.

Model-agnostic by design

Built on Claude. Adaptable to anything.

MultiManager was initially built on Claude for its OAuth flow, stable tool-use protocol, and session-resume support. But the kanban, dispatcher, orchestration, memory tiers, and self-healing recovery — none of it depends on which model is on the other end. Swap providers per-agent without touching the rest.

Cloud providers

Claude · OpenAI · Gemini · …

Default deployment path. Bills against your subscription quota (Claude) or per-token API rates (others). Each agent can target a different provider — orchestrator on a smart model, specialists on cheaper ones.

Local models

Ollama · LM Studio · llama.cpp

Run the entire team on-prem. No per-token costs, no data leaves your network. Larger 70B+ models handle the orchestrator; smaller models keep high-volume specialists snappy.

Hybrid setup

Per-agent provider

Cloud Claude for routing intelligence; local Ollama for semantic-heavy librarians; cheaper OpenAI for high-volume drafting agents. Cost-optimise per agent role; sensitive data stays local.

Inside the agent container

Every agent gets a CLI toolkit.

Beyond standard Claude tools (Bash, Read, Edit, Write, Grep, Glob), MultiManager ships mm-* shell scripts that let agents discover teammates, delegate work, manage their memory, post progress comments, and move tasks between statuses.

agent@vera:/workspace
First-class file handling

Drop a file. The agent reads it. So can you.

Attachments upload to a shared volume mounted in every agent container. Inline previewers render most office formats directly in the browser so you can verify what the agent saw without downloading.

XLSX
Excel spreadsheets
Multi-sheet tabs, sortable tables via SheetJS
DOCX
Word documents
Page layout, fonts, embedded images via docx-preview
PDF
PDF files
Native browser PDF viewer in an iframe
CSV
Comma-separated data
Rendered as a sortable HTML table
IMG
Images
PNG / JPG / GIF / WebP / SVG full-screen modal
HTML
Web pages
Sandboxed iframe + open-standalone fallback
MP4
Video
Native HTML5 player, MP4 / WebM
MD
Markdown & text
Inline preview + edit-and-save mode
What's in the box

Everything an autonomous agent team needs.

Most of the work isn't the agents — it's the surrounding scaffolding that keeps them alive, fed, and recoverable. MultiManager handles all of that.

🔄

Self-healing dispatcher

Boot recovery, stale-execution watchdog, comment-driven retrigger. Crashes and restarts are non-events.

Live streaming

SSE pipes each agent's stdout into your browser. Watch tool calls, file reads, and decisions in real time.

💾

Persistent memory

Per-agent memory file, semantic memory in Qdrant, Claude session JSONLs — all survive every container recreate.

🛠️

Skills & MCP

Drop-in skill markdown files. MCP server connections. Plugins. Each agent gets its own toolbelt.

📎

File-first workflows

Drag a docx/xlsx/pdf into chat. The agent reads it. Inline previews for spreadsheets, Word docs, PDFs, images.

Cron & archive

Schedule recurring tasks to fire on cron expressions. Soft-archive (and restore) anything you've finished with.

🔧

Per-agent secrets

Custom env vars, extra Docker volume mounts, fine-grained access. One agent can have SMB read; another can't.

💳

Flat-rate billing

Uses your Claude OAuth token. Bills against your subscription quota, not metered API tokens.

🔀

Cross-agent delegation

Agents call each other with mm-call. The orchestrator routes work to specialists in the same chat thread.

📋

Built-in previewers

XLSX, DOCX, PDF, CSV, images, HTML, audio, video — all render inline without leaving the app.

📦

Soft-archive everywhere

× on a chat or kanban card archives instead of deletes. Restore from Settings → Archive whenever.

🚀

Local ONNX embeddings

Per-agent embedding daemon runs nomic-embed-text as ONNX — ~3× faster than cross-host Ollama for semantic loops.