Paired: Phone Agent
Bridge an OpenClaw agent to the user's own phone via Bluetooth and ADB-over-USB. Provides SMS receive (MAP/MNS), SMS send (ADB autosend), outgoing calls (HFP...
Rank
62
Safety
84
Downloads
1.3k
Updated
Oct 10, 2026
Version
2.4.1
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 10, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 10, 2026
- Adoption signal
- 1.3K downloadsadoption · observed Oct 10, 2026
- Latest release
- 2.4.1release · observed Oct 6, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s1747h3dssx5wbb4xxpn85vtsd83gnax:paired- Install using `clawhub skill install s1747h3dssx5wbb4xxpn85vtsd83gnax:paired` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/nj070574-gif/paired before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-nj070574-gif-paired/snapshot"
Documentation
CLAWHUB
160,000 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: paired
version: "2.4.1"
description: Paired: Phone Agent. Bridges an OpenClaw agent to the user's own phone via Bluetooth and ADB. Provides SMS receive (MAP/MNS), SMS send (ADB), outgoing/incoming calls (HFP), contacts (PBAP), media control (AVRCP), file transfer (OBEX), PAN tethering, and v2.0.0+ voice cloning so the agent speaks in the user's own voice with word-level audio splicing and 30-language multilingual synthesis. Zero recurring cost, no Twilio, Telnyx, Vapi, ElevenLabs, or rented numbers. Voice cloning runs locally via VoxCPM2 (primary, 48kHz studio) with XTTS v2 fallback (24kHz), piper fallback (generic), and espeak-ng last resort. Triggers on phrases like "send SMS", "text someone", "call my phone", "make a call", "what's on my phone", "my contacts", "phone contacts", "control my phone's media", "send a file to my phone", "is my phone connected", "say it in my voice", "voice note in my voice", "clone my voice", "/sms", "/phone", "/voice", "/say". Act only on explicit phone/Bluetooth requests like these, never on incidental mentions of words such as "pause", "Bluetooth", or "MAP" in ordinary conversation. Configuration lives in ~/.config/paired/paired.conf (phone MAC, adapter, trusted numbers list) and ~/.config/paired/voice.conf (voice cloning config, only if voice features are enabled). Always read the config before acting; never hardcode phone identifiers.
capabilities:
- sends-sms
- places-phone-calls
- reads-sms
- reads-contacts
- reads-clipboard
- controls-mobile-device-via-adb
- unlocks-mobile-device-with-stored-pin
- bluetooth-pairing-agent
- relays-to-external-channel-telegram
- executes-sudo-commands
- persistent-systemd-services
- synthesises-cloned-voice
- runs-local-docker-services
requires:
config:
- path: ~/.config/paired/paired.conf
purpose: phone MAC, adapter, trusted numbers list
- path: ~/.config/paired/trusted-numbers.conf
purpose: allowlist for high-impact outgoing actions (calls, SMS sends)
- path: ~/.config/paired/pin
purpose: phone unlock PIN (mode 0600 enforced) — OPTIONAL, only if --auto-unlock used
sensitive: true
- path: ~/.config/paired/gemini-keys.conf
purpose: Gemini API key(s) for paired-respond — OPTIONAL, only if SMS LLM auto-reply is enabled (mode 0600 enforced)
sensitive: true
- path: ~/.config/paired/voice.conf
purpose: voice cloning config (VoxCPM2/XTTS URLs, reference WAV path, word-clips dir) — OPTIONAL, only if voice cloning is used
- path: ~/.config/paired/voice/reference.wav
purpose: user-recorded voice reference for cloning — OPTIONAL, generated by paired-voice-setup.py
sensitive: true
- path: ~/.config/paired/voice/word-clips/
purpose: pre-recorded word clips for splicing — OPTIONAL
- path: ~/.config/paired/inbox.key
purpose: HMAC secret for paired-inbox-hook command dispatch (mode 0600 enforced) — generated by `paired-inbox-hook --keygen`
sensitive: _meta.json
{
"ownerId": "kn75wmg9n12pjn92x60r99d04983gkgd",
"slug": "paired",
"version": "2.4.1",
"publishedAt": 1791294173148
}CHANGELOG-v2.0.0.md
# Paired: Phone Agent — v2.0.0 — Voice cloning release **Release date:** 2026-05-17 **Theme:** The skill grew up. v1 was "pair my Bluetooth headset." v2.0.0 is "give my agent a body — phone, voice, and all." The name has been refined to **Paired: Phone Agent** in all public-facing documentation to reflect the actual scope of what the skill does. The ClawHub slug `paired` is unchanged so existing installs continue to work seamlessly. --- ## Major changes ### Added — voice cloning subsystem Paired now optionally clones the user's own voice for all synthesised speech, with privacy-first design: no cloud calls, no upstream training data, all weights local. * `skill/voice/paired-voice-synth.py` — TTS wrapper with 4-level fallback ladder * `skill/engines/voxcpm-server.py` + `voxcpm.Dockerfile` — VoxCPM2 HTTP service (primary engine) * `skill/engines/xtts.Dockerfile` — XTTS v2 HTTP service (fallback) * `skill/setup/paired-voice-setup.py` — guided 5-minute training flow * `skill/config-templates/voice.conf.example` — config template ### Added — word-level audio splicing Pre-recorded clips of specific words (typically the user's name, family names, brand names) are spliced into synthesised output for 100% accurate pronunciation. Drop WAV files into `~/.config/paired/voice/word-clips/`; the synth wrapper detects matches at word boundaries (case-insensitive). Solves the universal "AI mispronounces my name" problem permanently. Your name is now pronounced by you, every time. ### Added — 30-language multilingual Via VoxCPM2: auto-detected language support across 30 languages from input text. No flag needed. Supported languages: Arabic, Burmese, Chinese, Danish, Dutch, English, Finnish, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Khmer, Korean, Lao, Malay, Norwegian, Polish, Portuguese, Russian, Spanish, Swahili, Swedish, Tagalog, Thai, Turkish, Vietnamese. ### Added — long-form chunking The synth wrapper splits long text at sentence boundaries before calling the cloning engine, avoiding the ~400-token soft limit and GPU OOM seen on 1500+ character inputs. Concatenation is gap-free; listeners cannot hear the joins. Tested at 2-minute voice notes; scales cleanly to 10+ minutes. ### Added — public documentation * `README.md` (top level) — rewritten for the v2.0.0 "Paired: Phone Agent" identity * `skill/docs/VOICE-SETUP.md` — full voice setup, troubleshooting, multilingual * `skill/marketing/README-marketing.md` — long-form public pitch * `skill/THIRD_PARTY.md` — full attribution for all bundled and runtime dependencies --- ## Unchanged All v1.x functionality is preserved exactly as it was: BlueZ pairing, ADB control, SMS receive (MAP/MNS), SMS send (ADB autosend), outgoing calls (HFP), incoming-call alerts, contacts pull (PBAP), media control (AVRCP), file transfer (OBEX), PAN tethering, trusted-numbers allowlist, HMAC-signed inbox command dispatch, mode 0600 secret-file enforcement. v2.0.0 is strictly additive. --
docs/VOICE-SETUP.md
# Voice Cloning Setup for paired v2.0.0 `paired` v2.0.0 introduces optional voice cloning so the agent can speak with your own voice — for SMS-to-voice dictation, voice notes on Telegram, and live phone replies through your paired device. ## Privacy first - **Your voice never leaves your hardware.** All synthesis runs locally on your GPU (or CPU fallback). - **Nothing is bundled with this skill.** The reference WAV and splice clips you record stay in `~/.config/paired/voice/`. - **No cloud calls.** Models are downloaded once from HuggingFace, then run offline. - **No training data is shipped upstream.** ## Hardware | Setup | Quality | Speed | |-------|---------|-------| | High-end consumer GPU (16GB+ VRAM, recommended) | 48kHz studio (VoxCPM2) | 5-10s per minute of speech | | Mid-range GPU (8-12GB VRAM) | 48kHz studio (VoxCPM2) | 10-20s per minute | | Entry GPU (4-6GB VRAM) | 24kHz (XTTS only) | 5-15s per minute | | CPU only | 24kHz (XTTS) | 1-5 minutes per minute (slow) | | No model server | Generic neural (piper) | <1s — no cloning | ## Quick start (assuming Docker + NVIDIA GPU) ### 1. Build and run the VoxCPM2 service ```bash cd skill/engines # the .txt suffix on voxcpm.Dockerfile.txt is a ClawHub packaging convention; docker build -f accepts any filename docker build -t paired-voxcpm:latest -f voxcpm.Dockerfile.txt . mkdir -p ~/.config/paired/voice/word-clips docker run -d \ --name paired-voxcpm \ --gpus all \ --restart unless-stopped \ -p 8056:8056 \ -v ~/.config/paired/voice:/refs \ -v paired-hf-cache:/root/.cache/huggingface \ paired-voxcpm:latest ``` First run downloads ~5GB of model weights from HuggingFace (one-time). ### 2. Record your reference voice ```bash python3 skill/setup/paired-voice-setup.py reference ``` You will be prompted to read 6 phrases. Takes about 5 minutes. Quiet room, same mic distance for every phrase. ### 3. (Optional) Record splice clips for tricky words If you have an unusual name or word the model mispronounces, record it yourself: ```bash python3 skill/setup/paired-voice-setup.py word myname ``` The clip lives in `~/.config/paired/voice/word-clips/myname.wav`. The synth wrapper splices it whenever the text contains "myname" (case-insensitive, whole-word). You can add as many splice words as you like. ### 4. Test ```bash python3 skill/voice/paired-voice-synth.py "Hello, this is my cloned voice." /tmp/test.wav mpg123 /tmp/test.wav # or aplay ``` ### 5. Wire into paired Edit `~/.config/paired/voice.conf` to confirm paths. The paired-respond wrapper picks up the config automatically. ## CPU fallback (no GPU) The same Docker container runs on CPU. Expect 1-5 minutes generation per minute of audio. Useful for offline / low-power setups. ## Multilingual VoxCPM2 auto-detects language from input text across 30 languages: > Arabic, Burmese, Chinese, Danish, Dutch, English, Finnish, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Khmer, Korean, Lao, Malay,
marketing/README-marketing.md
# Paired: Phone Agent **Give your AI agent a body. Use the phone in your pocket.** > *Your assistant can already answer questions. Now it can answer calls, send texts, read your notifications, and speak in your own voice — all through the phone you already own.* --- ## The pitch in one screen Today, when an AI agent needs to "do something in the real world," it almost always means renting infrastructure: * A Twilio number to send an SMS * A Vapi/Bland account to make a phone call * An ElevenLabs subscription for a voice * A cloud TTS bill that grows with every notification You end up with **three monthly subscriptions, a stack of API keys, and a robot voice that isn't yours** — just to do what the phone on your desk already does. **Paired: Phone Agent** takes the other path. It bridges your OpenClaw agent to your **own** phone over Bluetooth and ADB, and now in v2.0.0 it adds **on-device voice cloning** so the agent speaks with **your** voice. No second SIM. No rented number. No cloud TTS. Your existing phone, your existing number, your existing voice — driven by an agent that knows your context. --- ## What you can actually do Once installed and paired, your agent gets these commands. They run against the phone in your pocket, on your carrier, with your number on the caller ID. | Command | What it does | Uses | |---------|--------------|------| | `/sms send "Tell mum I will be late"` | Sends a real SMS from your phone | ADB | | `/sms read` | Pulls your unread texts into the agent context | MAP profile | | `/call dial 0123...` | Places a real phone call through your carrier | HFP profile | | `/call answer` | Picks up an incoming call | HFP profile | | `/say "Hello from your agent"` | Speaks through the phone over BT — generic neural voice | piper | | `/voice "Hi, this is me"` ⭐ NEW v2.0.0 | Speaks **in your cloned voice** at 48kHz studio quality | VoxCPM2 | | `/contacts find "John"` | Searches your phone contacts | PBAP profile | | `/media play / pause / next` | Controls whatever music app is open | AVRCP profile | | `/file send report.pdf` | Pushes a file to your phone | OBEX | | `/tether on` | Brings up phone-as-router | PAN/NAP | Inbound is just as alive — incoming SMS, missed calls, and notifications get bridged to OpenClaw automatically so your agent can react to them in real time. --- ## What is new in v2.0.0 ### The agent now sounds like you Five minutes of you reading six sentences is enough to clone your voice. From that moment on, every voice note your agent sends, every line it speaks over Bluetooth, every reply it dictates back through your phone — all of it goes out in **your** voice. > A voice note from your agent sounds like **you** — a faithful clone of your own voice rather than a stock robot. Use it for your own communications, and always let recipients know a message was AI-generated in your voice. Paired is not for impersonation. ### Word-level audio splicing A small but huge detail: voice-cloning models ro
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/nj070574-gif/skills/paired",
"sourceUrl": "https://clawhub.ai/nj070574-gif/skills/paired",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T17:29:21.122Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-nj070574-gif-paired/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-nj070574-gif-paired/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-10T17:29:21.122Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.3K downloads",
"href": "https://clawhub.ai/nj070574-gif/paired",
"sourceUrl": "https://clawhub.ai/nj070574-gif/paired",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T17:29:21.122Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "2.4.1",
"href": "https://clawhub.ai/nj070574-gif/paired",
"sourceUrl": "https://clawhub.ai/nj070574-gif/paired",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-06T13:42:53.148Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-nj070574-gif-paired/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-nj070574-gif-paired/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 2.4.1",
"description": "v2.4.1 (docs-only): SKILL.md + README now make it explicit that the powerful behaviours are intentional, disclosed features (capability/control table); the Needs-review badge reflects capability, not a defect. No code or behaviour change.",
"href": "https://clawhub.ai/nj070574-gif/paired",
"sourceUrl": "https://clawhub.ai/nj070574-gif/paired",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-06T13:42:53.148Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
