capx init your next company.
YAML configs. Full REST API. CLI. TypeScript SDK. MCP Server. Designed for engineers who want control, not magic. Every action programmable, every decision auditable, every cost tracked.
5 ways to interact.
Every tool ships with full documentation, typed interfaces, and real code examples. Pick your interface. The API is the same underneath.
CLI
capx init, deploy, status, logs, tail. CI/CD friendly. Autocomplete for bash, zsh, fish.
$ capx init my-company --template saas-agency Creating company... done Provisioning 4 agents... done Company ready: my-company.capx.ai $ capx status my-company Status: active Agents: 4/4 healthy Spend: $42.10 / $500.00 cap Tasks: 12 completed, 2 in progress
REST API
Every action programmable. Companies, agents, tasks, playbooks, approvals. OpenAPI spec included.
curl -X POST https://api.capx.ai/v1/companies \
-H "Authorization: Bearer capx_sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "acme-marketing",
"template": "saas-agency",
"governance": { "spend_cap": 500 }
}'
# 201 Created
{
"id": "co_8x9k2m",
"status": "provisioning",
"agents": 4,
"url": "acme-marketing.capx.ai"
}TypeScript SDK
Typed interfaces, async/await, streaming. Full IntelliSense. Ships with type definitions.
import { Capx } from '@capx/sdk';
const capx = new Capx({ apiKey: process.env.CAPX_KEY });
const company = await capx.companies.create({
name: 'acme-marketing',
template: 'saas-agency',
governance: { spendCap: 500 },
});
const run = await capx.playbooks.run({
company: company.id,
playbook: 'landing-page-copy',
input: { brief: 'Launch page for new feature' },
});
for await (const event of run.stream()) {
console.log(event.type, event.data);
}MCP Server
Model Context Protocol. Works with Claude Desktop and Cursor. Natural language control.
// claude_desktop_config.json
{
"mcpServers": {
"capx": {
"command": "capx",
"args": ["mcp", "serve"],
"env": {
"CAPX_API_KEY": "capx_sk_live_..."
}
}
}
}
// Then in Claude Desktop or Cursor:
// "Deploy a company called acme-marketing
// using the saas-agency template with
// a $500 spend cap"Dashboard
Web-based GUI for teams who prefer visual management. Real-time updates, one-click approvals.
┌────────────────────────────────────┐ │ Capx Dashboard │ │ │ │ Companies 3 active │ │ Agents 12/12 healthy │ │ Spend (30d) $412.80 / $1,500 │ │ Tasks 847 completed │ │ │ │ Recent Activity │ │ 14:32 engineer PR #23 opened │ │ 14:28 marketer Newsletter sent │ │ 14:15 support Ticket resolved │ │ 14:01 cofounder Strategy updated │ └────────────────────────────────────┘
Request flow.
What happens when your code calls the Capx API. Six steps from request to result.
Request arrives
Your code calls the API, CLI command runs, or MCP server receives a natural language instruction.
POST /v1/playbooks/run
{ "company": "co_8x9k2m", "playbook": "engineer-task", "input": { "spec": "Add dark mode toggle" } }Governance check
The runtime validates spend caps, execution policies, and RBAC permissions before any agent is invoked.
Playbook resolution
The YAML playbook is loaded, version-pinned, and its steps are compiled into an execution plan.
# engineer-task.yaml
steps:
- tool: llm.prompt
input: "Plan changes for: {{spec}}"
- tool: code.edit
input: "{{plan.files}}"Agent execution
The assigned agent runs each step in an isolated container. Tool calls are logged. Outputs are validated against the rubric.
Approval gate (optional)
If the playbook requires human approval, the result enters the approval queue. Otherwise it auto-completes.
Result + webhook
The run result is returned to the caller. Webhooks fire for any configured event subscriptions.
// Webhook: task.completed
{
"event": "task.completed",
"agent": "engineer",
"result": "success",
"artifacts": [{ "type": "pull_request", "url": "..." }]
}Bring your own model.
Model-agnostic by design. Use Claude, GPT, Codex, Cursor, or any HTTP endpoint. Switch per agent, per task, or per playbook step.
Claude (Anthropic)
agents:
- role: strategist
adapter: claude
model: claude-sonnet-4-6
config:
max_tokens: 4096
temperature: 0.3GPT (OpenAI)
agents:
- role: analyst
adapter: openai
model: gpt-4o
config:
max_tokens: 4096
response_format: jsonCustom HTTP
agents:
- role: custom-agent
adapter: http
config:
endpoint: https://your-api.com/agent
headers:
Authorization: "Bearer ${KEY}"
timeout_ms: 30000