Skip to content
ColliePWA

Your terminal agents, on your phone.

ColliePWA mirrors terminal multiplexer agent panes to your phone. See who is waiting, read the screen, and reply from anywhere.

  • Multiplexer backend:
  • Herdr
  • tmux
  • Zellij

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

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

01/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 pane screen, reply, send keystrokes, select 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.
Watch the cache countdown.
Each pane shows how long its prompt cache stays warm for Claude Code, Codex, OpenCode, and pi.
Run several machines as one crew.
The lead displays every peer's panes. A deputy takes over when the lead goes quiet.
Private by design.
Binds to loopback, stays on your tailnet, requires paired devices, and uses no cloud intermediary.
Install once, update from your phone.
Add the PWA to your home screen. One tap updates the entire crew to the newest release.

02/Demo

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. 02Inspect the prompt. This mirrors raw terminal output directly.
  3. 03Tap a response to resume execution.
  4. 04Select Keys to access modifiers and navigation: Esc, Tab, arrows, and Ctrl.
Open full-screen demo

03/Front door

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.

  • 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.
Keep the door private
Anyone who gets through the door can type into your terminals. Keep it on a private network, or put a login in front of a public one. Then pair your phone with collie pair. Never use tailscale funnel.

Set up each front door, step by step

04/Feature by feature

Every screen and its purpose.

during execution

Direct terminal mirroring

ColliePWA streams raw agent terminal output with full ANSI color support, avoiding lossy transcripts or summaries. The mobile view matches your desktop terminal byte for byte.

Mirrored terminal pane during agent execution with ANSI colors. 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.

Newest

03A read-only Changes view

See what an agent changed before you trust it. The list groups files by repository, including a member repo nested inside a workspace, and a filter narrows it by path or by status (modified, added, deleted, renamed, untracked). Tap a file for a phone-sized diff with syntax colour and Previous/Next between files. The view refreshes every five seconds while it is open, and shows the repo's last commit when the agent has already committed its work. Git runs with hooks, filters and network turned off: nothing here 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.

04Prompt cache countdown

Every dashboard row and pane header shows how long that agent's prompt cache stays warm. The bridge reads the harness's own session log, applies the vendor's published cache lifetime, and counts down idle time since the last request. A new request resets the clock. Codex, OpenCode, pi and Claude Code panes all carry the reading, and an optional Web Push warns before a watched pane goes cold.

Reading the hourglass
41m
Green, with minutes left: the cache is warm, and the next request reads from it at the lower rate.
3m
Red: the final quarter of the window. Send now, or the next request is charged in full.
cold
Blue, reading cold: the window has passed or a turn missed the cache. The next request pays the full rate and starts a new window.

Details in Configure

Dashboard rows with the hourglass reading at the end of each name line. ColliePWA running disconnected. Tap interactions are disabled without an active backend.

05Localization support

Interface translations for English, German, Spanish, Korean, Japanese, and Chinese, configured in Settings. Only UI chrome is translated; agent terminal streams remain byte-exact.

Details in Configure

Language selection interface in Settings. ColliePWA running disconnected. Tap interactions are disabled without an active backend.

06Explicit device authorization

collie pair generates an eight-character token with a ten-minute TTL and five-attempt limit. The client exchanges this for an auth token whose hash is stored by the bridge. Revoking a device drops its next request.

Details in Security

Initial pairing screen on an unlinked bridge. ColliePWA running disconnected. Tap interactions are disabled without an active backend.

07Voice input transcription

Push-to-talk transcribes directly into the input composer. Supports OpenAI-compatible APIs, local whisper.cpp or parakeet.cpp instances, or existing Codex CLI credentials without separate keys. Requires HTTPS via tailscale serve or a reverse proxy.

Details in Voice input and Web Push

Voice configuration routing transcript output targets. ColliePWA running disconnected. Tap interactions are disabled without an active backend.

08Web 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

09Git worktree workspaces

Herdr nests git worktrees directly under their parent repository checkout instead of creating top-level entries. Worktrees are tracked as native workspaces.

