Skip to main content
Glama

CallRelay

Let your AI assistant make phone calls through an Android phone.

CI Secret scan Platform license Gateway license

Give an assistant a task. Review the brief. Let the voice agent make the call. Get the recording and full transcript back.

CallRelay connects an MCP client, a streaming voice pipeline, Asterisk, and an Android SIM gateway. The dashboard manages calls, contacts, personalities, prompts, and callbacks. CallRelay stores its call history locally. Audio and text go to the voice providers you select. Provider keys stay in server-side settings.

Built on Agent Call and Android Voice SIP Agent, with the platform extensions described below.

Community preview: the software has automated tests, but each new phone installation needs a controlled handset test. Inbound reception starts disabled. No real calls run in the test suite.

The screenshots use fictional contacts and conversations.

Install · Architecture · MCP clients · Contribute · Upstream credits

One brief, one call, a complete record

Call the workshop, reach the service department, and ask when they open tomorrow. Do not book anything.

  1. Your assistant collects missing details and prepares a call plan.

  2. You authorize the call. The service starts that plan once.

  3. The voice agent talks, listens, handles interruptions, and navigates phone menus.

  4. The service returns an MP3 recording and a full Markdown transcript.

A lost start response does not cause a second call. The client can recover the original call by its plan ID.

Related MCP server: PhoneBooth MCP Server

What you can do

Area

Features

Calls

Outbound calls, live transcripts, recordings, notes, tags, search, and downloads

Agent

Shared instructions, reusable personalities, recipient context, dynamic tasks, and version history

Playground

Browser voice or text practice without a telephone call

Phone menus

Keypad digits, extensions, silent hold, and return to a human conversation

Contacts

Related call history, summaries, evidence-linked memory, and owner corrections

Reception

Separate inbound instructions, business facts, intake questions, and caller recognition

Callbacks

Confirmed schedules, one dialing attempt, cancellation, and missed-window tracking

Integrations

MCP tools for Codex, Hermes, and other clients with private network access

Costs

Provider usage and estimates, with clear missing-data states

The voice agent supports English, Spanish, Russian, and Ukrainian. Model and voice choices can change per personality. Saved changes apply to future plans. Prepared and active calls keep their original settings.

How it works

flowchart LR
    Client[Codex / Hermes / MCP client] -->|Prepare and authorize| API[CallRelay service]
    Dashboard[Private dashboard] --> API
    API --> Voice[Pipecat voice pipeline]
    Voice <-->|Audio| PBX[Asterisk]
    PBX <-->|SIP| Phone[Android gateway]
    Phone <-->|Selected SIM| Person[Recipient]
    Voice --> STT[Soniox: speech to text]
    STT --> LLM[OpenRouter: dialogue]
    LLM --> TTS[Inworld: text to speech]
    TTS --> Voice
    API --> Store[(SQLite + recordings)]

MCP is the interface an assistant uses to request and manage a call. SIP carries call signaling and audio between Asterisk and the phone gateway. The selected SIM connects to the normal telephone network.

The main path uses Python, FastAPI, SQLite, React, TypeScript, Pipecat, Asterisk, and Kotlin. It uses your own OpenRouter, Soniox, and Inworld accounts. Twilio and a separate OpenAI account are not required for this path.

The original Twilio/OpenAI backend remains a separate option. See backend choices.

Start here

Explore without a phone

git clone https://github.com/highsierraloft/callrelay.git
cd callrelay
uv sync --extra android --all-groups --frozen
uv run callrelay doctor --dummy

The dummy check uses an isolated evaluation profile. It does not place a call or use provider credentials.

For a container-based API evaluation, run:

docker compose up --build

This evaluation listens on loopback and disables live calls. It does not provide a configured phone dashboard.

Connect your own phone

You need a spare Android phone, an active SIM, a Linux server with USB access, and Tailscale. The phone needs Wi-Fi access to the server and approved USB debugging access. Hardware and Android audio support vary.

uv run python scripts/configure_phone.py

The setup tool asks for your installation details and provider keys. It creates a new private/ directory with restricted permissions. It does not contact a phone, change a firewall, or start services. Existing credentials are never overwritten.

Continue with the installation guide. The guide covers the gateway build, SIM selection, USB access, private dashboard, MCP connection, and acceptance checks.

Clear boundaries

  • One installation has one owner and one active telephone call.

  • The phone uses an explicitly selected SIM. It never falls back to another line.

  • Browser practice cannot dial or update real contacts, memory, opt-outs, or schedules.

  • The supervisor recovers phone control. It never places or answers a call itself.

  • Caller ID helps recognition. It does not authenticate a person.

  • A completed call is not proof that the task succeeded.

  • Provider credentials never enter browser JavaScript.

CallRelay is a calling system, not an emergency service or a bulk-dialing platform. The operator controls contact permission, recording policy, provider accounts, and carrier charges.

Source and operator data stay separate

In this repository

In your ignored private/ directory

Application and gateway source

Provider and SIP credentials

Tests with fictional data

Device identifiers and ADB identity

Portable deployment templates

Phone numbers and installation settings

Synthetic fallback prompts

SQLite records, MP3 files, and transcripts

Documentation and upstream notices

Backups and local logs

This repository contains no production database, signing key, deployment credential, or prior deployment history. The Android app uses its own application ID and signing-property prefix.

Project map

Path

Purpose

app/

Calling service, MCP tools, storage, and voice pipeline

dashboard/

React control panel and browser tests

phone/

Android gateway, with its own GPL license

supervisor/

USB and Shizuku recovery controller

deploy/

Asterisk, proxy, and standalone Compose settings

integrations/

Optional client skills and integration examples

docs/

Installation, architecture, operation, and contributor guides

Built on open source

CallRelay extends Agent Call by XiyaoWang0519 and Android Voice SIP Agent by sparkcyf. It keeps their notices and identifies the added platform features in UPSTREAM.md.

The Python platform and dashboard use the MIT license. The separate Android gateway uses GPL-2.0-or-later, with the upstream Apache-2.0 linking exception. The platform license does not replace the gateway license. See component licenses.

Contribute

Start with CONTRIBUTING.md and the development guide. Report vulnerabilities through the security process.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables AI assistants to make real phone calls on your behalf using VoIP, handling conversations automatically through OpenAI's Real-Time Voice API. Simply tell Claude what you want to accomplish and it will call and manage the entire conversation for you.
    25
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to make real-world phone calls with AI voice technology and provides tools to track call status, transcripts, and summaries. It supports automated communication with both live numbers and simulated businesses for testing and demonstration purposes.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to place real phone calls, navigate IVR trees, and retrieve structured answers with transcripts and recordings.
    MIT