Skip to content

Repository files navigation

AgentCall application icon

AgentCall

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.

Verify status AgentCall v1.0.0 Hardware-qualified AGPL 3.0

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.

Overview

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

Qualified configuration

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

Quick start

  1. Download the desktop package and one Android installation artifact from AgentCall Releases.
  2. Verify the downloaded files against SHA256SUMS.
  3. Install either the standalone APK or the matched Magisk module—never both.
  4. Select AgentCall as Android's default Phone application.
  5. Install AgentCall Desktop, connect one authorized USB phone, and press Connect desktop in the Android app.
  6. 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.

Architecture

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"]
Loading

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.

Agent and speech integrations

Hermes Agent
Hermes Agent
Local reasoning and call control
OpenClaw
OpenClaw
Local reasoning and call control
OpenAI
OpenAI
Realtime transcription and speech
ElevenLabs
ElevenLabs
Realtime transcription and speech
Supertonic
Supertonic
Local text to speech

Application Tour

Screenshots use fictional sample data. Click any image to open its original, lossless PNG from the screenshots/ directory.

AgentCall Desktop

AgentCall Desktop call history with fictional sample data
Calls — synchronized history and one-click calling
AgentCall Desktop contacts with fictional sample data
Contacts — searchable local phone mirror
AgentCall Desktop Live Call workspace
Live Call — place and control cellular calls
AgentCall Desktop Android connection health
Android connection — authenticated USB and recording health
AgentCall Desktop speech provider configuration
Speech — provider, model, language, and voice
AgentCall Desktop Hermes and OpenClaw MCP integration
Agent integrations — local Hermes and OpenClaw setup
AgentCall Desktop recording player and synchronization
Recordings — play, export, and synchronize finalized calls
AgentCall Desktop receptionist and synchronization settings
Settings — AI receptionist context and phone synchronization
AgentCall Desktop call and privacy policy
Policy — call, recording, privacy, and provider protections

AgentCall for Android

AgentCall Android recent calls with fictional sample data
Recents — cellular call history
AgentCall Android contacts with fictional sample data
Contacts — saved names and one-tap calls
AgentCall Android rounded phone keypad
Keypad — native cellular dialing
AgentCall Android desktop pairing and system readiness
Gateway — pairing and device readiness
AgentCall Android in-app recording player
Recordings — playback, save, and deletion

Release downloads

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 SHA256SUMS

On Windows, compare each result with its line in SHA256SUMS:

Get-FileHash -Algorithm SHA256 .\agentcall-desktop-1.0.0-x64-setup.exe

Installation

1. Install Android

Requirements:

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

Qualified Magisk module

  1. Copy AgentCall-privileged-1.0.0-332-magisk.zip to the phone.
  2. Review and install it from Magisk.
  3. Require a successful installer result and reboot.
  4. Open AgentCall and select it as the default Phone application.
  5. Do not install the standalone APK beside the module.

Ordinary APK

Use the APK for UI or development validation without protected telephony audio:

adb install AgentCall-1.0.0-332.apk

Verify 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.DIALER

The expected package is com.callagent.gateway, version 1.0.0 (332), and the dialer role must name AgentCall.

2. Install AgentCall Desktop

Windows

  1. Run agentcall-desktop-1.0.0-x64-setup.exe.
  2. Choose the installation directory and finish setup.
  3. 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.

Debian or Ubuntu

sudo apt install ./agentcall-desktop-1.0.0-amd64.deb
sudo apt install adb ffmpeg python3

Verify the installed service and recording path:

sudo systemctl status agentcall-gatewayd
sudo agentcall-health
sudo agentcall-recorder-health

Launch the desktop from the application menu or run:

agentcall-desktop

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

3. Connect the phone

  1. Connect exactly one phone over physical USB.
  2. Review and approve Android's USB-debugging prompt for this computer.
  3. Open AgentCall on Android and press Connect desktop.
  4. Wait for both applications to show the phone as authenticated and ready.
  5. Confirm recording health before placing or answering a call.

For upgrades, rollback, troubleshooting, and uninstall instructions, use the complete installation guide.

Speech configuration

Open AgentCall Desktop → Speech.

  1. Select an STT provider and model.
  2. Select a TTS provider, model, language, and voice.
  3. Enter the provider key when required.
  4. Save the configuration.
  5. 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.

Hermes / OpenClaw MCP

AgentCall exposes MCP 2024-11-05 over local stdio. It does not expose a network MCP endpoint.

Add AgentCall to Hermes or OpenClaw

On Linux, add the local MCP launcher to Hermes:

hermes mcp add agentcall --command /usr/bin/agentcall-mcp
hermes mcp test agentcall
hermes mcp list

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

Calling modes

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.

Recordings and phone data

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

Security model

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

Build and verification

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

verify.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/ui

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

Project status

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.

Contributing

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.

Acknowledgements

The qualified POCO M2 Pro path is possible because of:

  • the POCO M2 Pro / Xiaomi miatoll Android community, including the LineageOS miatoll device tree;
  • Xiaomi's published gram-q-oss kernel 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.

License

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.

About

Let your AI make real phone calls from your own phone . Cellular call gateway for Android, Windows, Linux, Hermes, and OpenClaw.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages