Skip to content
ColliePWA

Your terminal agents, on your phone.

ColliePWA is a mobile client for Herdr, tmux and zellij. It puts your agent panes on your phone. See who is waiting, read the chat or the screen, and reply from anywhere.

  • Multiplexer backend:
  • Herdr
  • tmux
  • Zellij

Herdr is the primary backend. tmux and zellij support is experimental. Details in Terminals

$ curl -fsSL https://colliepwa.dev/install.sh | sh

Open source, MIT license. Runs as a self-hosted single-user binary. Tailscale or custom ingress.

Static interface capture with mock sessions. The demo interface is non-interactive.

In short

What ColliePWA does.

See every agent at once.
View every pane in tmux, zellij, or Herdr in one list, grouped by workspace. Panes that need you sit on top.
Answer from your phone.
Read the agent's chat or its terminal, reply, send keystrokes, pick a plan option, or speak your reply.
Know when to act.
Get a push notification when an agent asks a question, finishes, or its prompt cache is about to go cold.
Start agents from your phone.
Tap + New, pick the machine, the agent and the folder, then tap Start. A new branch can open in its own folder.
Run several machines as one crew.
The lead shows every machine's panes, load and disks. A deputy you named can take over if the lead goes down.
Let your agents message each other.
One agent session messages another on any machine in your crew. You can message any session from your phone.
Private by design.
Binds to loopback, needs a paired device for every request, and masks known secret shapes in pane text. The app sends no telemetry. No cloud intermediary.

See it

Watch it, then drive it.

Interactive demo.

This is the production ColliePWA client. Agents, terminals, and responses use mock data replayed locally in your browser. Nothing runs on a server and no network traffic is sent.

  1. 01Select the blocked agent at the top of the list.
  2. 02Read the conversation in Chat. Tap Screen for the raw terminal.
  3. 03Tap a response to resume execution.
  4. 04Select Keys to access modifiers and navigation: Esc, Tab, arrows, and Ctrl.
Open full-screen demo

Read and answer

Read the agent. Answer in a tap.

while it works

Read the agent's conversation

Chat shows the agent's session, turn by turn: your messages, its replies and its thinking behind a fold, with each tool call folded into one line. It is the default view of an agent pane. If the bridge drops, the phone shows a read-only copy of recent turns.

Chat view of a Claude Code session: two files read, one edit, a test run, and the answer. ColliePWA running disconnected. Tap interactions are disabled without an active backend.

on input required

Single-tap input responses

Interactive permission prompts render as discrete action buttons. Input is validated against current terminal state before dispatch to prevent desynced submissions.

Pane blocked awaiting user confirmation on a permission prompt. ColliePWA running disconnected. Tap interactions are disabled without an active backend.

when you want the raw screen

The exact screen, one tap away

The terminal view shows the pane byte for byte, with ANSI color. Tap Screen below the reply box to open it, and tap again to return to Chat. You can set it as default in the pane menu.

The same pane in the terminal view: raw rows from the agent in ANSI color. ColliePWA running disconnected. Tap interactions are disabled without an active backend.

Type less

Sent

Each machine saves the shell lines you send through ColliePWA. The strip above the box offers them again on shell panes. Lines that start with a space are not saved, and neither are lines that look like secrets. Agent prompts are never saved. The Suggestions from Sent switch in Settings, Device, turns the strip off on shell panes. COLLIE_SENT=off saves nothing on the machine.

Slash suggestions

Type / in an agent pane, or $ for Codex skills. The strip lists matching commands. A tap fills the box without sending.

Skills in the palette

In Claude Code panes, the Agent palette also lists skills and commands from your ~/.claude and project .claude folders. It also lists the skills and commands of installed plugins, with their plugin: prefix. It omits disabled plugins. Tap an item to fill the box without sending.

Web Push on state change

Optional Web Push delivers notifications when an agent blocks on input or finishes. Selecting a notification opens that agent. Transition filters and do-not-disturb periods are bridge-wide across every device. Requires HTTPS and collie push-keys.

Details in Voice input and Web Push

One New button, one New page

