Quickstart
Sign up, mint a key, wire krabs into your agent of choice, run your first call. About five minutes.
Install
v0.4 ships from source. Homebrew + npm distribution arrive in v0.5 — until then, clone and build:
git clone https://github.com/augusto-devingcc/krabs.git cd krabs pnpm install pnpm setup
pnpm setup mints an API key against a local SQLite DB and saves it to ~/.config/krabs/config.json. Your CLI is now authenticated for the localhost API. For the hosted version (app.krabs.dev), run ./cli/dist/index.js auth login --api-url https://api.krabs.dev after building the CLI — that triggers the device flow.
See the install guide for symlinking the CLI to your PATH, uninstall, and the v0.5 distribution roadmap.
Mint a key
On signup the dashboard auto-provisions a key labeled Web Dashboard bound to your browser session. For anything else — an agent, a script, a deployed worker — create a scoped key at /dashboard/keys.
Tokens look like this:
krabs_sk_4n7q2vh3jpz9w8x1y0c5b6d4f8g2k1m3
The full token is shown once at creation. We store only a hash. If you lose it, rotate.
Wire Claude Desktop
Open ~/Library/Application Support/Claude/claude_desktop_config.json and add the krabs server under mcpServers.
{
"mcpServers": {
"krabs": {
"transport": "https",
"url": "https://mcp.krabs.dev",
"auth": {
"type": "bearer",
"token": "krabs_sk_…"
}
}
}
}Restart Claude Desktop. The krabs tools appear in the tool drawer; the agent can now reach every operation listed in the contract.
Your first call
Three transports, one operation. Each of the following creates the same contact.
MCP — ask the agent in natural language; the host invokes the tool:
tool: contact.upsert
args: {
"identity": { "kind": "email", "value": "ada@lovelace.dev" },
"first_name": "Ada",
"last_name": "Lovelace"
}CLI:
krabs contact upsert \ --email ada@lovelace.dev \ --first-name Ada \ --last-name Lovelace
HTTP:
curl https://api.krabs.dev/v1/contact.upsert \
-H "Authorization: Bearer $KRABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"identity": { "kind": "email", "value": "ada@lovelace.dev" },
"first_name": "Ada",
"last_name": "Lovelace"
}'All three return the same JSON: a contact object with a stable id.
Next steps
- Auth & tokens → scopes, rotation, and how revocation behaves under load.
- The contract → the five properties every operation honors.
- Runs & SSE → group calls into a session and stream them live.