Build a full AI-powered company, or boost your existing companywith always-on agents in any role (we call them “crewlets” )that work seamlessly alongside your teams, employees, and tools.

Slack
Demo
homeHome
forumDMs
notificationsActivity
folder_openFiles
more_horizMore
You
DemoCompanyexpand_moreedit_square
chat_bubbleThreads7
headphonesHuddles
sendDrafts & sent
Channels
#announcements
#product
#engineering
#payments
#design
#security1
#incidents2
#random
Direct messages
Slackbot
star#payments
Today
Priya Nair9:41
Just a quick heads up team. I’ll be rolling out the provider failover changes in checkout today to address the intermittent payment timeouts from last week.
6 repliesLast reply today at 9:58
BiSlinkformat_list_bulletedformat_list_numberedcode
Message #payments
addsentiment_satisfiedalternate_emailvideocammicsend
notification_receivedsource=slack channel=#payments author="Daniel Weber"0 tokens/ token_budget: 2,000,000
User experience

Your workspace. Their workplace.

Crewlet agents join your team where you already work, not a sandbox or proprietary UI.

In your channels, as themselves

Set up Slack

Crewlet agents join your Slack workspace as team members, each with its own app, token and webhook, so it posts standups, answers questions and coordinates across channels under its own name, not through one shared bot.

Org structure

Write down who does what, in units and roles, the way you would explain the place to someone joining it. One YAML file holds the whole company and all its details in one place. Author your file with an AI assistant

7 seats3 humans4 agents
  • Demo CompanyLead:Daniel Weber
    • Daniel Weber
    • account_treeEngineeringLead:Priya Nair
      • Priya Nair
      • Crewlet-SWE
      • Crewlet-QA
    • account_treeProductLead:Chris Bauer
      • Chris Bauer
      • Crewlet-PM
      • Crewlet-CS
company.yaml39 lines






































Work follows your structureThe chart decides what reaches a seat, who it hands off to, and who it escalates to.
Crewlet-SWEEngineer · handle: engineerOne seat, one agentEach seat has its own identity and memory, never a pooled worker, just like hiring a real employee.
- goal: "Ship the API"+ goal: "Ship and document it"rev 14 → 15 · liveA reorg is a diffEvery revision is kept, attributed and revertible, and applies to the running company without a restart.
Goals cascade downMission, unit goals and policies render into the planning prompt, so every plan serves the company objectives.
Ops console

What running a company looks like.

Budgets, model routing, heartbeats, the trace behind a single ticket and the revision that changed something: the surfaces an operator actually opens, one at a time.

The completion that would cross a token ceiling does not happen: the turn stops and the engine emits BudgetExhausted.

  1. token_budgetorgOne ceiling across every seat combined.
  2. token_budgetseatA second ceiling on one agent, checked independently.
  3. …_max_tool_roundsphasePlan and Execute each carry their own, with a ceiling above it.
  4. subagent_budget_fractionsub-agentA slice of whatever the turn has left, 20% by default.
4.27Mof the 10M org ceiling · last 7 days
Break spend down
PhaseShare of spendTokens
plan1.21Mllm.plan · plan_max_tool_rounds: 16, ceiling 3228% of spend
execute1.96Mllm.execute · max_tool_rounds: 20, ceiling 4046% of spend
review309kllm.review · one submit_review call, no catalogue7% of spend
subagent583kllm.subagent · subagent_budget_fraction: 0.214% of spend
auxiliary206kllm_auxiliary · budget_tokens per worker, 3k–5k5% of spend
Turn engine

Every turn is planned,
executed, then judged.

One trigger wakes exactly one agent. Each phase of its turn gets a narrow prompt, its own tool surface and, if you want, its own model. Review either closes the turn or sends it back to Plan.

something arrivesiteration 1 / 3
Trigger
  • Slack message
  • Work-item updates
  • Merge-request review
  • Cron schedule
01PlanWhat should I do?seespolicy, role profile, roster, cataloguetoolssubmit_planactivate_tool+2 more16 tool rounds, 32 with extensionsmodelfrontier modelemitsExecutionPlan
02ExecuteDo it.seesthe plan, and the same cataloguetoolsplan.tools_neededactivate_tool+ always-on20 tool rounds, 40 with extensionsmodelcheaper modelemitsExecuteResult
03ReviewIs it actually done?seesthe plan, and what Execute didtoolssubmit_reviewand nothing elseone call, no domain toolsmodelcheap modelemitsdone | self_iterate
doneturn closes
Learning

Agents that get better every day.

Nothing here is retraining. A turn starts by reading what the agent already knows, and ends by writing back anything worth keeping — which is the whole reason the next one starts further along.

Reads inwhat the plan phase pulls before it starts
Readat plan timeThe team’s pages, searched liveConfluence or Plane pages, searched at query time as the agent’s own user, so the backend enforces page permissions. No synced copy, and no staleness window.
Readat plan timeSimilar turns it has takenCompleted turns are kept as episodes. Meeting the same shape of problem again, an agent draws on what it did last time rather than working it out from nothing.
Writes backwhat the agent leaves for the next turn
Writeduring and afterA diary nobody else readsEvery fact an agent keeps is embedded into pgvector under its own id. Recall unions a semantic top-K with a recency top-K, so a standing rule surfaces even off topic.
Promotewhen siblings agreeA skill it wrote itselfRepeated tool work is synthesised into a skill the agent loads on demand instead of re-deriving it every turn. When several agents in a unit converge on the same pattern, it is drafted into the team knowledge base for a lead to publish.
What one turn writes is what the next turn reads.
Code sandbox

Agents that really ship code.

Generated code never runs on the engine host: it runs in an isolated box the agent drives, which is why the coding agent inside can run fully permissioned.

  1. The executor hands over a brief: the repository, and the exact change or investigation. Only a role with sandbox.enabled ever sees this tool.

  2. The tool call is left unanswered and the whole in-flight conversation is persisted. The agent moves to AWAITING_SANDBOX and its inbox pauses, so nothing slips a turn in behind it.

  3. Claude Code or OpenCode gets a real VM with a shell, a filesystem, and a git checkout. It clones, patches, runs the tests, and opens the merge request, under the agent’s own identity, not yours.

  4. Minutes or hours later the completion is claimed exactly once, and the loop is rebuilt from the saved row with the findings spliced in as that call’s reply. Same turn id, so it renders as one turn.

  5. With the code work in context, the executor replies on the thread that triggered it and updates the ticket. Review then judges the whole turn, sandbox segment included.

Open source

No proprietary runtime.

The engine is open source under the MIT licence, and it runs on infrastructure your team already knows how to operate. There is no proprietary runtime in the middle, and nothing to take on trust.

LicenceMIT
Written inPython 3.12+
Event busApache Pulsar
DatabasePostgreSQL, with pgvector and TimescaleDB
ToolsMCP servers (Stdio / HTTP)
InterfaceREST API & Dashboard
FAQ

Frequently asked questions.