kelam.sh Docs Try it Add to Claude
The CLI

Every command

The loop is five words — create, edit, verify, push, deploy — and then you call. kelam --help is always authoritative: the CLI ships often, and its help text matches the version you actually have installed.

$ curl -fsSL https://kelam.sh | sh && kelam login

The grammar worth knowing up front

Setup

kelam login

Sign in and save your workspace credential locally — no environment variables needed after this.

kelam logout

Forget the saved credential on this machine.

kelam update

Update the CLI to the latest release — detects however it was installed (brew / uv / pipx). Also refreshes an installed project guide.

kelam skill

The operating guide for AI coding agents — print it, or --install it into a project. More →

kelam connector

Print your workspace's MCP connector URL — paste it into claude.ai to use Kelam from Claude. More →

kelam members

List your workspace's people, or add one with --add email.

kelam context

Show or edit context, one command by arity — bare is the workspace lane every agent inherits, kelam context <agent> is that agent's own, kelam context <agent> <peer> is what it remembers about one caller.

The agent loop

kelam create

Create an agent and pull it into ~/.kelam/agents/<name>/ — your workspace's number attaches automatically. --no-number for a browser-only agent, --buy-number for a dedicated line, --template for a preset.

kelam pull

Pull an agent's files into a local folder (bare, inside a pulled folder, refreshes it in place).

kelam verify

Lint a local agent folder — config, tools, secret and context references. Every problem comes back as a list of issues.

kelam push

Push the folder back. Every push is a new version.

kelam deploy

Assemble and cache the runtime — that version is now the one that answers.

kelam test

Run the agent's test suite against its deployed version — fast text assertions and real $0 agent-to-agent voice tests. Non-zero exit on failure.

kelam versions

An agent's deployed versions, newest first — the set you can pin a single call to.

kelam schema

The agent.yaml contract as data — models, voices, every field. Narrow it: kelam schema turn.detection, kelam schema tests, kelam schema evals.

kelam list

The workspace's agents. --full prints each one's generated usage guide.

kelam secret-set

Set a workspace secret, stored encrypted — the value never touches the command line.

kelam secrets

List secret names — what secret("NAME") in a tool resolves at call time. Values are never read back out.

kelam callers

Show — or edit — an agent's inbound caller allowlist. The owner's number always stays allowed.

kelam route

Send a known caller straight to a specific agent by their number — deterministic, ahead of any voice concierge.

kelam delete

Delete an agent. Destructive, so the argument is always explicit.

Calling

kelam call

Place a real outbound call — to a number, or to another agent with no telephony at all. --wait streams the transcript and returns the finished record; -p steers this one call; -e extracts typed fields; --in/--at schedule it.

kelam show

Open the agent's page — talk to it in the browser, audition voices, edit it with the Builder chat.

kelam status

Where things stand, in one round — one call's lifecycle, or the whole workspace. --wait blocks until the call (or several) ends.

kelam monitor

The live-calls dashboard — listen to any call as it happens, invisible to both sides.

kelam hangup

End a call now, or after a polite goodbye with --wrap-up. Your abort handle once something has dialed.

kelam queue

Calls parked behind the concurrency cap, oldest first — over-placing a batch is safe.

kelam replay

Inspect — or re-run — the exact configuration that took a call. --to re-dials it at a phone you control or a simulator agent, never the original callee.

kelam flag

Mark a call as worth debugging (or clear the mark). kelam calls --flagged is the review queue.

Call data

kelam calls

Every call in the workspace, newest first — or one agent's. Filter by status, direction, peer, age, whether a human answered; --live for in-progress, --tree to nest calls under the call that spawned them.

kelam transcript

One call's transcript and recording — or a number's full voice-and-text history, which is what you compose a reply from.

kelam search

Find anything fast — a call, an agent, a peer, a chat, or a context fact.

kelam export

Call logs plus derived metrics — turns, words, talk ratio, durations, cost — as jsonl, json, or csv (with a column per extracted field).

kelam stats

Aggregate counts, duration percentiles, turn totals, and per-provider cost.

kelam costs

What you've actually spent — real money, not an estimate.

kelam extract

Pull typed fields out of calls you already made — a model pass over each transcript, persisted onto the call.

Texting

kelam text

Send SMS or MMS (or WhatsApp) from the agent's own number.

kelam texts

Browse an agent's message threads, newest first.

kelam peers

Recently active numbers across calls and texts — the people your agents talk to.

Experiments

Weighted variants of one agent, compared on real traffic. Assignment is sticky per caller, and no winner is named before there's enough data to mean anything.

kelam ab create

Start an experiment: --variant name="llm.model=…" patches knobs over the deployed base, --variant name=@<ref> pins a deployed version. Set --split, --min-calls, a --primary metric and --guardrails.

kelam ab templates

Start a common experiment from a template — the turnkey path into ab create.

kelam ab status

Variants, weights, per-arm call counts, and progress toward the minimum.

kelam ab results

Per-arm value with a 95% interval and the probability each variant beats the others.

kelam ab stop

End it — --adopt <variant> promotes that variant to the agent's live config.

Account

kelam upgrade

Request a plan upgrade for your workspace.

kelam upgrades

List pending upgrade requests, or approve one (platform admin).

kelam invite

Mint a shareable signup invite link (admin).

kelam invites

List your invite links, or revoke one (admin).

Two patterns worth copying

Batch a list, then sweep once

$ for n in $(cat numbers.txt); do kelam call bot "$n" -p "$GOAL"; done
# collect the call_ids from those acks, then ONE blocking sweep:
$ kelam status <id1> <id2> <id3> --wait --progress --timeout 600

Stop everything

$ kelam queue            # parked calls  -> kelam hangup <call_id> each
$ kelam calls --live     # dialed calls  -> kelam hangup <call_id> each
# run both again to confirm they come back empty

Full guides live at kelam.sh/docs, and kelam --help knows everything on this page.