Vibeleaderboard
Index / tool
Visit colliepwa.dev
Category
Developer Tools
Rank
No. 1016Tools index
Pricing
Open Source
Type
TOOL
Use case
Coding
Interfaces
Mobile
Builder
AltanS
Latest release
v1.23.3
Date

About

A self-hosted mobile interface for coding agents running in terminal multiplexers. Collie prioritizes sessions waiting for input and supports terminal replies, device pairing, notifications, and multiple hosts. Herdr is the primary supported backend; tmux and Zellij support is experimental.

What it does

Collie puts the terminal coding agents running on your own computer, such as Claude Code or Codex, onto your phone. A small server sits on the host beside the terminal multiplexer, reads every pane, and serves a mobile web app over your private Tailscale network. Instead of a raw terminal on a touchscreen, you get a list of panes with the ones waiting on you marked, an agent's own questions turned into tap targets, the phone keyboard and dictation for replies, and a key pad for Esc and Ctrl+C. It can also start new agents in fresh git worktrees and show a workspace's changed files as read-only diffs.

Why it's ranked here

A narrow tool built with unusual care for its blast radius. It is MIT licensed, ships prebuilt binaries for Linux and Apple Silicon Macs plus Nix and Arch packaging, and puts its threat model ahead of its install steps: every request, reads included, needs a token from a paired device, pairing codes die after five wrong tries, and the README says plainly that this is remote shell access with no sandbox. The multiplexer support table cites a first-hand probe for every capability it claims. The limit is scope: Herdr is the one fully supported backend, while tmux and zellij stay experimental, tested by a single operator on one machine.

What's good

The security writing is specific rather than reassuring. It lists what the phone keeps, for how long, and what unpairing deletes: unsent drafts for 48 hours, pane text for 24, at most 256 KiB per pane. Device tokens can carry an expiry and are revoked without a restart. The install script verifies a checksum and never asks for sudo. The app sends no analytics; its one unprompted network call is an update check to GitHub. Optional voice input stays absent, with no key or outbound path, until you set it up. Starting an agent from the phone carries its own id, so a lost reply never opens a second pane.

Tradeoffs

This is a remote shell by design. A paired device can type any command with your user rights and read any file under a workspace folder, environment files included, and the idle lock only blanks the screen. Setup assumes Tailscale with HTTPS enabled, or a reverse proxy you configure yourself. It serves one operator, with no multi-user authentication. Turning an agent's prompt into buttons happens on the phone by pattern matching the visible pane text, so an unfamiliar prompt falls back to reading the raw pane. Windows support is experimental and limited to Windows 11 on x64 with Herdr, and the phone app is in neither app store.

How to use it well

Best for a developer who already keeps several Claude Code or Codex sessions running in Herdr on a home or work machine and wants to answer their prompts from the couch rather than through an SSH client. Install it on the host, keep it on a tailnet, never expose it with Tailscale Funnel, and pair only the phone you carry, ideally with an expiry. Turn on push notifications so a blocked agent reaches you. On tmux or zellij, install the beacon hooks (Linux only) so it can tell agents from shells, and expect rough edges. It does not replace a real terminal for editing code.

Technical notes+

package.json runs the bridge with Bun from bridge/index.ts and builds the CLI from cli/main.ts; runtime dependencies are only commander, ink, qrcode-terminal and react, with web-push optional. cli/main.ts dispatches the build and _apply-update verbs before loading anything that needs node_modules, because a fresh Herdr plugin install has no dependency tree, and its comments say a test walks the static import graph to reject bare package specifiers. bridge/index.ts applies config files beneath the environment, resolves crew mode from the trust store before wiring anything, and creates the state directory with 0700 permissions. bridge/stt/index.ts picks one of three speech providers (codex, local-cli, OpenAI) and caches it keyed on the serialized settings, so a config edit replaces the codex child process instead of orphaning it. MUX_CONTRACT.md declares capabilities per adapter for Herdr, tmux, zellij, tuios and tern, each cell citing a probe; zellij is the only bounded adapter, with a 12000 ms census ceiling. ARCHITECTURE.md records that prompt parsing is client-side and pattern-based rather than the bridge-captured message first designed. docs/security.md documents a cap of ten pairing attempts per source address per minute.

Observed

License
MIT
Language and runtime
TypeScript, run on Bun; React Router and Vite web client
Install surface
Checksum-verified install script, Herdr plugin, Nix flake, Arch PKGBUILD built from the repository, PowerShell script on Windows
Host platforms
Linux and macOS (prebuilt Mac binary needs Apple Silicon and macOS 13+); Windows 11 x64 with Herdr is experimental
Multiplexer backends
Herdr primary; tmux, zellij, tuios and tern experimental
Interfaces
Installable phone web app (PWA) plus a collie command-line tool
Network exposure
Bridge binds loopback; default front door is Tailscale Serve, other reverse proxies documented
Authentication
Device pairing token required on every API route except health and pairing
Telemetry
None stated; one unprompted call, the update check to GitHub
App store distribution
Not in the App Store or Google Play; installed from the browser to the home screen

Read from README.md, package.json, LICENSE, ARCHITECTURE.md, docs/security.md, docs/install.md, docs/claude-code-on-your-phone.md, bridge/index.ts, cli/main.ts, bridge/stt/index.ts, MUX_CONTRACT.md.

Tags

developer-toolsai-agents

Tech Stack

Node.jsTypeScript

Media

ColliePWA

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.