Install
openclaw skills install @batthis/amber-phone-agentGive your agent a phone number. Amber answers calls, places confirmed outbound calls, completes phone tasks, logs transcripts, and exposes MCP tools.
openclaw skills install @batthis/amber-phone-agentAmber gives any OpenClaw deployment a real phone number and the tools to complete calls. It ships with a production-ready Twilio + OpenAI Realtime bridge (runtime/) for confirmed phone workflows: answer callers, screen calls, place approved outbound calls, look up contacts, schedule appointments, take messages, log transcripts, and hand call-critical decisions back to OpenClaw through MCP tools.
Use it when you want an agent to do the plain-English phone job: call this business, ask this question, book the slot, leave the message, screen this caller, or show me what happened. Amber is built for operators who want the phone capability layer under their own Twilio or compatible voice account, with local logs, a local dashboard, and confirmation gates before outbound calls or calendar writes.
Amber is a sensitive communications system. It can process call audio/transcripts through configured voice and AI providers, store local call logs, maintain a local CRM, read/write the operator calendar, expose local MCP tools, and optionally use an Apple Contacts export for name-to-number resolution. Operators should configure caller notice/consent, retention/deletion practices, and least-privilege provider credentials before production use.
Privacy defaults: local CRM lookup/logging is disabled unless AMBER_CRM_ENABLED=true, and post-call transcript enrichment is disabled unless AMBER_CRM_TRANSCRIPT_ENRICHMENT=true. Enable those only after setting caller notice/consent and retention/deletion practices.
✨ New in v5.5.50: Sharper ClawHub positioning: Amber is now described first as the phone-number-and-call-completion layer for agents, with inbound answering, confirmed outbound calling, scheduling, transcripts, and MCP tools visible before the deeper architecture.
✨ v5.4.0: Amber ships as an MCP plugin with 9 tools — prepare confirmed calls by name, check call history, query CRM contacts, manage calendar, and control call screening. It works with Claude Desktop/Cowork and other MCP-capable clients or agent harnesses once configured. Includes Apple Contacts integration and a code-enforced call confirmation safeguard to prevent wrong-number dials.
✨ Also: Interactive setup wizard (npm run setup) validates credentials in real-time and generates a working .env file — no manual configuration needed. Once setup is complete, Amber is prompt-based: ask your OpenClaw agent to prepare confirmed calls, answer/screen callers, schedule confirmed appointments, or handle phone workflows in natural language.

▶️ Watch the interactive demo on asciinema.org (copyable text, adjustable speed)
The interactive wizard validates credentials, detects ngrok, and generates a complete .env file in minutes.
runtime/) — a complete Node.js server that connects a Twilio or compatible phone number to OpenAI Realtime with OpenClaw brain-in-the-loopamber-skills/) — modular mid-call capabilities (CRM, calendar, log & forward message) with a spec for building your owndashboard/) — browse call history, transcripts, captured messages, estimated costs, and one-touch localhost test calls with regular/mini Realtime model selectionAmber ships with a growing library of Amber Skills — modular capabilities that plug directly into live voice conversations. Each skill exposes a structured function that Amber can call mid-call, letting you compose powerful voice workflows without touching the bridge code.
Amber can maintain operator-reviewed caller memory across calls, limited to relevant follow-up context under the operator's notice, consent, and retention policy.
AMBER_CRM_ENABLED=true to enable automatic known-caller lookup and interaction loggingAMBER_CRM_TRANSCRIPT_ENRICHMENT=true to allow post-call extraction to propose caller details and notes for the local CRM~/.config/amber/crm.sqlite; CRM records are not cloud-hosted. Live call audio/transcripts still pass through Twilio/OpenAI as part of the phone bridge. Tell callers when calls are handled by an AI assistant and may be logged/used for follow-up, according to your local consent requirements.better-sqlite3 (native build). macOS: sudo xcodebuild -license accept before npm install. Linux: build-essential + python3.Query the operator's calendar for availability or schedule a new event — all during a live call.
ical-query — local-only, zero network latencyLet callers leave a message that is automatically saved and forwarded to the operator.
Amber's skill system is designed to grow. Each skill is a self-contained directory with a SKILL.md (metadata + function schema) and a handler.js. You can:
See amber-skills/ for examples and the full specification to get started.
Contacts privacy: Apple Contacts sync is opt-in. By default it exports only names and phone numbers needed for call-by-name. Set AMBER_CONTACTS_EXTENDED=true only if you explicitly want extra local-only fields such as email, organization, relationships, addresses, and notes in runtime/contacts-cache.json.
Note: Each skill's
handler.jsis reviewed against its declared permissions. When building or installing third-party skills, review the handler source as you would any Node.js module.
cd dashboard && node scripts/serve.js # → http://localhost:8787
runtime/logs/ and refreshes the dashboard. Use this right after a call ends rather than waiting for the background watcher.node scripts/serve.js, the dashboard can call a test number through the local Amber bridge and choose gpt-realtime or gpt-realtime-mini per call.node scripts/watch.js) auto-syncs every 30 seconds when running.npm install, configure .env, npm startBefore deploying, users must personalize:
Do not reuse example values from another operator.
The easiest way to get started:
cd runtimenpm run setup.env filenpm startBenefits:
.env editingcd runtime && npm cicd ../amber-skills/crm && npm ci if you plan to enable CRM caller memory.cd ../.. and copy references/env.example to runtime/.env, then fill in your values.AMBER_CRM_ENABLED=true only if you want local caller memory/known-caller greetings.cd runtime && npm run build && npm starthttps://<your-domain>/twilio/inboundreferences/env.example to your own .env and replace placeholders.TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_CALLER_ID, OPENAI_API_KEY, OPENAI_PROJECT_ID, OPENAI_WEBHOOK_SECRET, PUBLIC_BASE_URL).scripts/setup_quickstart.shUse least-privilege credentials for every provider:
OPENCLAW_GATEWAY_TOKEN if you need brain-in-the-loop lookups; keep token scope minimal.runtime/package-lock.json; review dependency changes before publishing updates.These controls reduce blast radius if a host or config file is exposed.
AMBER_ENABLE_OUTBOUND_CALLS=false to disable the outbound call endpoint.make_call), confirmation is enforced at the MCP server layer in code (the tool returns a preview and requires confirmed=true on a second call before dialing) — this is not LLM-only instruction. The LLM instruction layer provides an additional reminder, but the code gate is the primary enforcement mechanism.ask_openclaw is slow/unavailable.Confirm scope for V1
Document architecture + limits
references/architecture.md.Run release checklist
references/release-checklist.md.Smoke-check runtime assumptions
scripts/validate_voice_env.sh on the target host.Publish
clawhub publish <skill-folder> --slug amber-voice-assistant --name "Amber Voice Assistant" --version 1.0.0 --tags latest --changelog "Initial public release"Ship updates
1.0.1, 1.1.0, 2.0.0) with changelogs.latest on the recommended version..env values and re-run scripts/validate_voice_env.sh.cd amber-skills/crm && npm rebuild better-sqlite3, then restart the Amber runtime.runtime/, with dependencies pinned in runtime/package-lock.json.better-sqlite3 (native module), which compiles locally on your machine.runtime/package.json dependencies before deployment in regulated environments.runtime/ (full source + README)references/architecture.mdreferences/release-checklist.mdreferences/env.examplescripts/setup_quickstart.shscripts/validate_voice_env.sh