claude-omni-rc

Take your session with you

git clone https://github.com/ontech7/claude-omni-rc && cd claude-omni-rc && ./install.sh

paste this in terminal β€” the installer guides you through the rest, or install manually

…or let your AI agent set it all up:

Set up claude-omni-rc with the Telegram bot and arm remote control

paste this to your AI agent, or read AI-GUIDE.md for what it does step by step

How it works

Claude Code's own /remote-control is disabled the moment your models don't come from Anthropic. This is a local daemon plus a Telegram bot that replaces it β€” no Anthropic account, no open ports.

  1. 1

    Run ./install.sh

    The guided installer checks prerequisites, walks you through your bot token, who may control it and where headless sessions may run, then registers the background daemon.

  2. 2

    Pair & arm

    Open your bot on Telegram, send /start <code>, then /rc on. While disarmed the daemon does nothing at all.

  3. 3

    Keep going from anywhere

    Continue the session you left running β€” a build, a migration, a long review β€” switch between sessions, and approve permissions, all from your phone. Headless sessions work with any model that runs through the Claude Code CLI: Ollama, a proxy, or Claude itself.

Telegram
Telegram chat: /start replies β€œWelcome! State: disarmed”, /rc replies β€œRemote control ARMED”, and /sessions lists the running claude:deepseek terminal session.
Pair, then arm. /start authorises the chat, /rc flips the switch, /sessions picks the session.
Telegram
Telegram chat: a message sent to the selected session is answered by Claude Code running on the machine at home.
Then just type. Plain text goes to the active session β€” a real turn on your machine, answered back in the chat.

Ongoing sessions stream as chat

A session running in tmux mirrors into Telegram as a conversation β€” assistant messages, tool calls summarised in plain language and grouped into one βš™οΈ bubble per work burst, and ❓ multiple-choice questions you answer with the option number. No screen-scraping.

Telegram
Telegram chat: a ❓ multiple-choice question from the session, with one button per option plus βœ“ Done and ✏️ Other.
Questions become buttons. One question at a time, one button per option β€” plus βœ“ Done for multi-select.

Files you send are saved to ~/.claude-omni-rc/inbox/ and forwarded to the session as a path the model can read. Permissions β€” for headless and terminal sessions alike β€” arrive as βœ“ Approve / βœ— Reject buttons; unanswered requests expire into a deny. Headless sessions use the provider you configure in .env (Ollama by default), and /new --model <name> picks the model for a single session.

Telegram
Telegram chat: after tapping ✏️ Other the bot asks you to type your answer, with a Cancel button.
None of the options fit? ✏️ Other takes free text, and Cancel is always there β€” a session never parks on a dialog you can't answer.

Terminal, tmux, or headless

Every session β€” however it starts, whatever model backs it β€” streams to Telegram as a chat. What changes is how much you can steer it, and which provider answers.

Any model that runs through the Claude Code CLI

Ollama, a proxy, or Anthropic β€” one binary, same daemon. The provider follows the model.

Non-Anthropic β€” Ollama by default

Local models (and local proxies) need no Anthropic account.

  • omni-rc my-project β€” no -m: uses DEFAULT_MODEL from .env, Ollama by default
  • /new <prompt> β€” headless uses the .env provider, Ollama by default
  • per-session: omni-rc … -m deepseek-v4-flash:cloud or /new --model …

Anthropic

Anthropic models β€” claude-* β€” use your usual Claude Code auth in terminal sessions, or the provider set in .env for headless.

  • omni-rc my-project -m claude-opus-5 β€” a claude-* model means Anthropic
  • headless on Anthropic: set ANTHROPIC_BASE_URL (+ ANTHROPIC_AUTH_TOKEN or ANTHROPIC_API_KEY) in .env
  • a proxy works the same way, via ANTHROPIC_BASE_URL
Terminal
$ omni-rc my-project                  # Ollama β€” DEFAULT_MODEL
$ omni-rc my-project -m deepseek-v4-flash:cloud
$ omni-rc my-project -m claude-opus-5 # Anthropic
$ omni-rc -l                            # list claude:* sessions

The rule: a model starting with claude- runs on Anthropic; any other model runs on Ollama; an explicit ANTHROPIC_BASE_URL in .env (different from Ollama) overrides both. Terminal and headless sessions share the same provider logic.

Telegram
Telegram chat: /usage replies with the Ollama Cloud usage β€” 5h at 0% and weekly at 9%, each with its reset time.
/usage follows the same rule. The 5-hour and weekly windows of whichever provider the active session uses β€” Anthropic through the Agent SDK, anything else through ollama-usage.