Build and run voice AI agents from the terminal.
Kelam is a CLI + small platform for voice AI agents that make and answer real phone calls. You describe an agent as a few files, push it, and call a phone number — or talk to it in your browser. Under the hood a call runs a Deepgram → Claude → ElevenLabs conversation over a phone line, with the transcript and recording saved for you.
kelam create booking-bot # scaffold an agent (+ provision a number)
kelam deploy booking-bot # make it callable
kelam call booking-bot +1206... # place a real outbound call
kelam web booking-bot # …or talk to it in the browser, no phone number- 📞 Phone calls — outbound and inbound, over a real phone number.
- 🌐 Browser calls — talk to an agent over WebRTC with no phone number at all.
- 💬 Texting — send SMS/MMS from the agent's number; threads are stored and replyable.
- 🧩 Agents as files —
agent.yaml+scenarios/*.md+tools/*.py, edited locally and pushed git-style (every push is a new version). - 📊 Call data —
kelam export/kelam statsgive transcripts plus derived metrics (turns, words, talk ratio, durations) ready to chart.
One command:
curl -fsSL https://kelam.sh | shOr with your own tooling:
uv tool install kelam
pipx install kelamThen point it at your Kelam server and (if it uses shared-password auth) authenticate:
export KELAM_API_URL=https://<your-kelam-host>
export KELAM_PASSWORD=<password> # only if the server requires it
kelam listThe CLI is a thin client — it talks to a Kelam server (the control plane + voice worker). Bring your own deployment, or ask the maintainers for access.
Use Kelam straight from Claude Code — the NousData
marketplace ships a kelam plugin:
/plugin marketplace add nousdata/plugins
/plugin install kelam@nousdata
It includes:
kelam-setup— just tell Claude "please setup kelam.sh for me" and it installs and configures the CLI for you (also/kelam:setup).kelam-viz— turnskelam export/kelam statsoutput into self-contained HTML dashboards (transcripts, call volume, durations, talk ratio).
kelam create my-bot # scaffold + provision
# edit my-bot/agent.yaml, scenarios/*.md, tools/*.py
kelam verify my-bot --src ./my-bot # lint
kelam push my-bot --src ./my-bot # new version
kelam deploy my-bot # ready for calls
kelam call my-bot +1206... -p "extract their email and timeline"
kelam transcript <call_id> # status + transcript + recording
kelam export --since 7d | ... # call logs + metrics -> kelam-vizMIT — see LICENSE.