Private, USB-only cellular calling for local AI agents.
Turn a rooted Android phone into a secure voice endpoint for Hermes, OpenClaw, and Human Desktop Operators.
Download · Installation · Architecture · MCP guide · Security
Important
AgentCall v1.0.0 is the first hardware-qualified release for the Xiaomi POCO M2 Pro reference setup. The Android APK and matched Magisk module use the protected AgentCall production signing identity. The Windows installer is not Authenticode signed, and the Debian package is not distributed through a signed repository. Read the release status before installing the privileged Android module.
AgentCall connects an Android default-dialer application to a Windows or Linux desktop through one authenticated USB cable. It supports real cellular calls, PC microphone and speaker mode, realtime STT/TTS, local recordings, phone-data synchronization, and semantic call control from Hermes or OpenClaw over MCP.
| Capability | What AgentCall provides |
|---|---|
| Real cellular calling | Incoming and outgoing calls through the phone's SIM—no VoIP account required |
| Local agent control | A local stdio MCP server for Hermes and OpenClaw |
| Realtime voice | OpenAI or ElevenLabs STT with ElevenLabs, OpenAI, or local Supertonic TTS |
| Human desktop mode | Talk through the PC microphone and speakers |
| Private phone data | Local contacts, call history, recordings, and consent-bound caller context |
| Fail-closed operation | Calls stop at policy, identity, recording, or provider-health failures |
| Component | Current support |
|---|---|
| Android application | Android 8.0 / API 26 or newer |
| Privileged reference phone | Xiaomi POCO M2 Pro (gram, Qualcomm atoll), tested Android 15 / API 35, Magisk 30.7, SELinux Enforcing |
| Desktop | Windows 10/11 x86-64 or Debian/Ubuntu-compatible x86-64 Linux |
| Connection | One physical USB phone through an authorized ADB host |
| Local agents | Hermes Agent or OpenClaw through MCP 2024-11-05 over stdio |
| Speech | OpenAI, ElevenLabs, and local Supertonic provider paths |
Other Android devices must pass the fail-closed device-porting process before protected telephony audio is enabled.
Contents
- Download the desktop package and one Android installation artifact from AgentCall Releases.
- Verify the downloaded files against
SHA256SUMS. - Install either the standalone APK or the matched Magisk module—never both.
- Select AgentCall as Android's default Phone application.
- Install AgentCall Desktop, connect one authorized USB phone, and press Connect desktop in the Android app.
- Configure speech under Speech, then copy the OS-specific MCP command from MCP if Hermes or OpenClaw will operate calls.
Warning
Disable BCR or any other call recorder before hardware testing. Two applications competing for Android's in-call capture device can produce silent or unstable audio.
flowchart LR
Network["Cellular network"] <--> Phone["AgentCall Android<br/>Default dialer and telephony audio"]
Phone <-->|"Authenticated G2 control and PCM<br/>over USB + ADB forwarding"| Gateway["AgentCall gateway<br/>Policy, recording, STT/TTS, phone data"]
Gateway <--> Desktop["AgentCall Desktop<br/>Human controls and local playback"]
Gateway <--> MCP["agentcall-mcp<br/>Local stdio only"]
MCP <--> Agents["Hermes / OpenClaw"]
Gateway <--> Speech["OpenAI / ElevenLabs<br/>Local Supertonic"]
The supported runtime has no SIP, RTP, Asterisk, STUN, LAN call listener, Wi-Fi phone transport, or remote MCP endpoint. Android listens on loopback, the gateway owns the ADB forward, and desktop/MCP clients use bounded local interfaces. See the full architecture and threat model.
Screenshots use fictional sample data. Click any image to open its original,
lossless PNG from the screenshots/ directory.
![]() Recents — cellular call history |
![]() Contacts — saved names and one-tap calls |
![]() Keypad — native cellular dialing |
![]() Gateway — pairing and device readiness |
![]() Recordings — playback, save, and deletion |
Download the current files from AgentCall v1.0.0.
| Asset | Use |
|---|---|
agentcall-desktop-1.0.0-x64-setup.exe |
Windows 10/11 x86-64 desktop, managed gateway, ADB, and FFmpeg |
agentcall-desktop-1.0.0-amd64.deb |
Debian/Ubuntu x86-64 desktop, gateway service, MCP launcher, and recovery tools |
AgentCall-privileged-1.0.0-332-magisk.zip |
Qualified rooted-phone path; includes the matched APK and protected permissions |
AgentCall-1.0.0-332.apk |
Ordinary Android UI/development installation without protected telephony audio |
SHA256SUMS |
SHA-256 checksums for release files |
ARTIFACT-STATUS.txt |
Android qualification and signing classification |
ANDROID-ROLLBACK-MANIFEST.txt |
Android rollback evidence |
On Linux, verify the files you downloaded:
sha256sum --ignore-missing -c SHA256SUMSOn Windows, compare each result with its line in SHA256SUMS:
Get-FileHash -Algorithm SHA256 .\agentcall-desktop-1.0.0-x64-setup.exeRequirements:
- a dedicated phone with an active SIM;
- USB debugging enabled;
- AgentCall selected as the default Phone application;
- Magisk for the privileged full-duplex path.
Choose exactly one Android installation method.
- Copy
AgentCall-privileged-1.0.0-332-magisk.zipto the phone. - Review and install it from Magisk.
- Require a successful installer result and reboot.
- Open AgentCall and select it as the default Phone application.
- Do not install the standalone APK beside the module.
Use the APK for UI or development validation without protected telephony audio:
adb install AgentCall-1.0.0-332.apkVerify the installed state:
adb shell pm path com.callagent.gateway
adb shell dumpsys package com.callagent.gateway
adb shell cmd role get-role-holders android.app.role.DIALERThe expected package is com.callagent.gateway, version 1.0.0 (332), and
the dialer role must name AgentCall.
- Run
agentcall-desktop-1.0.0-x64-setup.exe. - Choose the installation directory and finish setup.
- Open AgentCall Desktop from Start or its desktop shortcut.
The Windows package supervises its local gateway and includes the required ADB and FFmpeg tools. Provider keys and recordings remain in the current Windows user's application-data directory.
sudo apt install ./agentcall-desktop-1.0.0-amd64.deb
sudo apt install adb ffmpeg python3Verify the installed service and recording path:
sudo systemctl status agentcall-gatewayd
sudo agentcall-health
sudo agentcall-recorder-healthLaunch the desktop from the application menu or run:
agentcall-desktopLinux service names and state paths retain the agentcall identifier for safe
upgrades from earlier builds. They are stable internal compatibility names,
not the product name shown to users.
- Connect exactly one phone over physical USB.
- Review and approve Android's USB-debugging prompt for this computer.
- Open AgentCall on Android and press Connect desktop.
- Wait for both applications to show the phone as authenticated and ready.
- Confirm recording health before placing or answering a call.
For upgrades, rollback, troubleshooting, and uninstall instructions, use the complete installation guide.
Open AgentCall Desktop → Speech.
- Select an STT provider and model.
- Select a TTS provider, model, language, and voice.
- Enter the provider key when required.
- Save the configuration.
- Run the provider test and complete speech-pair test.
| Function | Supported providers |
|---|---|
| Speech to text | OpenAI realtime transcription, ElevenLabs Scribe realtime |
| Text to speech | ElevenLabs streaming TTS, OpenAI TTS, local Supertonic |
Provider keys are write-only: the desktop renderer and MCP server cannot read them back. Changing the TTS provider, model, voice, or language invalidates the prepared-audio cache and regenerates openings in the new voice.
Linux administrators may configure /etc/agentcall/gateway.env directly. Keep
it owned by root:agentcall, mode 0640, and never place provider keys in Git,
MCP configuration, screenshots, or command arguments. See the
provider contract.
AgentCall exposes MCP 2024-11-05 over local stdio. It does not expose a
network MCP endpoint.
On Linux, add the local MCP launcher to Hermes:
hermes mcp add agentcall --command /usr/bin/agentcall-mcp
hermes mcp test agentcall
hermes mcp listOpenClaw uses the same launcher. On Windows, open
AgentCall Desktop → MCP and copy the displayed agentcall-mcp.cmd path
into Hermes or OpenClaw. AgentCall MCP is local stdio—do not add a network URL.
The semantic tools are:
status · capabilities · wait_for_incoming_call · wait_for_turn ·
dial · prepare_speech · answer · reject · hangup · send_dtmf ·
speak
AgentCall prepares openings and likely replies before a call, then keeps live conversation context, handles interruptions, and closes naturally. Incoming AI pickup reuses time-aware prepared speech; changing its instructions or TTS voice refreshes that audio automatically.
Canonical MCP resources use the agentcall:// namespace.
See the MCP guide for schemas and lifecycle rules and the voice-mode guide for production conversation and latency behavior.
| Mode | Operation |
|---|---|
| Human-operated | Start or answer from the desktop, then select Use PC microphone and speakers |
| Agent outgoing | Ask Hermes/OpenClaw to call with an objective and relevant context |
| AI incoming receptionist | Enable AI answers incoming calls and save the context/instructions in Settings |
Agent-managed calls have a five-minute maximum. Emergency numbers are always blocked. Outgoing calls remain subject to local approval, strict E.164 validation, consent, recording health, policy, cooldown, and rate limits.
- Contacts and call history synchronize privately from the connected phone.
- Calls are stored locally as separate remote and agent tracks plus a mixed conversation artifact.
- Desktop and Android provide in-app playback.
- Desktop can export a recording to a user-selected location.
- Finalized recordings automatically copy back to Android after capability and integrity checks; failed transfers remain queued for the next authenticated connection.
- Caller memory is local, consent-bound, expiring, and disabled until enabled by the operator.
- Exactly one matched, ADB-authorized phone is accepted.
- Android listens on loopback only; the gateway owns the ADB forward.
- Controller authentication is mutual and replay protected.
- The Electron renderer is sandboxed behind a bounded local bridge.
- MCP exposes semantic JSON rather than PCM, provider keys, raw ADB traffic, contact rows, or unredacted receipts.
- Recording health blocks dial, answer, and DTMF.
- Emergency destinations are always denied.
- Secrets and private identifiers are excluded from logs and screenshots.
Security-sensitive deployments should review the complete threat model and recording controls.
Development requirements include JDK 17, Node.js 20 or newer, Python 3, the Android SDK, ADB, and FFmpeg.
Clone and run the canonical verifier on Linux:
git clone https://github.com/sidinsearch/AgentCall.git
cd AgentCall
./verify.shverify.sh runs Android unit tests, lint, and assembly; gateway and MCP tests;
desktop security and IPC tests; package boundaries; release evidence; and
USB-only production-surface checks. It does not install software, modify a
phone, place a call, or contact paid providers.
Focused checks from the repository root:
./gradlew :app:testDebugUnitTest :app:lintDebug :app:assembleDebug
npm ci --prefix pc/pc-gateway
npm test --prefix pc/pc-gateway
npm run check --prefix pc/pc-gateway
npm ci --prefix pc/pc-gateway/ui
npm test --prefix pc/pc-gateway/ui
npm run check --prefix pc/pc-gateway/uiBuild qualification artifacts:
packaging/android/build-artifacts.sh \
--apk app/build/outputs/apk/debug/app-debug.apk \
--output release/android \
--version-name 1.0.0 \
--version-code 332
packaging/linux/build-unified-desktop-deb.sh \
--output "$PWD/release/desktop"Production Android signing requires an operator-controlled keystore outside
the repository and the guarded
packaging/android/build-production-release.sh workflow.
| Area | Status |
|---|---|
| Automated verification | Android, gateway/MCP, desktop, packaging, and production-boundary gates |
| Physical Android | POCO M2 Pro qualified for authenticated USB, cellular audio, calls, and recording sync |
| Windows desktop | Installed and physically exercised with PC audio, providers, MCP, playback, and export |
| Linux desktop | Installed and physically exercised with UI, providers, MCP, calling, recording, and icon integration |
| Distribution signing | Android qualification signer only; Windows and Debian packages unsigned |
| Broad device support | Not qualified beyond the documented POCO tuple |
See RELEASE_STATUS.md for exact evidence, remaining distribution gates, and the distinction between hardware qualification and broad production distribution.
Contributions are welcome for desktop UI, Android dialer behavior, speech
adapters, MCP clients, tests, documentation, and carefully qualified device
ports. Start with CONTRIBUTING.md, run ./verify.sh, and
state which physical hardware checks were performed.
Never attach real phone numbers, credentials, caller identities, recordings, ADB keys, or provider keys to an issue or pull request.
The qualified POCO M2 Pro path is possible because of:
- the POCO M2 Pro / Xiaomi
miatollAndroid community, including the LineageOS miatoll device tree; - Xiaomi's published
gram-q-osskernel source; - Magisk and its module framework;
- the Android Open Source Project, Android platform tools, FFmpeg, Electron, Node.js, and the dependencies listed by the build manifests.
Agent and speech integrations are built around Hermes Agent, OpenClaw, OpenAI, ElevenLabs, and Supertonic. Their names and artwork identify interoperability only; no endorsement is claimed.
GNU Affero General Public License v3.0 only. See LICENSE and NOTICE. Included components and brand assets retain their own terms; see THIRD_PARTY_NOTICES.md.















