Run your coding agents from anywhere

Untether is a free, open-source Telegram bridge for Claude Code, Codex CLI, OpenCode and Pi. Send a task by text or voice, review the plan, approve tool calls and answer questions from your phone while the agent works on your machine.

uv tool install -U untether

Latest release v0.36.0, 8 October 2026 · Release notes

Untether in Telegram: Claude Code's plan for adding a --days option to a weather app, covering tests, the README and the risks it sees, with Approve Plan, Deny and Let's discuss buttons underneath.

Works with

  • Claude Code
  • Codex CLI
  • OpenCode
  • Pi
  • Antigravity CLIComing soon

Gemini CLI and Amp still run but are deprecated and no longer supported. Antigravity CLI support is planned for v0.36.1.

Everything happens in the chat

Untether turns your agent's work into Telegram messages and buttons, so you can follow along and step in from wherever you are.

Watch it work

Tool calls, file edits and elapsed time stream into the chat while your agent works. When it finishes, the reply shows the model, the cost and the directory it ran in.

Read the progress guide
Untether's status message listing Claude Code's file edits and pytest and ruff runs as they happen, with the elapsed time and step count, and the plan-approved notice below.

Made for working away from your desk

Sessions, projects, schedules and costs stay under control from the chat. Everything works with every supported engine unless it carries an engine badge.

Sessions

Steer or queue
Available with:Claude CodeA message sent mid-run waits for the current turn, or /steer writes it straight into the running session.
Background work stays visible
Available with:Claude CodeWhen work goes to a background task or subagent, the session stays open and each result arrives as its own message.
Resume anywhere
Reply to any message to continue that session, or send /continue to pick up one you started in your terminal.
Reply with context
Reply to a message, or quote part of it, and your agent sees that text alongside your prompt.
Three chat modes
Assistant for an ongoing chat, workspace for a forum topic per project, or handoff for reply-to-continue.
Export and stats
/export saves a transcript as Markdown or JSON. /stats shows runs and time per engine.

Projects and schedules

Safe unattended runs
Available with:Claude CodeCron and webhook runs never wait on a button nobody can tap. Approval requests are denied and listed in the final message.
Scheduled tasks
Run work on a cron schedule or from a webhook, or delay a one-off task with /at 30m. Each cron can pick its own model.
Loop mode
Available with:Claude CodeTurn on Loop mode and Untether runs /loop schedules itself, within the iteration and time limits you set.
Many repos
Register projects with untether init and switch between them from Telegram.
Parallel branches
Target a branch with @branch and the task runs in its own git worktree.
Forum topics
Map Telegram forum topics to projects and branches, one thread per task.

Costs and reliability

Budgets
Available with:Claude CodeOpenCodeSet per-run and daily budgets. Turn on Stop at limit and new runs pause once the daily budget is reached. Other engines show token counts.
Stall diagnostics
When progress stops, Untether tells you what the agent is doing, so you know whether to wait or step in.
Clear errors
API outages, rate limits and billing errors arrive as plain messages with resume steps. Retries and safeguard stops show as their own rows.
Context at a glance
Available with:Claude CodePiCompaction gets its own row instead of looking like a stall. On Claude Code, the status line also shows how full the context window is.
Auto-continue
Available with:Claude CodeIf the agent exits before it handles a tool result, Untether resumes the session for you.
Plugins
Add your own engines, transports and commands. Claude Code plugins can detect Untether sessions through UNTETHER_SESSION.

Runs on your machine, talks through your own bot

Untether runs beside your agents, on your laptop or a server you control. Your messages go to Telegram and straight back to that machine.

  1. Your phoneTelegram, by text or voice
  2. Telegram Bot APIYour own bot, which answers only the user IDs you allow
  3. Your machineUntether and your agent, working in your repo

What Untether reads

  • Your Telegram messages to the bot
  • Your agent's output, to stream progress

What Untether stores

  • Config in ~/.untether/untether.toml
  • Sessions, stats and costs as JSON files in ~/.untether/, with no database
  • Delete ~/.untether/ to remove it all

Where Untether connects

  • The Telegram Bot API (api.telegram.org)
  • Anthropic's usage endpoint, only for /usage or the opt-in usage footer, with your Claude Code login
  • Your transcription service, only if you turn on voice notes
  • URLs you set for webhooks or scheduled fetches, only if you configure them
  • No Little Bear Apps servers

I was walking Normi and had an idea for a fix. By the time I got home and opened my laptop, I'd forgotten half of it. Untether started as a way to send tasks to Claude Code from my phone.

Nathan SchramLittle Bear AppsHow I code on dog walks

What's new in 0.36.0

Released

Live Claude sessions, steerable follow-ups and safer unattended runs

Claude Code sessions now stay live after an answer. Background agents report back in the chat, and you can steer a run while it's working. Unattended crons and webhooks no longer wait on a button nobody can tap, and Codex safe mode is now properly read-only. This release has six breaking changes, so please read Heads up before you upgrade.