The + New button on the dashboard opens the New page. In a crew, select the machine first, choose Agent or Shell, then tap Start. Uninstalled agents appear greyed out with the reason in brackets. Under the Folder field, a Browse row steps through your home folder one level per tap. It marks each folder that is a repository. On Herdr, New worktree puts a new branch in its own folder. Every start uses an id, so dropped replies never create duplicate panes.

Details in Configure

The New page on a crew: host, Agent or Shell, folder and the New worktree switch. ColliePWA running disconnected. Tap interactions are disabled without an active backend.

Files and Changes, read-only

See what an agent changed before you trust it. Files marks altered files in the workspace. Changes groups them by repository, filtered by path or status. Tap a file to view a mobile-friendly diff, or preview Markdown, JSON, HTML and images. The view is read-only: git runs without hooks, filters or network access, and nothing edits, stages or commits.

The Changes view, open on a workspace with a member repo nested inside it and five changed files across both. ColliePWA running disconnected. Tap interactions are disabled without an active backend.

Themes

Four looks for the same app.

ColliePWA ships with four themes: Collie, Nightwatch, Daylight and Harbour. A theme carries colours, type, shape, look and a terminal palette. Every value is a closed word or a checked colour, and every theme has a light half and a dark half.

Collie

Typeface: Aldrich

The look you know: neutral greys, with Aldrich for the type.

Nightwatch

Typeface: IBM Plex Sans

flat · bold · strong · band · heavy

For the phone on call at night. A true black dark half, flat and square, with heavy lines, a dim amber accent and a dim amber band behind the header and the bars.

Terminal palette

Daylight

Typeface: Geist

Titles: Atkinson Hyperlegible Next

round · lifted · roomy · gradient · cards · sentence

For bright sun and low vision. Body text at AAA contrast, round roomy cards, a page that shifts toward the foot, and status colours that run from blue to orange, not from red to green.

Terminal palette

Harbour

Typeface: Atkinson Hyperlegible Next

Titles: Space Grotesk

soft · lifted · grain · thin

For people who come from the terminal. Cool blue-grey with one teal accent, soft corners, a fine grain and thin icons, and a Solarized-based terminal palette on a near-black blue.

Terminal palette

How themes work

Reach

How your phone reaches your agents.

A multiplexer keeps every agent running on your machine after you close the terminal or lose connection. ColliePWA puts those panes on your phone so you can check in and answer from anywhere.

your machinephoneTailscaleyour front door127.0.0.1 onlycollieherdr / tmux / zellijagentagentagentkeeps agents runninginternetnothinglistens here
Your phone comes in through one front door. Collie listens on 127.0.0.1 only.
Runs on what you have
Use a desktop, a home server, a spare mini PC, or a cloud VM. Any Linux or macOS machine that stays on can host your agents, and so can Windows 11 (experimental). No new hardware, no subscription.
The multiplexer holds the sessions
Herdr, tmux, or zellij owns each session instead of your terminal window. Agents keep working through dropped connections, closed terminals, and nights of sleep.
Set it up in five minutes

Tailscale, Herdr and ColliePWA on your computer, then your phone. One guide, five steps.

Protected by your front door.

ColliePWA listens only on loopback, so nothing on the network reaches it directly. Your phone comes in through one front door that you already trust. Pick the one you run.

  • Tailscale

    The default. collie start runs tailscale serve for you, with HTTPS on your tailnet name. Turn on HTTPS certificates in the Tailscale admin console once.

Other front doors
  • Cloudflare Tunnel

    A public hostname without an open port. Put a Cloudflare Access login in front of it, because the tunnel alone lets the whole internet in.

  • Nginx Proxy Manager

    A reverse proxy with a web UI and Let's Encrypt. It runs in Docker, so give the container host networking to reach loopback.

  • NetBird

    A WireGuard mesh, like a tailnet. Add a reverse proxy on the host for HTTPS, with a DNS challenge certificate for a private name.

  • Caddy

    A reverse proxy that gets and renews HTTPS certificates on its own. It is the shortest setup if you have your own domain.

  • Anything else

    Traefik, plain nginx, ZeroTier or any other proxy works. It must forward to 127.0.0.1 and serve HTTPS on one fixed hostname.

Push and voice need HTTPS
Browsers allow Web Push, the microphone and the home screen install only on a secure origin. Your front door must serve HTTPS with a certificate that your phone trusts. Over plain HTTP you can still read and reply in a browser tab, but those three stay off.

