Open sourceA Claude Code plugin

Your Claude Code,
in your pocket.

Ship from the couch. Text any Claude Code session from Telegram or iMessage. It does the real work on your Mac, asks before anything risky, and texts you back.

claude plugin marketplace add saswatsam786/telepilot && claude plugin install telepilot@telepilot
A sunlit work-from-home desk in an Indian apartment with a laptop, phone and a glass of chai
Telegram · you@api run the tests and push if green
❯ Running 128 tests…
✓ 128 passed ✓ pushed to main
telepilot · approval🔐 [api] wants to run git push origin main
✅ yes❌ no
An office-goer on a Mumbai local train at dawn, tapping his phone
7:40 AM · Mumbai local

You left a refactor running.
Now you're on the train.

telepilot · api[api] 128/128 tests pass. Pushed to main ✅
Not another agent

It's your Claude Code.
The chat is just the pipe.

Did the tests pass? Is it stuck on a permission prompt? Just ask it, with your own plan, sessions, skills and MCP servers.

Message any session by name

Running, stopped or brand new, in any repo on your Mac.

Approve with one tap

Permission prompts arrive as yes / no buttons. Nothing runs behind your back.

Answers come to you

Each session reports back, with live typing and "still working" pings.

telepilotbot · online
@api run the tests and fix anything failing
→ api
🔐 [api] wants to run
git push origin main
✅ yes❌ no
[api] 3 tests were failing on the date parser. Fixed src/date.ts, 128/128 pass, pushed ✅
/photo
📸 Here's your desk.
Message
How it works

One hub routes.
Your sessions do the work.

Built only on first-party Claude Code features: channels, background sessions, cross-session messaging and hooks. No servers.

01

You text it

Anthropic's official Telegram channel delivers your message to a small hub session on your Mac.

you @api run the tests
02

The hub routes

It messages a running session, resumes a stopped one, or starts a new one. It never does heavy work itself.

hub → api (running)
03

Sessions report back

Hooks post results and approval buttons straight to your chat, so no tokens are spent relaying.

api 128/128 pass ✅
Features

Everything you'd do at your desk.
From anywhere.

Talk to any session

Use @name to reach a specific session or /new to start one in any folder, or just write. The hub picks the right session, or asks one short question.

@api fix the build/new blog ~/code/blog/sessions/switch web

One-tap approvals

Claude Code's permission system stays fully on.

✅ yes❌ no

Voice notes

Transcribed on your Mac with whisper.cpp, then routed.

Your Mac, remotely

Take screenshots and camera photos, open apps, run Shortcuts, read the clipboard, set the volume and check the battery. You can even unlock the Mac. Your password stays in the Keychain and never goes through chat.

/screenshot/photo/unlock/lockopen Spotify

Safe by default

An allowlist, single-use codes, /panic and /audit.

Always on

A supervisor restarts the hub at login and after crashes.

No extra servers

telepilot runs entirely on your Mac. Only Claude Code and your chat app talk to the cloud.

Use cases

Ship from the couch.
And the train. And the dog walk.

A few real moments where telepilot saves a walk back to the desk.

Relaxing on a sofa at home, checking a phone
7:40 PM · couch

Fix a failing CI from the couch

@api CI is red on main, fix it[api] Flaky date test. Patched, pushed, CI green ✅

A phone ping is enough. The session reads the logs, patches, pushes, and replies when it's green.

Walking an indie dog in a Bengaluru park, phone in hand
6:15 PM · dog walk

Walk the dog, ship a PR

🎙 0:21 voice note[web] Added dark mode toggle. PR #142 opened ↗

Your voice note is transcribed on the Mac, routed to the right session, and it opens the PR.

A home-office desk with a laptop terminal, a phone and chai
Any time

What's everyone doing?

what's everyone working on?api: tests 80% · app: building iOS · infra: idle

Run backend, app and infra sessions side by side and get one status roll-up in a single message.

An office-goer tapping his phone on a Mumbai local train
Lunch

Approve from anywhere

🔐 [infra] wants to run terraform apply
[ ✅ yes ] [ ❌ no ]
✅ yes

Risky commands wait for you. One tap on your phone and the session continues, or doesn't.

Locking the apartment door while glancing at a phone
Left the office

Your Mac, remotely

/lock · /screenshot · find invoice.pdf🔒 Locked. 📸 Screenshot sent. 📄 Found in ~/Documents

Lock or unlock, open apps, grab a screenshot or camera photo, find and send a file.

Masala chai in a kulhad next to a phone on a sunny café table
8:00 AM · coffee

Morning briefing

morning briefing3 meetings, 2 PRs need review, 1 Sentry alert

Your sessions use your own connectors (calendar, GitHub, Sentry) and sum up the day in chat.

A phone on a bedside table at night
11:30 PM · bed

Overnight refactor

/new refactor ~/code/app migrate to the new router[refactor] Done: 41 files, tests pass. Summary + diff 📎

Start it before bed and wake up to a summary and the diff, with no laptop needed.

Checking a phone in an auto-rickshaw at night
2:07 AM · on call

Incident response

@api look at the new Sentry alert[api] Null user in /checkout. Fix ready. Push it?

An alert comes in, the session investigates with your tools and proposes a fix. You decide.

Three teammates around a laptop in a co-working space
Release day

Deploys, one step at a time

@infra build, test, merge, deploy✓ build ✓ tests ✓ merged 🔐 deploy to prod? yes / no

Build, test, merge and deploy in order, with a confirmation at every risky step.

Typing on a phone in a clinic waiting room
Waiting room

Ask anything about your code

@api where do we refresh auth tokens?[api] src/auth/session.ts:88, every 15 min

Your codebase, one message away, answered by the session that already knows it.

Security

Nothing runs
without your yes.

Your sessions' permission prompts come to your phone as yes / no buttons. telepilot itself only relays.

Only you get in

The official pairing allowlist means only your account reaches the hub.

Permissions stay on

Risky actions wait for your tap. Codes are random, single-use and expiring.

Just a relay

telepilot never blocks or rewrites anything in your sessions. Your message is handled exactly like one you typed.

Kill switch

/panic stops every session telepilot started and denies pending requests.

Install

One line.
Two minutes.

Run the one-liner in your terminal, then /telepilot:setup in a new Claude Code session. Setup asks Telegram or iMessage, connects your bot, pairs your account and starts the hub.

macOS + Claude Code 2.1.288 or newer, opened once
Pro / Max plan or an API key
git (xcode-select --install)
Bun + tmux (setup installs them with Homebrew)
claude
❯ /plugin marketplace add saswatsam786/telepilot
❯ /plugin install telepilot@telepilot
❯ /reload-plugins
❯ /telepilot:setup
✓ bot connected ✓ paired ✓ hub running
A woman walking barefoot on a Goa beach at sunset, phone in hand

Close the laptop.
Keep shipping.