Skip to main content

Multi-session voice web interface for AI coding agents

Project description

AgentWire

Self-hosted, voice-native control for Claude Code — your machine, your keys, no cloud account.

Orchestrate many agents by voice — neural TTS on your CPU, voice cloning via a self-hosted GPU shim.

PyPI PyPI Downloads GitHub Stars Python License


Why AgentWire

Remote access to a coding agent is now table stakes — first-party and hosted tools all let you reach an agent from your phone. AgentWire competes on what those structurally can't match:

  • Self-hosted, keys-local. Runs entirely on your hardware. No cloud account, no third party in the loop, no telemetry — your code and your API keys never leave the machine.
  • Voice-native, not voice-bolted-on. Push-to-talk in, neural TTS out on plain CPU (Kokoro, no GPU). Want your agents to talk back in a cloned voice? Run a self-hosted GPU shim (Chatterbox / Qwen / Zonos) — same machine, still your keys.
  • Built to orchestrate many agents, not watch one. Council (multi-soul deliberation), an overnight scheduler, briefing mode, and worktree-parallel workers — tmux- and Claude-Code-native from the ground up.

Use the official app to watch one session; use AgentWire to orchestrate many, by voice, on your own hardware.


What It Does

Push-to-talk voice control for Claude Code or any AI coding assistant running in tmux.

Phone → AgentWire Portal → tmux session → Claude Code
 🎤        (WebSocket)         📺           🤖

From your phone, tablet, or laptop on your network:

  • Hold to speak, release to send
  • Watch agents work in real-time
  • Hear responses via TTS
  • Manage multiple projects simultaneously

Quick Start

# Install
pip install agentwire-dev

# Setup (interactive)
agentwire init

# Run
agentwire portal start
# Open http://127.0.0.1:8765 in Chrome — voice works immediately

Requirements: Python 3.10+, tmux, ffmpeg, Claude Code

Honest setup time: under a minute to a working voice portal with a genuinely good voice — Kokoro-82M runs on CPU out of the box (one-time ~200 MB model download in the background; the browser voice covers the wait). ~15 minutes for the full experience: cloned voices via a self-hosted TTS shim, Whisper-grade transcription, phone-from-anywhere (certs + token).

Phone / LAN Access

The portal binds to loopback (127.0.0.1) by default. To access the portal from your phone, tablet, or other devices on your local network:

  1. Generate SSL certificates (required for microphone access over non-loopback connections):
    agentwire generate-certs
    
  2. Enable LAN access: set server.host: 0.0.0.0 in ~/.agentwire/config.yaml.
  3. Get your auth token: non-loopback connections require a bearer token. Print it with:
    agentwire portal token
    
  4. Connect: Open https://<your-machine-ip>:8765 on your phone and enter the token when prompted.

Origin checks reject cross-site browser requests on every bind. Keep the portal on a trusted LAN — never port-forward it or run it on a public-facing VPS. For internet access, use Cloudflare Tunnel + Zero Trust. See SECURITY.md for details.

Platform-specific instructions

macOS:

brew install tmux ffmpeg
pip install agentwire-dev

Ubuntu/Debian:

sudo apt install tmux ffmpeg python3-pip python3-venv
python3 -m venv ~/.agentwire-venv && source ~/.agentwire-venv/bin/activate
pip install agentwire-dev

WSL2: Same as Ubuntu. Audio is limited; use as remote worker with portal on Windows host.

tmux config matters. Default tmux has no mouse scroll, a tiny scrollback, and broken copy UX — see Recommended tmux config, or let agentwire init install it for you.


Features

Feature Description
Voice Control Push-to-talk from any device on your network
Neural Voice + Cloning Kokoro neural TTS on CPU out of the box; voice cloning via a self-hosted GPU shim
Council Fan a prompt to multiple "soul" sessions (brain, conscience, critic…), synthesize with attribution
Scheduler Overnight / recurring autonomous tasks with gates, priorities, and usage-limit recovery
Briefing Mode A terse human-facing anchor fans out verbose worktree correspondents, then briefs you on cue
Multi-Session Run multiple agents on different projects simultaneously
Git Worktrees Same project, multiple branches, parallel agents
Remote Machines SSH into GPU servers and talk to agents there
Worker Orchestration Spawn worker panes, coordinate tasks, voice commands
Safety Hooks 300+ dangerous commands blocked (rm -rf, force push, etc.)
Outbound Channels Email (Resend) + SMS (Quo / OpenPhone) for cross-device notifications
Session Roles Leader/worker patterns for multi-agent workflows

How It Works

1. Create a session:

agentwire new -s myproject -p ~/projects/myproject

2. Open the portal: Visit http://127.0.0.1:8765 in Chrome (or your phone/tablet with LAN access configured)

3. Talk: Hold the mic button, speak your request, release. In instant mode the transcript appears for a quick glance — Enter sends it to Claude Code.

4. Listen: Agent responses are spoken back — Kokoro neural voice out of the box, or any TTS model behind a custom shim.


Multi-Agent Orchestration

AgentWire supports orchestrator/worker patterns for complex tasks:

# .agentwire.yml in your project (keep it gitignored — it's personal config,
# and tracked copies break worktree dispatch; agentwire adds it to .gitignore for you)
type: claude-bypass
roles:
  - agentwire
  - voice

