← Back to Skills Marketplace
batthis

Amber — Give Your Agent Real Phone Capabilities

by Abe Batthish · GitHub ↗ · v5.5.8 · MIT-0
cross-platform ⚠ suspicious
1738
Downloads
5
Stars
2
Active Installs
92
Versions
Install in OpenClaw
/install amber-phone-capabilities
Description
Give your OpenClaw agent real phone capabilities: inbound answering, outbound calls, booking, screening, CRM memory, and real-world phone task execution.
README (SKILL.md)

Amber — Give Your Agent Real Phone Capabilities

Overview

Amber gives any OpenClaw deployment real phone capabilities for agents. It ships with a production-ready Twilio + OpenAI Realtime bridge (runtime/) that lets your OpenClaw agent answer inbound calls, make outbound calls, book appointments, screen callers, and complete real-world phone tasks via natural voice conversation over a real telephone number.

✨ New in v5.4.0: Amber now ships as a Claude Desktop MCP plugin with 9 tools — make outbound calls by name, check call history, query CRM contacts, manage calendar, and control call screening, all from Claude Desktop or Claude Cowork. Includes Apple Contacts integration and a 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!

See it in action

Setup Wizard Demo

▶️ 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.

What's included

  • Runtime bridge (runtime/) — a complete Node.js server that connects Twilio phone calls to OpenAI Realtime with OpenClaw brain-in-the-loop
  • Amber Skills (amber-skills/) — modular mid-call capabilities (CRM, calendar, log & forward message) with a spec for building your own
  • Built-in CRM — local SQLite contact database; Amber greets callers by name and references personal context naturally on every call
  • Call log dashboard (dashboard/) — browse call history, transcripts, and captured messages; includes manual Sync button to pull new calls on demand
  • Setup & validation scripts — preflight checks, env templates, quickstart runner
  • Architecture docs & troubleshooting — call flow diagrams, common failure runbooks
  • Safety guardrails — approval patterns for outbound calls, payment escalation, consent boundaries

🔌 Amber Skills — Extensible by Design

Amber 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.

👤 CRM — Contact Memory (v5.3.0)

Amber remembers every caller across calls and uses that memory to personalize every conversation.

  • Runtime-managed — lookup and logging happen automatically; Amber never has to "remember" to call CRM
  • Personalized greeting — known callers are greeted by name; personal context (pets, recent events, preferences) is referenced warmly on the first sentence
  • Two-pass enrichment — auto-log captures the call immediately; a post-call LLM extraction pass reads the full transcript to extract name, email, and context_notes
  • Symmetric — works identically for inbound and outbound calls
  • Local SQLite — stored at ~/.config/amber/crm.sqlite; no cloud, no data leaves your machine
  • Native dependency — requires better-sqlite3 (native build). macOS: sudo xcodebuild -license accept before npm install. Linux: build-essential + python3.

📅 Calendar

Query the operator's calendar for availability or schedule a new event — all during a live call.

  • Availability lookups — free/busy slots for today, tomorrow, this week, or any specific date
  • Event creation — book appointments directly into the operator's calendar from a phone conversation
  • Privacy by default — callers are only told whether the operator is free or busy; event titles, names, and locations are never disclosed
  • Powered by ical-query — local-only, zero network latency

📬 Log & Forward Message

Let callers leave a message that is automatically saved and forwarded to the operator.

  • Captures the caller's message, name, and optional callback number
  • Always saves to the call log first (audit trail), then delivers via the operator's configured messaging channel
  • Confirmation-gated — Amber confirms with the caller before sending
  • Delivery destination is operator-configured — callers cannot redirect messages

Build Your Own Skills

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:

  • Customize the included skills to fit your own setup
  • Build new skills for your use case — CRM lookups, inventory checks, custom notifications, anything callable mid-call
  • Share skills with the OpenClaw community via ClawHub

See amber-skills/ for examples and the full specification to get started.