Two worktrees nested under the `collie` repo; external workspace `blog` renders flat. ColliePWA running disconnected. Tap interactions are disabled without an active backend.

10Zen mode

An optional setting that adds a toggle to the pane menu to collapse all navigation and display only the terminal. Leaves a single floating button to exit.

Details in Configure

Zen mode toggle configuration in pane settings. ColliePWA running disconnected. Tap interactions are disabled without an active backend.

Network topology

11Configurable transport gateway

ColliePWA binds strictly to localhost without public ingress. Transport to mobile devices can use the automated Tailscale configuration in collie start, WireGuard meshes, tunnels, or standard reverse proxies.

Details in Security

12Multi-host crew coordination

A crew is ColliePWA on every machine. Your phone reaches them all through the lead. Uploads, journals, audit logs, updates and failover are per machine, under tmux and zellij too. Herdr's saved machines stay in Herdr's own window. The crew is what your phone sees.

Details in Crews

Host topology view showing lead, deputy, and peer nodes. ColliePWA running disconnected. Tap interactions are disabled without an active backend.

Additional features

13Unified process supervision
Aggregates running agents by execution state, prioritizing blocked processes at the top of the interface.
14Full scrollback retention
ColliePWA streams complete agent session logs, preserving historical scrollback beyond the current terminal viewport.
15Multi-session multiplexing
Exposes all configured Herdr sessions from a single gateway, selectable from the top navigation bar.

Complete list from ColliePWA's README

05/Who it is for

For developers who run agents in a multiplexer and step away from the desk.

ColliePWA is for one operator with several coding agents running in terminal panes on one host. It does not replace the terminal. It lets you answer a waiting agent from a phone, then go back to what you were doing.

Meets you where you already work
It connects to the multiplexer you already run, Herdr, tmux, or zellij. No new session model and no wrapper around the agent. Herdr is the supported backend in 1.0. tmux and zellij are experimental.
No app store, no cloud, no account
A PWA served from your own machine over your tailnet. No store listing, no vendor account, and no cloud tier. The only outside services are the ones you switch on: the browser push service, and a cloud transcription endpoint if you pick one over a local engine. Add it to the home screen and it runs like an app.
Built for the keyboard you do not have
Special keys, arrows, and modifiers sit on a keypad. Your own quick replies and slash commands take one tap. The composer is a plain text field, so phone dictation works directly. Built-in voice input is available once you run collie stt setup on an HTTPS origin.
Notifications when an agent needs input
Optional Web Push alerts you when an agent blocks on input or finishes. Tapping the notification opens that pane. Requires HTTPS and collie push-keys.
Several machines, one URL
A crew puts every host behind one address, with a failover you authorize ahead of time and trigger from the browser. One confirm updates the whole crew from the same screen.
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.

06/Architecture

Local execution model and security boundaries.

ColliePWA writes to your interactive terminal sessions with your current user permissions. Any client with network access to the port can read terminal output and execute arbitrary commands.

Runs on the local agent host
Directly mirrors local multiplexer sessions. Herdr is fully supported in 1.0; tmux and zellij backends are experimental. Operates 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.
Host-level authentication
Access control is handled at the network layer rather than through application logins. Any user on an authorized 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.

07/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.

$ 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 2ded11d, 2026-08-31.

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.

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.

Prerequisites, build guides, and initial output

08/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 that your own machine serves. Open its address on your phone and add it to the home screen. On an iPhone or iPad, use Safari's share sheet for that.

Which agents does it work with?

Any agent that runs in a terminal pane. ColliePWA mirrors the pane itself, so it does not need an API from the agent. The prompt cache timer on each pane knows Claude Code, Codex, OpenCode and pi.

Which terminal multiplexer do I need?

Herdr, tmux or zellij. Herdr is the primary backend. tmux and zellij work, but are experimental. 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, the bridge runs against the Herdr Windows beta, and that support is experimental. 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. Anyone who reaches the address 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.