Let your coding agent drive it
Kelam is designed to be operated by a model. The CLI ships its own operating guide — the JSON contract, the build loop, how to follow a live call without polling, how to batch — and one command plants that guide everywhere a coding agent looks for instructions. Then you just ask.
Just ask it to set itself up
The plugin ships a setup skill, so the shortest path is to say so:
It runs the installer, sets the server and credentials, verifies with a real call to the
API, and installs the guide. On Claude Code it's also /kelam:setup. The manual
version is below.
Install the guide into your project
kelam skill --install
Run it once per project. It writes the same canonical document into each harness's conventional location:
| AGENTS.md | Always. A marker-fenced block — your own content in the file is left untouched. Read by Copilot, Cursor, Codex, OpenCode and friends. |
| .claude/skills/kelam/ | A Claude Code project skill, so it activates on its own when the conversation is about voice agents or calls. |
| .cursor/rules/kelam.mdc | A Cursor rule. |
| .github/copilot-instructions.md | Copilot instructions. |
The last three are written when those directories already exist; --all forces
every location. Re-running is safe. Just want to read it? kelam skill prints
the whole guide to stdout.
It can't go stale. The guide lives inside the CLI, so it always describes the
version you actually have installed — and kelam update refreshes an installed
project copy automatically.
The Claude Code plugin
For Claude Code there's a plugin that bundles the guide with a setup skill and a visualization skill:
/plugin marketplace add samsadsam/nousdata /plugin install kelam@nousdata
| kelam-setup | Say "set up kelam.sh for me" and it installs the CLI, configures the server and credentials, verifies it works, and plants the guide. Also available as /kelam:setup. |
| kelam-operate | The driving guide: create and deploy agents, place and follow calls, batch-call a list, extract fields, text people back. |
| kelam-viz | Turns kelam export / kelam stats output into self-contained HTML dashboards. |
Not on Claude Code? kelam skill --install reaches every other harness in one
shot.
Read the three skills before installing anything: kelam-setup · kelam-operate · kelam-viz.
What to ask for once it's installed
"Build me an agent that calls our no-shows from yesterday and offers to reschedule. Test it against a simulated grumpy caller before you deploy it."
"Call every number in leads.csv, ask if they're still looking, and give me a CSV with a yes/no and a one-line reason per row."
"This call went badly — pull the exact config that took it, work out what caused it, fix the scenario, and replay the call against the fix."
"Write a tool that checks our booking API for open slots, put the key in a workspace secret, and give the front desk agent access to it."
"Export the last 30 days and build me a dashboard: volume by day, average duration, talk ratio, and which agent costs the most per booking."
"Kill anything on the line right now." — the guide has an explicit two-sweep procedure for exactly this.
Why this works better than an SDK
- Everything is JSON. Every command prints machine-readable JSON when its output is piped, which is always true for a tool call. Collections are objects keyed by their plural noun, so nothing has to be scraped from a table.
- Blocking beats polling.
kelam call --waitandkelam status <id> --waitblock until a call ends and then print the outcome. A two-minute call costs one turn, not forty. The guide is emphatic about this: never sleep and re-check. - Mistakes come back as data.
kelam verifyreturns every config problem as a list of issues, so a model fixes and re-verifies instead of guessing. - Agents are self-describing. Each one carries a generated
usagefield saying what it does and what per-call instructions suit it — so an agent can drive an agent it didn't write. - Errors are one actionable line. Exit code 0 on success; failures print a single sentence on stderr and exit 2.
Skill, connector, or both?
| The CLI skill | The MCP connector | |
|---|---|---|
| Where | Any coding agent, in a project on your machine | claude.ai, Claude mobile, Claude Code |
| Can build agents | Yes — files, tests, experiments, the whole loop | No — it operates existing agents |
| Needs an install | The CLI | Nothing, once the URL is added |
| Best for | Writing and shipping agents | Asking for a call and getting an answer |
In Claude Code they compose nicely: add the connector for fast call operations, and keep the skill for the build loop.
Turning calls into a dashboard
Call data is designed to be charted. kelam export emits call logs plus derived
metrics — turns, words, talk ratio, durations, cost, and a column per extracted field — as
JSONL, JSON or CSV.
$ kelam export --since 30d -o calls.jsonl $ kelam export --since 30d --format csv -o calls.csv $ kelam stats --since 7d # aggregate counts, durations, per-provider cost
With the plugin installed, "visualize my calls from the last month" produces a self-contained HTML dashboard from that export.