Note: Each skill's handler.js is reviewed against its declared permissions. When building or installing third-party skills, review the handler source as you would any Node.js module.

Call log dashboard

cd dashboard && node scripts/serve.js   # → http://localhost:8787
  • ⬇ Sync button (green) — immediately pulls new calls from runtime/logs/ and refreshes the dashboard. Use this right after a call ends rather than waiting for the background watcher.
  • ↻ Refresh button (blue) — reloads existing data from disk without re-processing logs.
  • Background watcher (node scripts/watch.js) auto-syncs every 30 seconds when running.

Why Amber

  • Ship a voice assistant in minutesnpm install, configure .env, npm start
  • Full inbound screening: greeting, message-taking, appointment booking with calendar integration
  • Outbound calls with structured call plans (reservations, inquiries, follow-ups)
  • ask_openclaw tool (least-privilege) — voice agent consults your OpenClaw gateway only for call-critical needs (calendar checks, booking, required factual lookups), not for unrelated tasks
  • VAD tuning + verbal fillers to keep conversations natural (no dead air during lookups)
  • Fully configurable: assistant name, operator info, org name, calendar, screening style — all via env vars
  • Operator safety guardrails for approvals/escalation/payment handling

Personalization requirements

Before deploying, users must personalize:

  • assistant name/voice and greeting text,
  • own Twilio number and account credentials,
  • own OpenAI project + webhook secret,
  • own OpenClaw gateway/session endpoint,
  • own call safety policy (approval, escalation, payment handling).

Do not reuse example values from another operator.

5-minute quickstart

Option A: Interactive Setup Wizard (recommended) ✨

The easiest way to get started:

  1. cd runtime
  2. npm run setup
  3. Follow the interactive prompts — the wizard will:
    • Validate your Twilio and OpenAI credentials in real-time
    • Auto-detect and configure ngrok if available
    • Generate a working .env file
    • Optionally install dependencies and build the project
  4. Configure your Twilio webhook (wizard shows you the exact URL)
  5. Start the server: npm start
  6. Call your Twilio number — your voice assistant answers!

Benefits:

  • Real-time credential validation (catch errors before you start)
  • No manual .env editing
  • Automatic ngrok detection and setup
  • Step-by-step guidance with helpful links

Option B: Manual setup

  1. cd runtime && npm install
  2. Copy ../references/env.example to runtime/.env and fill in your values.
  3. npm run build && npm start
  4. Point your Twilio voice webhook to https://\x3Cyour-domain>/twilio/inbound
  5. Call your Twilio number — your voice assistant answers!

Option C: Validation-only (existing setup)

  1. Copy references/env.example to your own .env and replace placeholders.
  2. Export required variables (TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_CALLER_ID, OPENAI_API_KEY, OPENAI_PROJECT_ID, OPENAI_WEBHOOK_SECRET, PUBLIC_BASE_URL).
  3. Run quick setup: scripts/setup_quickstart.sh
  4. If preflight passes, run one inbound and one outbound smoke test.
  5. Only then move to production usage.

Credential scope (recommended hardening)

Use least-privilege credentials for every provider:

  • Twilio: use a dedicated subaccount for Amber and rotate auth tokens regularly.
  • OpenAI: use a dedicated project API key for this runtime only; avoid reusing keys from unrelated apps.
  • OpenClaw Gateway token: only set OPENCLAW_GATEWAY_TOKEN if you need brain-in-the-loop lookups; keep token scope minimal.
  • Secrets in logs: never print full credentials in scripts, setup output, or call transcripts.
  • Setup wizard validation scope: credential checks call only official Twilio/OpenAI API endpoints over HTTPS for auth verification; no arbitrary exfiltration endpoints are used.

These controls reduce blast radius if a host or config file is exposed.

