Chat-based control for Claude Code, Codex, and OpenCode: run sessions on your machine, drive them from your phone (no terminal)
A practical comparison of Telegram/Slack bots vs browser UIs vs phone-first dashboards, and a workflow for approvals + follow-ups that doesn’t require SSH.
- CLI
- 0.1.0
- Preview ref
- f36aa45
I keep wanting the same simple thing:
I start a session on my machine (Claude Code, Codex, OpenCode).
Then I’m away from the keyboard.
And I want to be able to do three actions from my phone, fast:
- check whether it’s still running
- answer anything it needs (approvals / questions)
- send one follow-up instruction
A lot of people reach for SSH here.
I get it — it’s “the truth.”
But SSH on a phone turns into doing real terminal work on mobile, and I don’t want that to be the default.
So this guide is about the “no terminal” control plane options that actually exist today.
TL;DR
- Decide how much UI you need:
- chat-only (Telegram/Slack): best for status + nudges
- browser UI: better context, still light
- phone-first dashboard: best for approvals + diffs + routing
- If you mostly need “is it stuck?” and “send one message”, chat bridges can be enough.
- If you need to approve risky actions or review changes, prefer a UI that can show the request in context.
- Happier is one option that works well when you want phone-first approvals and session-aware notifications (without living in SSH).
The problem
The reason “chat-based control” is appealing is not that people love Telegram.
It’s that chat has one killer feature:
it’s already on your phone, and it’s already good at notifications.
But chat is also low bandwidth.
It’s great for:
- “what’s the status?”
- “stop and summarize”
- “continue with step 2”
It’s weak for:
- reviewing diffs
- browsing files
- making careful approvals
So the real question is: what are you trying to do from your phone?
What I tried first (and where I bounced off)
- SSH from phone: works, but it’s heavy.
- Chat bots: great for status and nudges; I kept wanting more context for approvals.
- Browser UIs: better, but you still need correct routing (right machine, right session).
Happier is one of the options I use when I want a phone-native feeling dashboard instead of a chat transcript.
Option A: chat bridges (Telegram / Slack)
This is the “lowest friction” approach.
You wire something up that can:
- list sessions
- show basic status
- forward a message into a session
The trade-off is that rich workflows (approvals, diffs) become awkward quickly.
Option B: official browser remotes (when a provider has them)
For Claude Code, Remote Control is a real option.
This is closer to “a UI for the session” than “a bot”.
Trade-off: it’s provider-specific.
Option C: a phone-first dashboard (Happier)
If you want the phone workflow to be:
- notifications bring you to the correct session
- approvals are durable (you can review later)
- you can keep going without guessing which machine/server you’re on
…then you want a dashboard, not a chat transcript.
If you’re new to Happier
If you haven’t seen Happier before: it’s an open-source companion app (mobile/web/desktop) for sessions like Claude Code, Codex, and OpenCode.
The workflow is: sessions run on your machine, and Happier is where you keep them moving from your phone without living in SSH.
Get set up:
- How to run Happier from your phone
- GitHub: https://github.com/happier-dev/happier
- Install/download: https://github.com/happier-dev/happier#how-it-works
- Discord: https://discord.gg/W6Pb8KuHfg
A workflow that works (phone control loop)
1) Make “what needs attention” visible
The biggest win is not being able to send messages.
It’s knowing when you should.
In Happier, Inbox is the dedicated place for “things that need your attention” (approvals, permission/user-action requests), even across sessions.
2) Make notifications land you in the right session
When you tap a notification, the failure mode is landing on the wrong session/server.
Happier’s notification routing model is strict about:
- opening the targeted session
- switching server profiles if needed
- avoiding auto-approving on unknown servers
3) Use chat as an input method, not as your only UI
A pattern that works well:
- use chat for quick “nudge” messages
- use a dashboard UI for approvals + review