twring

mcp
Security Audit
Warn
Health Warn
  • License — License: NOASSERTION
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Pass
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Call the AI agents you already run, and let them call you. A live voice for Claude Code, Codex, Hermes and Gemini CLI: iPhone and Android app, self-hostable server.

README.md
Twring logo

Twring

Bring any agent brain. Get the voice.

Call the AI agents you already run from your phone, and let them call you back.

Your agent keeps its own model, memory and tools. Twring adds the call.

License: AGPL-3.0 and Apache-2.0
Platforms
Self-hostable
TypeScript
DCO

Website  · 
Run your own server  · 
Connect an AI app  · 
Docs  · 
Discussions


Twring in 30 seconds: call your agent, talk naturally, and it calls you when a job is done or needs your OK

Twring in 30 seconds. Click for the full film.


Why Twring

Your agents are working. Why are you still watching them?

Talk to the agent you already run Press Call and talk to Hermes, Claude Code, Codex, Gemini CLI or any agent with its own web address. Same agent, same memory, same tools.
It rings you when it matters When a job is done or needs your OK, your agent rings your phone, even when it is locked.
A real call, not voice notes Streaming speech both ways, natural turn-taking, and you can interrupt at any moment.
You stay in control Approvals arrive as a question on the call. Say yes or no, or tap. Twring never runs your agent's tools for it.

How it works

flowchart LR
    you(["You<br/>Twring app"]) <-->|live audio| room["Call room<br/>(LiveKit)"]
    room <--> gw["Twring gateway"]
    gw -->|your words| agent(["Your agent<br/>its own model, memory, tools"])
    agent -->|its reply, streamed| gw
    gw <-.->|speech to text| stt["Deepgram / xAI"]
    gw <-.->|text to speech| tts["Cartesia / Deepgram / xAI"]

Voice is input and output, not intelligence. Twring turns your speech into text for your agent and its reply into speech for you, handles turn-taking and interruptions, and keeps the call alive across network changes. Everything your agent decides and does stays with your agent.

Get started

Use Twring's service  (nothing to run)
  1. Get an invite at twring.com and install the app (iPhone through TestFlight, Android from the download link).
  2. Sign in, then connect your agent: the app shows the one command to run on the computer where your agent lives.
  3. Press Call.
Bring your own speech account  (Deepgram, Cartesia or xAI)

Use Twring's service with your own speech provider: in the app, open Settings, AI apps, Your own voice accounts and add your key. Twring checks it with the provider before saving, keeps it encrypted on the server, and never puts it in the app.

Run your own server  (one command)

Run Twring next to your agents on your own Linux machine or VPS, with your own speech account:

curl -fsSL https://twring.com/install.sh | sudo sh

Then pair the app by scanning the code it shows. Your chats and files stay on your server. The full guide: twring.com/self-hosting/guide.

Connect Claude, ChatGPT or another AI app

AI chat apps can't take calls, but they can ring you and message you in Twring. Add Twring as a custom connector in the app's settings: the steps are at twring.com/connector.

Works with

Agents: Hermes, Claude Code, Codex, Gemini CLI, and any agent you can reach at its own web address.

AI apps: Claude, ChatGPT and other apps that accept a custom connector.

Speech: Deepgram, Cartesia and xAI (Grok voices).

Phones: iPhone and Android, built from one React Native codebase.

Built on these rules

  • Voice is I/O, not intelligence. The connected agent does the thinking.
  • Twring never calls your agent's tools. Your agent calls its own.
  • No provider secret in the app. Keys stay on the server.
  • Streaming by default. Partial speech drives the screen; the agent's text is spoken as it arrives.
  • Interruptions come first. When you speak over your agent, its voice stops at once.

The full set, and every decision behind it, is in docs/DECISIONS.md.

What is in this repository

Repository map
Folder What it is
apps/gateway The server: calls, agents, chats, rings, self-hosted mode
apps/relay The ring relay that wakes a locked phone for self-hosted servers
apps/mobile The phone app (Expo, React Native)
apps/connector The tool that links an agent's computer to Twring
apps/site twring.com
deploy/selfhost The self-host kit: installer, twring command, compose files
packages/ Shared contracts, config, agent adapters and push
skills/twring The agent skill: how an agent behaves on a Twring call
docs/ Product, architecture, voice, security and decisions
Develop
corepack enable
pnpm install
pnpm typecheck && pnpm lint && pnpm test

Start with CLAUDE.md and docs/ARCHITECTURE.md. Setup, keys and device testing: docs/DEVELOPMENT.md.

Contributing

Questions and ideas are welcome in Discussions. Found a bug? Open an issue. Pull requests are welcome too: read CONTRIBUTING.md first. Every commit needs a sign-off (git commit -s).

Found a security problem? Please don't open an issue: see SECURITY.md.

License

The server, relay and self-host kit are AGPL-3.0; the app, the computer tool and everything else are Apache-2.0. Details: LICENSE.md. The Twring name and logo: TRADEMARKS.md.

Reviews (0)

No results found