Safe defaults

  • Require explicit approval before outbound calls. Note on confirmation enforcement: For MCP-initiated outbound calls (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.
  • If payment/deposit is requested, stop and escalate to the human operator.
  • Keep greeting short and clear.
  • Use timeout + graceful fallback when ask_openclaw is slow/unavailable.

Workflow

  1. Confirm scope for V1

    • Include only stable behavior: call flow, bridge behavior, fallback behavior, and setup steps.
    • Exclude machine-specific secrets and private paths.
  2. Document architecture + limits

    • Read references/architecture.md.
    • Keep claims realistic (latency varies; memory lookups are best-effort).
  3. Run release checklist

    • Read references/release-checklist.md.
    • Validate config placeholders, safety guardrails, and failure handling.
  4. Smoke-check runtime assumptions

    • Run scripts/validate_voice_env.sh on the target host.
    • Fix missing env/config before publishing.
  5. Publish

    • Publish to ClawHub (example):
      clawhub publish \x3Cskill-folder> --slug amber-voice-assistant --name "Amber Voice Assistant" --version 1.0.0 --tags latest --changelog "Initial public release"
    • Optional: run your local skill validator/packager before publishing.
  6. Ship updates

    • Publish new semver versions (1.0.1, 1.1.0, 2.0.0) with changelogs.
    • Keep latest on the recommended version.

Troubleshooting (common)

  • "Missing env vars" → re-check .env values and re-run scripts/validate_voice_env.sh.
  • "Call connects but assistant is silent" → verify TTS model setting and provider auth.
  • "ask_openclaw timeout" → verify gateway URL/token and increase timeout conservatively.
  • "Webhook unreachable" → verify tunnel/domain and Twilio webhook target.

Guardrails for public release

  • Never publish secrets, tokens, phone numbers, webhook URLs with credentials, or personal data.
  • Include explicit safety rules for outbound calls, payments, and escalation.
  • Mark V1 as beta if conversational quality/latency tuning is ongoing.

Install safety notes

  • Amber does not execute arbitrary install-time scripts from this repository.
  • Runtime install uses standard Node dependency installation in runtime/.
  • CRM uses better-sqlite3 (native module), which compiles locally on your machine.
  • Review runtime/package.json dependencies before deployment in regulated environments.

Resources

  • Runtime bridge: runtime/ (full source + README)
  • Architecture and behavior notes: references/architecture.md
  • Release gate: references/release-checklist.md
  • Env template: references/env.example
  • Quick setup runner: scripts/setup_quickstart.sh
  • Env/config validator: scripts/validate_voice_env.sh
Usage Guidance
Plain-language checklist before installing: - Verify the source: the SKILL.md points to a GitHub repo; confirm you trust that repository and the exact commit you install. Registry metadata owner ID is not human-friendly — prefer installing directly from the upstream repo you inspected. - Credentials: this requires Twilio account credentials and an OpenAI API key (and webhook secret). These give the runtime control over phone calls and access to OpenAI. Use dedicated, least-privilege keys and monitor usage/billing. Consider setting usage limits on the OpenAI key. - Data flow: audio and transcripts are processed via OpenAI Realtime (cloud). While CRM DB is local by design, call audio/transcripts leave your machine by necessity. If privacy is a concern, review which data is forwarded and consider on-prem alternatives (the docs include an Asterisk roadmap). - Confirmation enforcement: docs contain contradictory statements about whether confirmations for side-effecting actions are enforced at router code or left to the LLM. Before enabling outbound messages or payment-related flows in production, verify the compiled runtime enforces confirmation server-side (test destructive actions and confirm a missing confirmed flag is rejected). - Review handler code for third-party skills: Amber supports loading handler.js from amber-skills; the manifest allowlist is present but review amber-skills/*/handler.js files you plan to enable. The system offers a policy layer, but manual review reduces risk. - Native dependencies & build: CRM uses better-sqlite3 which requires native toolchains. Ensure build tools are available (build-essential/python3 on Linux, Xcode license on macOS) or expect install failures. - Startup/auto-restart scripts: the repo includes a dist-watcher and LaunchAgent examples that, if you run them, will persist a background process. Only enable these if you accept that behavior and have inspected the plist/scripts. - Test in a sandbox: run on an isolated host or test account to verify behavior (call flows, confirmation enforcement, where SUMMARY_JSON ends up) before routing real customer traffic or production numbers. If you want, I can highlight specific lines/files to inspect (router/index.ts, runtime/src/skills/loader.ts, runtime/src/skills/router.ts, runtime/src/providers/twilio.ts, and amber-skills/*/handler.js) and summarize what to look for in each.
Capability Analysis
Type: OpenClaw Skill Name: amber-voice-assistant Version: 5.5.8 The Amber Voice Assistant is a comprehensive and professionally developed skill bundle for integrating Twilio and OpenAI Realtime voice capabilities into OpenClaw. The codebase demonstrates strong security awareness, featuring robust input sanitization (runtime/src/index.ts), path traversal protections (dashboard/process_logs.js), and strict allowlisting for local binary execution (amber-skills/calendar/handler.js). While the tool accesses sensitive data such as Apple Contacts and environment variables, these actions are transparently documented and strictly aligned with the stated purpose of enabling name-based dialing and credential validation against official API endpoints (api.twilio.com and api.openai.com).
Capability Tags
cryptocan-make-purchasesrequires-oauth-tokenrequires-sensitive-credentials
Capability Assessment
Purpose & Capability
The name/description (phone-capable agent) align with the requested env vars (Twilio credentials, OpenAI keys), required binaries (node, ical-query), and included runtime code (Twilio/Telnyx providers, OpenAI Realtime bridge, CRM, calendar). The set of requested credentials is what you'd expect for a telephony+LLM bridge.
Instruction Scope
The SKILL.md and AGENT.md tightly specify runtime behavior (what tools can be called, calendar argument validation, SUMMARY_JSON token usage, not exposing internal prompts). This is good. However there are small contradictions in the docs around confirmation enforcement (some sections claim router-level programmatic enforcement, another note says confirmation is in the LLM layer). That ambiguity matters for safety-critical actions (sending messages, destructive ops) — you should verify the actual router implementation enforces confirmations programmatically. Also AGENT.md contains broad behavioral instructions for the voice persona (including sexualized persona choices) — not a security bug, but an operational/policy consideration for some deployments.
Install Mechanism
Install uses a normal Node/npm workflow (cd runtime && npm install && npm run build). All code is included in the package; there are no downloads from obscure URLs or archive extraction steps in the install spec. There are native build dependencies (better-sqlite3) documented and requiring platform toolchains; the install spec does not silently execute system-level installers or download untrusted binaries.
Credentials
Required env vars (TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_CALLER_ID, OPENAI_API_KEY, OPENAI_PROJECT_ID, OPENAI_WEBHOOK_SECRET, PUBLIC_BASE_URL) are relevant to a Twilio + OpenAI realtime bridge. The number of secrets is appropriate for the service being integrated, but these are high-sensitivity credentials (telephony billing and a live OpenAI key). The package also documents optional gateway tokens and CRM DB path. Ensure you use dedicated service keys with least privilege and monitoring.
Persistence & Privilege
always:false (not force-included) and model invocation enabled (default) — expected for a skill that must act during calls. The project includes helper scripts (dist-watcher, LaunchAgent examples) that, if you run them, will persist a watcher/restart mechanism on the host; these are optional user actions but increase persistence if installed. The skill does not request or appear to modify other skills' credentials or config paths.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install amber-phone-capabilities
  3. After installation, invoke the skill by name or use /amber-phone-capabilities
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v5.5.8
Reposition Amber around real phone capabilities for agents.
v5.5.7
Bump all tags to 5.5.7; add receptionist/telephone/answering-service tags for search
v5.5.6
SEO: richer phone keyword density in description and title for better search discoverability (telephone, virtual receptionist, AI phone assistant, phone call screening)
v5.5.5
v5.5.5: kick stuck VT scan with fresh file hash; minor description tweak
v5.5.4
v5.5.4: bump all tags to latest version for search discoverability
v5.5.3
v5.5.3: update description + bump phone/voice/ai-phone tags to latest for search discoverability
v5.5.2
v5.5.2: re-publish to resolve stuck security scan (name change to Phone Voice Assistant - Amber)
v5.5.1
v5.5.1: rename for discoverability — leading with Phone Voice Assistant category
v5.5.0
Minor: re-publish to resolve stuck security scan
v5.4.4
v5.4.4: security fix — contacts-lookup.ts now uses better-sqlite3 parameterized queries instead of sqlite3 CLI with string interpolation. Eliminates SQL injection vector flagged in v5.4.3 VirusTotal Code Insights.
v5.4.3
v5.4.3: resolve Code Insights flags — add missing optional env vars to SKILL.md (ASSISTANT_NAME, OPERATOR_NAME, AMBER_CRM_DB_PATH, AGENT_MD_PATH, DEFAULT_CALENDAR); clarify outbound call confirmation is enforced at MCP code layer (confirmed=true param), not LLM-only instruction.
v5.4.2
v5.4.2: security fixes — clarify contacts-query.swift uses CNContactStore API (not SQL); add prompt injection delimiters in send-message handler; fix hardcoded paths and improve parameterized queries in sync-contacts.js; exclude .env backups from git and packages.
v5.4.1
v5.4.1: maintenance — reduce publish package size (exclude .git, node_modules, logs, dist). No functional changes from v5.4.0.
v5.4.0
v5.4.0: Claude Desktop MCP plugin with 9 tools — make calls by name, CRM lookup, calendar, call history, call screening, all from Claude Desktop. Apple Contacts integration with confirmation safeguard to prevent wrong-number calls. Objective-first outbound calls with personality preserved. Bridge restart resilience (outbound intent persisted to disk).
v5.3.7
fix: resolve VT Code Insights flags — confirmation enforcement now clearly documented as router-layer (not LLM-only), SUMMARY_JSON annotated as local-only metadata, README data residency statement corrected (CRM local; voice audio processed by OpenAI Realtime)
v5.3.6
chore: optimize description for ClawHub search discoverability
v5.3.5
fix: telnyx stub validateRequest now returns false instead of throwing, preventing unhandled exceptions in webhook pipeline
v5.3.4
v5.3.4 re-publish: no code changes, re-triggering security scan after v5.3.3 hardening (loopback-only dashboard, instruction scope tightening, credential scope docs, unicode cleanup).
v5.3.3
v5.3.3 security: removed --allow-non-loopback flag from dashboard serve.js entirely. Dashboard now hard-rejects non-loopback binding with no override — call logs/transcripts cannot be exposed to the network. For remote access, use a reverse proxy with authentication.
v5.3.2
v5.3.2 scanner cleanup: removed unicode control-format characters (ZWJ) from docs that triggered instruction-scope prompt-injection heuristics; clarified setup wizard credential-validation scope (official Twilio/OpenAI HTTPS endpoints only) and credential handling language.
Metadata
Slug amber-phone-capabilities
Version 5.5.8
License MIT-0
All-time Installs 2
Active Installs 2
Total Versions 92
Frequently Asked Questions

What is Amber — Give Your Agent Real Phone Capabilities?

Give your OpenClaw agent real phone capabilities: inbound answering, outbound calls, booking, screening, CRM memory, and real-world phone task execution. It is an AI Agent Skill for Claude Code / OpenClaw, with 1738 downloads so far.

How do I install Amber — Give Your Agent Real Phone Capabilities?

Run "/install amber-phone-capabilities" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Amber — Give Your Agent Real Phone Capabilities free?

Yes, Amber — Give Your Agent Real Phone Capabilities is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Amber — Give Your Agent Real Phone Capabilities support?

Amber — Give Your Agent Real Phone Capabilities is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Amber — Give Your Agent Real Phone Capabilities?

It is built and maintained by Abe Batthish (@batthis); the current version is v5.5.8.

💬 Comments