kelam.sh

A voice on the other end of the line.

Kelam answers your number, calls your list, books, follows up, and texts back — in a voice most callers can't tell from a person's. It speaks three languages and switches mid-sentence when you do, and hands the call to a human the moment it should. There's a number below. That's the whole introduction.

$ curl -fsSL https://kelam.sh | sh
Installs the kelam command via Homebrew / uv / pipx (re-running is a no-op; upgrade with kelam update). Also: brew install samsadsam/kelam/kelam. Prefer to read first? view install.sh.
See the CLI Read the docs Use it from your coding agent
Live demo

Talk to a Kelam agent right now

The Nousdata front desk runs on Kelam, in production, right now. Call it like anyone would — or talk to it here in your browser, no number needed. It answers in English and slips into Spanish or French the moment you do.

Call +1 (620) 387-8062
Every call is recorded and transcribed, the same as any other. The demo is rate-limited — go gently.
The part nobody mentions

And if you know the word, it builds you one of your own.

Stay on long enough and you'll notice it isn't only answering — it can make. Say the right thing on the call and it spins up an agent that's yours: its own line, its own voice, its own memory of every conversation it has. No form, no dashboard, nothing to install. You describe what you need, out loud, and hang up with something that already works.

We won't print the word here. The people who need it already know it — or they will, somewhere in the call.

Use cases

What people build with it

Anything that's "a phone line plus judgment" — answering or dialing out, voice and text on one number, in English, Spanish, and French.

🛎️Front desk & reception

Answer the main line, explain what the business does, take messages, text back the details — the Nousdata line above is exactly this, in production.

📅Reminders & confirmations

Call people ahead of appointments, reschedule on the spot, and follow up by text from the same number.

🎯Lead qualification

Work down a list, ask the qualifying questions, and keep budget, timeline, and contact as structured fields you can pull later.

📋Surveys & follow-ups

Post-service check-ins and questionnaires; every call comes back as a transcript plus the numbers, ready to read.

🌙After-hours coverage

Answers when nobody else can, brings in a human the moment it matters, and texts over a summary.

📈A room full of them

Watch any call as it happens, run whole batches without them stepping on each other, and see the cost of every conversation.

Capabilities

What it does

A lot — and none of it sounds like software.

📞Phone calls

Answers and places real calls on a real number — every one recorded, with a live transcript.

🌐Browser calls

Talk to it over the web, with no phone number at all.

🗣️Three languages

Speaks English, Spanish, and French, and switches the instant you do.

🤝One voice calls another

It can ring up another agent on its own, or quietly hand a live call to a colleague.

🎧Listen in

Sit in on any call while it's happening — invisible to both sides.

🎚️Sounds real

Ambient room noise it changes mid-call, touch-tone for menus, and it sizes up who answered before it says a word.

💬Texts too

Sends texts and picture messages from its own number; every thread is kept and replyable.

🧾Pulls the facts

Takes the things you care about out of a conversation — a price, a date, a yes or no — as it hears them.

📊Remembers everything

Every call becomes a transcript, a one-line summary, and a fistful of numbers, ready to read.

🌱Makes more of itself

On the right call, it can stand up a brand-new agent — its own line, its own voice — for whoever's asking.

Interface

The CLI

After installing, connect to your server and go.

kelam login https://your-kelam-host   # saves URL + password (once per machine)

kelam create  my-bot               # scaffold an agent (+ provision a number)
kelam deploy  my-bot               # assemble + cache the runtime, ready for calls
kelam call    my-bot +12065550123 --wait   # real outbound call, transcript streamed live
kelam call    my-bot +12065550123 -e "price:number:quoted price in USD" # typed extraction
kelam call    my-bot +33612345678 --lang fr # start in another of the agent's languages
kelam web     my-bot               # …or talk in the browser, no phone number
kelam monitor                      # live calls, each with a listen-in link
kelam extract my-bot -e "price:number:quoted price in USD" --since 7d # backfill existing calls
kelam export  --since 7d           # call logs + derived metrics (jsonl/json/csv)
kelam createCreate an agent and pull it into a local folder (provisions a number unless --no-number).
kelam push / deployPush a new version, then assemble + cache the runtime.
kelam callCall a number — or another agent (kelam call bot other-bot, no phone needed). -p steers this one call, -e/--extract captures typed fields, -t overrides the transfer, and --wait streams the transcript.
kelam showOpen the agent's page — talk over WebRTC (no phone number), audition voices, edit it with an AI chat.
kelam monitorListen in on any live call from a link — audio plus streaming transcript, invisible to both sides.
kelam queueSee (or cancel) calls parked behind the server's concurrency cap — batches drain themselves safely.
kelam text / texts / peersSend SMS/MMS from the agent's number; browse threads and recently active numbers.
kelam calls / transcriptList recent calls; fetch one call — or a number's full voice+text history.
kelam extractRun the same structured extraction over existing calls and persist values back onto each CallLog.
kelam export / statsExport call logs with metrics; aggregate counts, durations, turns, and per-provider cost.
kelam skillThe operating guide for AI coding agents — print it, or --install it into a project (see below).
Coding agents

Built for Claude, Codex, Cursor & friends

Kelam is AI-agent-first: every command speaks JSON, live calls stream as JSONL watch files an agent can tail, and the CLI ships its own operating guide. One command teaches whatever coding agent you use to drive it:

kelam skill --install   # run in your project; re-run after `kelam update`

That writes the guide everywhere your tools look for instructions — your own content in shared files is never touched:

AGENTS.mdThe cross-tool standard — read by Codex, Cursor, OpenCode, and GitHub Copilot. Kelam owns one marker-fenced block, nothing else.
.claude/skills/kelam/A Claude Code project skill that auto-triggers on kelam work.
.cursor/rules/kelam.mdcA Cursor project rule, agent-requested via its description.
.github/copilot-instructions.mdVS Code Copilot chat instructions (marker-fenced block).

On Claude Code you can go one step further — the Nousdata marketplace ships a kelam plugin that installs and drives the CLI for you:

/plugin marketplace add samsadsam/nousdata
/plugin install kelam@nousdata

Then just tell Claude: please setup kelam.sh for me. The plugin bundles three skills:

🎛️kelam-operate

Drives agents end to end — place and follow calls, batch-dial, extract results, text back (built on the same kelam skill guide). view SKILL.md →

🛠️kelam-setup

Installs and configures the CLI end-to-end (also /kelam:setup). view SKILL.md →

📈kelam-viz

Turns kelam export / stats output into self-contained HTML dashboards. view SKILL.md →