What is Cradle?
Cradle runs teams of AI agents and checks their work. A project is a team: a captain assigns tasks, leads deliver them with their executors, and a Checker signs off on every result before it comes back to you.
Not all of that is built yet. The team model and the Checker are the direction; the parts that exist in the code today are listed under What runs today.
Where a team lives
A team lives in a cradle: a Cradle Server with its models, a knowledge base and a results database, all in containers.
Install the server on a laptop, on any server or on a GPU rack. In the web console, give each project the address of its cradle. Several teams can share one cradle, or each can have its own.
Console
└─ Project "Dev team" → cradle A (GPU server)
└─ Project "Content" → cradle A
└─ Project "Experiments" → cradle B (laptop)The pieces
| Piece | What it does |
|---|---|
| Cradle Server | The runtime and CLI. Runs the agents and the models on your hardware, GPU or CPU. |
| Console | The web app for projects and settings, including the address of each cradle. |
| Smart Notes | A voice work journal. Summaries and issue extraction run through a cradle over MCP. |
What runs today
Checked against the code of the repository.
| Works today | Where it is |
|---|---|
| Projects: each has its own agents, knowledge bases and tickets inside one Cradle Server | packages/core/src/db/schema.ts (projects, agents, knowledge_bases) |
| Triage of an incoming message: a risk check (rules, then an LLM classifier), then one agent is picked by role and skills; yellow and red drafts wait for an operator | packages/core/src/triage/orchestrator.ts, router.ts |
| Team structure (captain, leads, executors, Checker) is stored and shown; routing still picks one agent; there is no hand-off of a result lead → Checker → captain | packages/core/src/db/schema.ts (agents.team_role, reports_to), triage/team.ts, triage/router.ts |
Models on GPU or CPU behind one endpoint: Anthropic-compatible POST /v1/messages and GET /v1/models over local, remote-GPU and cloud providers (Bedrock among them) | packages/core/src/channels/inference-routes.ts, llm/providers/provider-registry.ts |
Server in containers: cradle-server, plus an optional GPU inference container | apps/server/docker/ |
| Web console connects to a server by its address | apps/web/lib/console/, packages/console |
| Channels: Telegram bot, web widget, HTTP API, MCP in both directions | packages/core/src/channels/ |
| An action gate: typed proposals, policy, human approval for irreversible actions, a hash-chained audit log. Not exposed over HTTP | packages/core/src/runtime/ |
| Smart Notes summaries and issue extraction through MCP | mcp-server-channel.ts (cradle_summarize_notes, cradle_submit_issue) |
| The ticket screen in the console: the team path (captain → lead → executor, each linking to the team) and the risk gate card (rules that fired, classifier verdict, level, hold reason). There is no Checker verdict on it | packages/console/src/pages/TicketDetail.tsx, components/TicketTeamPath.tsx, components/TicketGate.tsx |
| Planned — not in the code yet | What exists instead |
|---|---|
| Checker as a separate role between the leads and the captain | A verification engine exists, but no verifiers ship, so a postcondition resolves inconclusive. Replies are checked by risk rules and an operator, not by a Checker agent |
| Captain, leads and executors as a hierarchy that splits and delegates a task | Agents carry a team role and a reports_to link, but Triage still picks one agent by role and skills. Nothing splits a task across agents or hands a result up the chain |
| An agent in a group chat that turns what was agreed into project tasks (Telegram, WhatsApp) | The Telegram bot answers each text message as a ticket. It does not extract tasks from a thread. There is no WhatsApp channel |
| Cradle cloud: ready workers, a database and cloud models | You can add a Bedrock model to your own server. There is no hosted service |
| The hand-off chain of a team template: a result passing lead → Checker → captain | The "Dev team" template creates the team, but routing still picks one agent per ticket. Nothing hands a result up the chain |
| A cradle address per project set in the console | The console stores the address of a server; projects live inside a server |
Where to go next
- Getting started — install a cradle and set up your first project.
- Architecture — how messages, agents and models fit together.
- Smart Notes — the voice journal and its setup.