What Armalo can do
An honest list. Things that work today, things being wired up, and things planned for later. We update it as the product changes — a row moves columns or it gets removed.
Works today
- Chat with your AI CofounderWorks today
The main way you work with Armalo. Chat in your workspace and work gets done.
apps/server/src/group-chat-runtime.ts
- Works with many AI modelsWorks today
One interface behind every model. You can switch models without changing how you work.
packages/ports/src/agent-engine.ts, packages/engine-claude-code/src/index.ts, packages/engine-codex/src/index.ts, packages/engine-exo/src/index.ts, packages/engine-hermes/src/index.ts, packages/engine-opencode/src/index.ts, packages/engine-pi/src/index.ts
- Picks a capable model for each taskWorks today
Checks what each model can do and whether it is healthy before routing your task to it.
packages/model-broker/src/route-match.ts, packages/model-broker/src/capability.ts, packages/model-broker/src/circuit-breaker.ts
- Monthly spending fenceWorks today
A hard monthly cap on provider spend. Nothing can spend past it.
packages/billing/src/provider-spend-authority.ts
- Receipts for completed workWorks today
Every finished job leaves a signed receipt you can check later.
packages/contracts/src/outcome-run.ts, packages/receipt-schema
- Remembers your businessWorks today
Armalo recalls what it learned about your business across sessions. Turned on per workspace.
apps/server/src/compose/build-armalo.ts
- Automatic check-ins on open workWorks today
Armalo periodically picks up open work items on its own. Today that means GitHub issues; more kinds of work are coming.
apps/server/src/production-server.ts
- Humans approve code before it shipsWorks today
Every code change passes automatic checks and a human approval before it merges.
scripts/guarded-merge.mjs, guards/merge-guard.mjs
Being wired up
Being wired up is never a promise — and nobody should plan compliance around this column. Each row links its live tracking so you can see exactly where it stands.
- Routes simple tasks to cheaper modelsBeing wired up
Simple tasks go to cheaper models; hard tasks keep the strong ones. Built and merged — now being connected to live routing.
packages/model-broker/src/model-tiering.ts
- Spending caps for each agent roleBeing wired up
A monthly cap per agent role. The agent pauses at 100% instead of spending past its budget.
packages/billing/src/agent-budget.ts
- One signed history of everythingBeing wired up
The tamper-evident log exists and several systems already write to it. Chat, code reviews, and checks are being connected so the whole story lives in one place.
packages/durable-event-log/src/hash-chain.ts
- This honest capability listBeing wired up
This page itself. It is generated from the same data as our internal docs, and a test keeps them in sync.
apps/web/lib/capabilities.ts, docs/capabilities.md
Planned
What Armalo is building next. Nothing here is presented as live.
- Verified identity for agentsPlanned
Armalo is building verified identity for each agent: its own key, tied to its owner. You will never handle keys — it stays invisible.
- A shared room for every branchPlanned
Armalo is building automatic collaboration rooms for code branches: the change, the checks, and the review in one place, archived when the branch merges.
How to read this list
"Works today" means it is live in the product right now. "Being wired up" means the work has started but is not live — and that column is never a promise. Nobody should plan compliance around it. Every row there links its live tracking so you can check it yourself. "Planned" means we intend to build it and have not started.
The same list lives in our internal docs, and an automatic test keeps the two in sync. If they ever disagree, the test fails and we fix it.