Set up each front door, step by step

What a paired phone can do

ColliePWA writes to your interactive terminal sessions with your current user permissions. A client that holds a pairing token can read terminal output and execute arbitrary commands.

Runs on the local agent host
Mirrors your local multiplexer sessions. Runs without cloud backends, remote servers, or external accounts.
Loopback-only binding
It binds to loopback and never to 0.0.0.0. Exactly one hardened front door is published: tailscale serve, or a reverse proxy you configure. Never funnel.
Paired devices only
Every request needs the token of a device you paired on the host, reads included. There are no user accounts. A paired device has full shell access.
Local system access boundary
Multiplexer unix domain sockets enforce local filesystem permissions. ColliePWA's TCP port is accessible to other local users. Enforce isolation using ingress filters and COLLIE_TRUSTED_USER.

MIT licensed source. Review the security note for detailed access controls and trust boundaries.

Crew

Many agents, many machines.

One lead, every machine

A crew runs ColliePWA on every machine. Your phone connects to all of them through the lead. A deputy you named can take over if the lead fails. The Machines screen charts CPU, memory, disks and network use over the last 24 hours.

Details in Crews

phoneleaddeputystandby doorarmed by thelead's silencespent by yourpairing credential
If the lead goes offline, the deputy's standby door opens for your phone.

Agents that message each other.

One agent session sends a short signed message to another, in any coding agent across your crew. You can message any session from your phone too. It is on by default. COLLIE_WALKY=off turns it off for one machine.

