Angaros
Open source · MCP server · Android

Your phone, for your AI agents.

Give Claude, Hermes, Codex, Cursor or any MCP client your phone's SMS, contacts and call log, and let them text on your behalf, through a relay that only ever sees ciphertext.

MIT licensed · self-hosted on Cloudflare's free tier · no account, no root, no open ports

Messages screen with a one-tap OTP code, synthetic data Sends screen with a verified audit record, synthetic data

Screens are synthetic renderings of the real app with invented names, fictional numbers and made-up messages.

Angaros was the royal courier of the Achaemenid Persians. The Greeks borrowed the word as angelos, messenger, the root of angel. “Neither snow nor rain nor heat nor gloom of night stays these couriers,” wrote Herodotus. This one carries your messages, and cannot read them.

What your agent gets

Every message, searchable

Full SMS history in a local SQLite with full-text search that normalises Persian, Arabic and English.

One-time codes

otp_wait blocks until a new code arrives. No more reading digits off the lock screen.

Accountable sending

Dry runs, idempotency keys, and a hash-chained log of every SMS sent, on both devices.

Contacts and calls

Names resolved everywhere, missed calls, per-person history.

Automations

YAML rules on SMS, calls, sends or a schedule: webhooks, notes, replies, LLM digests.

Four ways in

22 MCP tools, a JSON CLI, a Python SDK and a local REST + SSE API.

Quick start

Deploy your relay

pip install "git+https://github.com/Mahdi-mortazavi/angaros#subdirectory=pc"
git clone https://github.com/Mahdi-mortazavi/angaros && cd angaros/worker
npx wrangler@4 login
npx wrangler@4 d1 create angaros            # paste database_id into wrangler.toml
npx wrangler@4 d1 migrations apply angaros --remote
angaros master | npx wrangler@4 secret put PAIR_MASTER
npx wrangler@4 deploy

Install the app and pair

angaros pair --worker https://angaros.<you>.workers.dev   # shows a QR code

Install the APK from the latest release, grant the permissions, allow background use, scan the code.

Connect your agent

claude mcp add phone --scope user -- angaros-mcp     # Claude Code
hermes mcp add phone --command angaros-mcp           # Hermes

Codex, Cursor, Gemini CLI, OpenCode and HTTP clients: docs/AGENTS.md.

How it works

1 · Sealed on the phone

AES-256-GCM with a key that exists only on your phone and your computer, bound to device and direction.

2 · A blind mailbox

Your Cloudflare Worker stores ciphertext for at most 7 days. About 100 lines; it cannot decrypt.

3 · Opened on your computer

Decrypted into a local database your agents query. Both ends poll outward: no open ports.

Security, plainly

The relay seesa device id, encrypted blobs, their sizes and times, IP addresses
The relay never seesmessage text, numbers, names, contacts, which command was sent
Prompt injectionSMS text is marked untrusted, never pasted into shell commands or LLM prompts; agent-added rules cannot run programs or send SMS unless you allow it
Sharp edgesthe key is not hardware-backed; phone.db is plaintext on your disk; tested on one phone so far

Full threat model: SECURITY.md · measured performance: docs/performance.md