Skip to main content

Run AI coding agents from your phone. Bridges Claude Code, Codex, OpenCode, and Pi to Telegram with interactive permissions, voice notes, and live progress.

Project description

Untether

Telegram bridge for AI coding agents.
Send tasks by voice or text, stream progress live, and approve changes — from your phone, anywhere.

Works with Claude Code · Codex · OpenCode · Pi

CI PyPI Python License

Quick Start · Features · Engines · Commands · Contributing


Your AI coding agents need a terminal, but you don't need to sit at one. Untether runs on your machine and connects your agents to a Telegram bot. Send a task from your phone — by voice or text — and watch your agent work in real time. When it needs permission, tap a button. When it's done, read the result. No desk, no SSH, no screen sharing.


⚡ Quick start

uv tool install untether        # recommended
# or
pipx install untether            # alternative
untether                        # run setup wizard

The wizard creates a Telegram bot, picks your workflow, and connects your chat. Then send a message to your bot:

fix the failing tests in src/auth

That's it. Your agent runs on your machine, streams progress to Telegram, and you can reply to continue the conversation.

Tip: Already have a bot token? Pass it directly: untether --bot-token YOUR_TOKEN


🔄 Upgrading

uv tool upgrade untether        # if installed with uv
# or
pipx upgrade untether            # if installed with pipx

Then restart to apply:

/restart                         # from Telegram (preferred — drains active runs first)
# or
systemctl --user restart untether  # from shell (systemd)

🎯 Features

  • 📡 Progress streaming — watch your agent work in real time; see tool calls, file changes, and elapsed time as they happen
  • 🔐 Interactive permissions — approve plan transitions and clarifying questions with inline buttons; tools auto-execute, with progressive cooldown after "Pause & Outline Plan"
  • 📋 Plan mode — toggle per chat with /planmode; choose full manual approval, auto-approved transitions, or no plan phase
  • 📁 Projects and worktrees — register repos with untether init, target with /myproject @feat/thing, run branches in isolated worktrees in parallel
  • 💰 Cost and usage tracking — per-run and daily budgets, subscription usage in the footer, /usage for detailed breakdowns, optional auto-cancel
  • 🏷 Model and mode metadata — every completed message shows the model and permission mode (e.g. 🏷 sonnet · plan) across all engines
  • 🎙️ Voice notes — dictate tasks instead of typing; Untether transcribes via a configurable Whisper-compatible endpoint
  • 📎 File transfer — upload files to your repo or download results back
  • Scheduled tasks — cron expressions and webhook triggers
  • 💬 Forum topics — map Telegram topics to projects and branches
  • 📤 Session export/export for markdown or JSON transcripts
  • 🗂️ File browser/browse to navigate project files with inline buttons
  • ⚙️ Inline settings/config opens an in-place settings menu; toggle plan mode, verbose, engine, model, reasoning, and trigger with buttons
  • 🧩 Plugin system — extend with custom engines, transports, and commands
  • 💬 Conversation modes — assistant (ongoing chat), workspace (forum topics per project), or handoff (reply-to-continue with terminal resume)

🔌 Supported engines

Engine Install What it's good at
Claude Code npm i -g @anthropic-ai/claude-code Complex refactors, architecture, long context
Codex npm i -g @openai/codex Fast edits, shell commands, quick fixes
OpenCode npm i -g opencode-ai@latest 75+ providers via Models.dev, local models
Pi npm i -g @mariozechner/pi-coding-agent Multi-provider auth, conversational

Note: Use your existing Claude or ChatGPT subscription — no extra API keys needed (unless you want API billing).


🤖 Commands

Command What it does
/cancel Stop the running agent
/agent Show or set the engine for this chat
/model Override the model for an engine
/planmode Toggle plan mode (on/auto/off)
/usage Show API costs for the current session
/export Export session transcript
/browse Browse project files
/new Clear stored sessions
/file put/get Transfer files
/topic Create or bind forum topics
/restart Gracefully restart Untether (drains active runs first)
/verbose Toggle verbose progress mode (show tool details)
/config Interactive settings menu (plan mode, verbose, engine, model, reasoning, trigger)
/ctx Show or update project/branch context
/reasoning Set reasoning level override
/trigger Set group chat trigger mode
/ping Health check / uptime

Prefix any message with /<engine> to pick an engine for that task, or /<project> to target a repo:

/claude /myproject @feat/auth implement OAuth2


⚙️ Configuration

Untether reads ~/.untether/untether.toml. The setup wizard creates this for you, or configure manually:

default_engine = "codex"

[transports.telegram]
bot_token = "123456789:ABC..."
chat_id = 123456789
session_mode = "chat"

[projects.myapp]
path = "~/dev/myapp"
default_engine = "claude"

[cost_budget]
enabled = true
max_cost_per_run = 2.00
max_cost_per_day = 10.00

See the full configuration reference for all options.

Warning: Never commit your untether.toml — it contains your bot token. The default location (~/.untether/) keeps it outside your repos.


📦 Requirements

  • Python 3.12+uv python install 3.14
  • uvcurl -LsSf https://astral.sh/uv/install.sh | sh
  • At least one agent CLI on PATH: codex, claude, opencode, or pi

📖 Engine guides

Detailed setup and usage for each engine:


📚 Documentation

Full documentation is available in the docs/ directory.


🤝 Contributing

Found a bug? Got an idea? Open an issue — we'd love to hear from you.

Want to contribute code? See CONTRIBUTING.md for development setup, testing, and guidelines.


🙏 Acknowledgements

Untether is a fork of takopi by @banteg, which provided the original Telegram-to-Codex bridge. Untether extends it with interactive permission control, multi-engine support, plan mode, cost tracking, and many other features.


📄 Licence

MIT — Made by Little Bear Apps 🐶

Project details


Download files

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

Source Distribution

untether-0.27.1.tar.gz (175.6 kB view details)

Uploaded Source

Built Distribution

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

untether-0.27.1-py3-none-any.whl (229.5 kB view details)

Uploaded Python 3

File details

Details for the file untether-0.27.1.tar.gz.

File metadata

  • Download URL: untether-0.27.1.tar.gz
  • Upload date:
  • Size: 175.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for untether-0.27.1.tar.gz
Algorithm Hash digest
SHA256 91640354044ad3b3aa176e51c0351fb8282c95e1df2809f1bc09013f4fa60ca9
MD5 cc0d23c3a03d2c5e1b5debd692f81375
BLAKE2b-256 c68099cdcab7990d21a9095ab6990fc75c72ed6d0011ae2060e90848db750353

See more details on using hashes here.

Provenance

The following attestation bundles were made for untether-0.27.1.tar.gz:

Publisher: release.yml on littlebearapps/untether

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file untether-0.27.1-py3-none-any.whl.

File metadata

  • Download URL: untether-0.27.1-py3-none-any.whl
  • Upload date:
  • Size: 229.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for untether-0.27.1-py3-none-any.whl
Algorithm Hash digest
SHA256 744218447d2536a7ca6a459a8500a6f21ef6c7ee4d817d18f45f805dd2402d07
MD5 9f0f6ad93aaa2df3aee6ec3e3826a4b4
BLAKE2b-256 89290582bad73c6fad40ac21351fff669d63c6f9c93c9ad36743cf1fec0f1f57

See more details on using hashes here.

Provenance

The following attestation bundles were made for untether-0.27.1-py3-none-any.whl:

Publisher: release.yml on littlebearapps/untether

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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