laptopmemberclaude$ collie walky send desk/w1:p2 "Tests pass."crew linkdeskleadcodex[walky-talky wt_k3f9x2m8q1a0]from agent laptop/w2:p1collie walky inbox wt_k3f9…phonesigned
One agent messages another through the lead, signed by the sending machine.
Agents message each other
One agent asks another to check a branch. The receiving agent reads the message as command output, never as your prompt. It replies with a command.
You message any session
Send messages from your phone to any session. Your text appears in full in the terminal. The phone displays a card and a receipt, and the Messages sheet lists what each pane sent and received. The Crew page can message all agents after you confirm the count.
Signed by the machine
The sending machine signs each message with its key. The lead checks that key, then signs the message again for the machine that receives it. The phone trusts only the bridge's own log, so agent output cannot pose as a message.
One skill, kept current
ColliePWA adds a short skill to the instruction files of every agent it finds. Each update, rollback or switch refreshes the skill with collie skill sync. Run collie skill uninstall to remove it from one agent.
What an agent runs
collie walky who
collie walky send desk/w1:p2#k3f9 "Tests are green on fix-465. You can merge."
What the other agent sees
[walky-talky wt_k3f9x2m8q1a0] from agent laptop/w2:p1 (claude, collie#fix-465): a message from another agent, not your operator. Read it: collie walky inbox wt_k3f9x2m8q1a0. Reply: collie walky reply wt_k3f9x2m8q1a0 "<text>"
Read the walky talky guide

The commands, the inbox, and how signing works.

More

Everything else it does.

Task list pill
A pill on the actions belt shows session progress, like "Tasks 3/5", from the session log. It works with Claude Code, Codex, OpenCode and Grok. A tap opens the list without sending.
Effort beside the model
The tag above the belt displays values like "Opus 5.5 · high". The word after the model shows the harness's effort level.
Stretchtext replies
Chat shows cc-stretch replies in short form. Tap a phrase to see the full text. It is off by default: enable it in Settings, Display.
Subagent transcripts
Tap a Claude subagent card to view its prompt, tool steps, and report in a bottom sheet. A background subagent card shows that it is running until its report arrives. An Agents pill beside Tasks lists running subagents with their model, task, and run time. Tap a subagent to open its transcript.
Prompt cache countdown
Each pane shows how long its prompt cache stays warm. An optional push notification warns you before a watched pane's cache goes cold.

Details in Configure

Stable or Edge
Each machine follows Stable or Edge, set in Settings, Updates. Stable takes final releases only. Edge also takes pre-release builds, published a few days before each final release. A crew follows its lead's line. Roll back returns to the stored build, and a rollback off an Edge build puts the machine back on Stable. On Stable with an Edge build ahead, choose Go back now or Wait for Stable.

Details in Manage & update

A Keys pad you arrange
Arrange the pad on a board, using wide and tall keys, chords, sequences of up to four steps, and five presets.

Details in Configure

Add your own agent or command from the phone
Create custom launchers from recipes on the phone. Launchers that bypass permission prompts show a No prompts badge.

Details in Configure

One-off commands
Run a single command from the New page. Sent saves the line, as it does on a shell pane.
Git worktrees and branches
On Herdr, the pane menu starts a second agent in a new worktree. Every pane displays its active branch.
Voice input transcription
Push-to-talk transcribes voice into the composer using a local model or an OpenAI-compatible API. Requires HTTPS.

Details in Voice input and Web Push

Secrets are masked on the bridge
The bridge masks known secret formats, such as API keys, JWTs and PEM keys, before text reaches your phone. This is a mitigation, not a guarantee.

Details in Security

Twelve interface languages
Select a language in Settings. Translation applies only to the interface; agent terminal output remains byte-exact.

Details in Configure

Zen mode
An optional pane menu toggle hides all navigation bars and shows only the terminal.

Details in Configure

Full scrollback retention
ColliePWA streams complete agent session logs, preserving historical scrollback beyond the current terminal viewport.
Multi-session multiplexing
Exposes all configured Herdr sessions from a single gateway, and you switch between them in the web interface.

Durable agents

Your own agent, on your phone.

Built a long-running agent with Pi Durable or your own code? ColliePWA gives it approval prompts, history and a chat view, with no UI code of your own.

Experimental: the wire may change in any minor.

Connect a durable agent

MIT licensed. Come and contribute.

The source is on GitHub under the MIT license. Bug reports from tmux and zellij setups are welcome, including reports of setups that work.

Complete list from ColliePWA's README

Installation

Install via shell script or build from source.

ColliePWA runs next to your agents, on the machine that already has them. The script downloads a release for your platform and verifies it. Building from source needs git and Bun, and is the route for a machine the releases do not cover. Both end with collie on your PATH, and neither one starts anything.

What you need

ColliePWA serves one operator running multiple coding agents on one host. It does not replace your terminal.

A machine that stays on
Linux, macOS, or Windows 11 (experimental). Runs on desktops, home servers, mini PCs, or cloud VMs.
A multiplexer
Herdr is fully supported. tmux and zellij are experimental.
A coding agent
Claude Code, Codex, OpenCode, pi, Hermes Agent, or any agent running in a terminal pane. Cursor CLI support is provisional.
A front door
Requires private ingress. ColliePWA binds strictly to loopback interfaces. Tailscale is configured by default: collie start runs tailscale serve on your MagicDNS hostname. Custom reverse proxies, meshes, and SSH tunnels are documented in the deployment guide. Single-user architecture only.
$ curl -fsSL https://colliepwa.dev/install.sh | sh

A short POSIX sh installer. It skips sudo, starts no system services, and isolates files to ~/.local/share/collie and ~/.local/bin. It fetches the latest release, validates the published sha256 hash, writes the binary, and updates PATH. Requires curl, tar, and sha256 tools.

Served locally from this origin. Canonical source is located at scripts/install.sh in the repository. Inspect the script before running:

$ curl -fsSL https://raw.githubusercontent.com/AltanS/collie/main/scripts/install.sh | less
$ curl -fsSL https://raw.githubusercontent.com/AltanS/collie/main/scripts/install.sh | sh

Run collie update to fetch, verify, and switch to newer releases. Previous versions remain cached for collie update --rollback. Source builds update git revisions directly without release rollback targets.

Sourced from scripts/install.sh at 320bb18, 2026-10-03.

One step left: start it.

# one step left. It asks which multiplexer to mirror — herdr, tmux or
# zellij — and writes your answer to ~/.config/collie/.env, creating it.
$ collie start

Configuration is optional and lives in ~/.config/collie/.env, the file start creates. Set COLLIE_TRUSTED_USER there, and the port or the front door if the defaults do not fit.

Access the generated URL from your mobile device over your local network. Add to home screen for full viewport mode.

Prerequisites, build guides, and initial output

FAQ

Questions people ask.

Is ColliePWA free?

Yes. It is MIT licensed. There is no paid tier, no account and no cloud service behind it.

Can I try it before I install it?

Yes. The interactive demo runs the real app in your browser, with made-up agents and panes. Nothing is installed and nothing is sent to a server.

Do I need an app from the App Store or Google Play?

No. ColliePWA is a web app served by your own machine. Open its address on your phone and add it to your home screen. On Android, Chrome offers an Install button for that. On an iPhone or iPad, use Safari's share sheet.

Is there a mobile client or app for Herdr?

Yes. ColliePWA is a mobile client for Herdr. It is a web app that your own machine serves, so you open it in your phone's browser and add it to your home screen. There is nothing to install from an app store. You can also reach Herdr through an SSH app. Read how the Herdr mobile client works.

Is ColliePWA an alternative to Termius or Moshi?

Termius and Moshi are terminal apps from the App Store or Google Play that connect over SSH. ColliePWA is a web app served by your machine and opened in your phone's browser. It lists the agents in your multiplexer, puts the ones waiting on you at the top, and includes a Keys tray with Esc, Tab, arrows and modifiers, so the phone keyboard is not your only input. Read the full comparison with Moshi.

How is this different from Claude Code Remote Control?

Remote Control connects the Claude app or claude.ai/code to a Claude Code session on your machine, routing traffic through the Anthropic API. ColliePWA mirrors terminal panes. It works with whatever agent runs in them: Claude Code, Codex, OpenCode, pi and others, in every pane of your Herdr, tmux or zellij setup. It runs on your hardware. Your phone reaches it through a front door you run, Tailscale by default.

Why not just SSH in from Termux or Termius?

You can. That is how ColliePWA started. Driving a terminal UI through on-screen controls is clumsy: special keys are fiddly, Ctrl, Esc and arrows need awkward chords, and plain text input fights the soft keyboard. ColliePWA lets you tap the agent waiting on you, type normally, and hit Esc or Ctrl+C with one thumb.

Which agents does it work with?

Any agent that runs in a terminal pane. ColliePWA mirrors the pane itself and requires no agent API. The prompt cache timer on each pane supports Claude Code, Codex, OpenCode and pi. Questions and approvals from Hermes Agent become buttons. Messages from your phone reach the Cursor CLI input box, and ColliePWA checks every send to it while support remains provisional.

Which terminal multiplexer do I need?

Herdr, tmux or zellij. Herdr is the primary backend. tmux and zellij work, but are experimental. tuios and Tern also work as experimental backends. collie start finds the ones you have and asks which one to mirror.

Which operating systems does it run on?

The host runs Linux or macOS. On Windows 11 x64, it runs against Herdr 0.9.3 or newer, and that support is experimental. A Windows machine cannot join a crew yet. On the phone, any current browser works.

Do I need Tailscale?

No. Tailscale is the default, because collie start sets it up for you. A reverse proxy, Cloudflare Tunnel, NetBird or another mesh works too. The deployment guide shows each one.

Why can't I turn on notifications?

Web Push needs two things: an HTTPS address and a key pair from collie push-keys. Over plain HTTP, the browser does not allow push, and the switch stays off. On an iPhone, add ColliePWA to the home screen first. Safari allows push only for a web app on the home screen.

Is it safe?

ColliePWA gives remote shell access to your machine. That is what it is for. Every request needs the token of a device you paired, but anyone who pairs a device can read your panes and type into them. It listens only on loopback, so keep exactly one private front door in front of it, and pair your phone with collie pair. Never make it public with tailscale funnel. Read the security note before you run it.

Does anything leave my machine?

No telemetry, no analytics and no crash reports. The only call it makes on its own is an anonymous update check against GitHub's public tags. Push goes through your browser's push service, and only after you turn it on. Voice input uses a cloud service only if you pick one over a local engine.

Can my team share one ColliePWA?

No. ColliePWA is for one operator. It has no user accounts and no per-person permissions. If you run agents on several machines, a crew puts all of them behind one address, for you alone.

How do I update it?

Tap update in Settings on your phone, or run collie update on the host. Older versions stay on disk, so collie update --rollback takes you back.