Install Untether

You need macOS or Linux, a Telegram account and at least one supported agent. Untether is free and open source under the MIT licence.

  1. Install the package

    Untether installs as a command-line tool with uv, which also fetches a suitable Python if you don't have one.

    uv tool install -U untether

    No uv yet? curl -LsSf https://astral.sh/uv/install.sh | sh installs it. Prefer pipx? pipx install untether works if you already have Python 3.12 or later.

  2. Run the setup wizard

    Start Untether in a terminal. The wizard walks you through creating a Telegram bot with @BotFather, choosing a workflow and connecting your chat.

    untether
  3. Send your first task

    Message your bot by text or voice. Your agent runs on your machine and replies in the chat.

Stuck on a step? The troubleshooting guide covers the common problems, or ask in Q&A on GitHub or report a bug.

Frequently asked questions

No answer here? Ask on GitHub, where you can also suggest a feature or report a bug.

What is Untether?

Untether is a Telegram bridge for AI coding agents. You send tasks by text or voice, watch progress as it happens and approve changes with buttons in the chat. It works with Claude Code, Codex CLI, OpenCode and Pi, and the engine compatibility table shows which features each one supports.

How is it different from Claude Code's Remote Control and Channels?

Both are good choices if Claude Code is the only agent you use. Untether runs Claude Code, Codex CLI, OpenCode and Pi from one Telegram chat. It runs as a background service that knows every project you register, so you can start a task in any of them, or on its own branch, from your phone. Each Remote Control server serves one directory. It drives each agent's own command-line tool, so it works with whatever that tool signs in with, a subscription or an API key. Remote Control needs a Claude subscription, and Channels also accepts a Console API key. Untether also transcribes voice notes, runs cron and webhook triggers with any engine, and on Claude Code and OpenCode can pause new runs once a daily cost budget is reached. The comparison page sets out the differences side by side, with sources.

Isn't this just SSH and tmux from my phone?

That works too, and plenty of people do it. Untether swaps a terminal on a small screen for a chat. Progress arrives as messages, approvals and questions are buttons, you can send a voice note instead of typing, and Telegram notifies you when the agent needs you. There's no VPN, SSH key or port forwarding to set up, because Untether fetches your messages from Telegram.

Does Untether send my code to Little Bear Apps?

No. Messages travel between Telegram and the agent on your machine. Little Bear Apps never sees your code, your messages or your agent's output.

Who can see my messages?

Telegram can. Chats with a bot are ordinary Telegram cloud chats, encrypted in transit but readable by Telegram on its servers, not end-to-end encrypted secret chats. Your agent's provider sees what the agent sends it, as it would in a terminal, and voice notes go to the transcription service you choose. Treat the bot like any other chat and don't paste production secrets into it.

What does it cost?

Untether is free and open source under the MIT licence. You pay for your agent's usage as normal, and the Telegram Bot API is free.

What do I need to run it?

Python 3.12 or later on macOS or Linux, a Telegram account with a bot token from @BotFather, and at least one supported agent installed. The install guide walks through it.

Who can use my bot?

Only the Telegram users you allow. Set allowed_user_ids in untether.toml and the bot ignores messages from anyone else. The security guide covers the rest.

Can I continue a session I started in my terminal?

Yes. Send /continue to pick up a session you started in your terminal. It works with Claude Code, Codex CLI, OpenCode and Pi. You can also reply to any bot message to resume that session. See the cross-environment resume guide.

Can I run several tasks at once?

Yes. Use forum topics or separate project chats to run tasks in parallel. Targeting a branch with @branch runs the task in its own git worktree, so tasks don't get in each other's way. The guides cover forum topics and worktrees.

Does every engine support every feature?

No. Live progress, resuming sessions, voice notes, files, projects and scheduled tasks work with all four supported engines. Plan approval, approval buttons, questions with option buttons, diff preview, background tasks and Loop mode are Claude Code only. The compatibility page lists every difference.

What happened to Gemini CLI and Amp support?

Both engines still ship with Untether and still run, but they are deprecated and no longer supported. They get no bug fixes or testing, and they may be removed in a future release. Google retired Gemini CLI for individual Google accounts on 18 June 2026 and replaced it with Antigravity CLI, and its own antigravity engine is planned for Untether v0.36.1. Amp refuses clients it considers out of date, and Untether doesn't track that update cadence, so a working setup can stop without notice. The status of every engine is on the compatibility page.

Can I cap what my agents spend?

Yes. Set per-run and daily budgets in the [cost_budget] section of untether.toml, then switch them on or off per chat from /config. Turn on Stop at limit and new runs pause once the daily budget is reached, until midnight, with a one-off Run anyway button. Untether also flags an unusually expensive run even with no budget set. See the cost budgets guide.

Can I add another agent?

Yes. The plugin system lets you add your own engines, transports and commands. Start with writing a plugin.