Sessions can spawn workers:

agentwire spawn --roles worker  # Creates a worker pane
agentwire send --pane 1 "Implement the auth module"

Workers execute tasks autonomously while the orchestrator coordinates.


Safety

AgentWire blocks dangerous operations before they execute:

  • rm -rf /, git push --force, git reset --hard
  • Cloud CLI destructive ops (AWS, GCP, Firebase, Vercel)
  • Database drops, Redis flushes, container nukes
  • Sensitive file access (.env, SSH keys, credentials)
agentwire safety check "rm -rf /"
# → ✗ BLOCKED: rm with recursive or force flags

agentwire safety status
# → 312 patterns loaded, 47 blocks today

All decisions logged for audit trails.


Voice Configuration

Two tiers, both sides:

default (zero setup, what a fresh install gets): Chrome speech recognition in, Kokoro-82M out — a genuinely good neural voice (top of the TTS Arena at 82M params), 32 preset voices across 8 languages, pure CPU, identical on every OS. The model (~200 MB) downloads in the background on first portal start; browser speechSynthesis covers speech until it's ready (and remains the last-resort fallback). No GPU, no certs, no commands.

custom (bring your own model): any HTTP shim implementing the voice shim contract — ~30 lines wraps anything (Deepgram, whisper.cpp, an expressive emotion-tag model). Voice cloning, GPU engines, emotion control live here. The bundled servers are reference shims:

# ~/.agentwire/config.yaml
tts:
  backend: "custom"
  url: "http://localhost:8100"     # agentwire tts start (kokoro CPU / chatterbox GPU / qwen / zonos)
  options:
    backend: kokoro
stt:
  backend: "custom"
  url: "http://localhost:8101"     # agentwire stt start (moonshine ONNX, CPU)

Shims can declare capabilities (emotion tags, style instructions) via GET /capabilities — agentwire injects the shim's tool_prompt into the agent's say tooldef so agents actually use them.

Prefer text-only?

Instant mode already needs nothing — just don't press the mic. Agent speech plays through the browser; mute the tab (or close it — with no browser connected, speech plays on local speakers, which you can silence at the system level).


CLI Reference

Session Management
agentwire list                    # List sessions
agentwire new -s <name> -p <path> # Create session
agentwire kill -s <name>          # Kill session
agentwire send -s <name> "prompt" # Send to session
agentwire output -s <name>        # Read output
Worker Panes
agentwire spawn --roles worker    # Spawn worker in current session
agentwire send --pane 1 "task"    # Send to worker
agentwire output --pane 1         # Read worker output
agentwire kill --pane 1           # Kill worker
Voice Commands
agentwire say "Hello"             # TTS (auto-routes to browser)
agentwire send -s NAME "Done"     # Inject text into a session
agentwire listen start/stop       # Voice recording
agentwire voiceclone list         # Custom voices
Remote Machines
agentwire machine add gpu --host 10.0.0.5 --user dev
agentwire new -s ml@gpu           # Create session on remote
agentwire tunnels up              # SSH tunnels for services
Safety & Diagnostics
agentwire doctor                  # Auto-diagnose issues
agentwire safety status           # Check protection status
agentwire hooks install           # Install Claude Code hooks
agentwire network status          # Service health check

Documentation

Full reference: docs/wiki/INDEX.md

Quick links:


Community


License

AgentWire is free and open source under the Apache License 2.0 — your machine, your keys, no telemetry.

Free-forever pledge: the tool is free forever. No paid tier, no open-core, no feature paywall. Commercial training & enablement for teams is offered separately by dotdev — the tool itself is never gated.

Contributions are accepted under the Developer Certificate of Origin (a Signed-off-by line), not a CLA.


AgentWire: For people who have better things to do.


Maintained by dotdev. Reach out via email at dev@dotdev.dev or on GitHub @dotdevdotdev.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentwire_dev-1.46.0.tar.gz (32.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentwire_dev-1.46.0-py3-none-any.whl (31.8 MB view details)

Uploaded Python 3

File details

Details for the file agentwire_dev-1.46.0.tar.gz.

File metadata

  • Download URL: agentwire_dev-1.46.0.tar.gz
  • Upload date:
  • Size: 32.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.20

File hashes

Hashes for agentwire_dev-1.46.0.tar.gz
Algorithm Hash digest
SHA256 4b85b2fe0624e4dae37cc28c280c2968c2cec4af9c36b3a3fed220843517d25e
MD5 229cbe7b90a65ddaf56e5755b9feff41
BLAKE2b-256 398dc9a496290df22a0e8519c8ceb2d8da5ee35dff549cda750d1122e5862368

See more details on using hashes here.

File details

Details for the file agentwire_dev-1.46.0-py3-none-any.whl.

File metadata

File hashes

Hashes for agentwire_dev-1.46.0-py3-none-any.whl
Algorithm Hash digest
SHA256 79fdd44aa6e0d010bca0b0035ad308ba9e1409c8da74622e63c47ede4b2d83f1
MD5 a7fe6f52fccaa0471e7e373375b511aa
BLAKE2b-256 a97f4cab4a6f852e691a4e7001ee1369dc37e45aedb5dafafefd1d74c5e0a358

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page