Remote companions and relays

Clients that observe or steer a session owned by another machine or product.

Compare remote companions and relays across platforms, source model, execution boundary, workflow, and current open-source project data.
CriterionHappyHappierstack-v0.2.15ColliePWAv1.18.0CC Pocketmacos/v1.140.1+264Lucarnev0.5.2PI Dashboardv0.9.0VibeTunnelShuntClaude Code Remote Controlcode-serverv4.141.0OpenVSCode Serveropenvscode-server-v1.109.5VS Code Remote Development extensionssshxv0.4.1Uptermv0.36.0Termixsdk-v1.0.4ttyd1.7.7SSHHIPtmate2.4.0
Product identity
Source modelOpen source↗Open source↗Open source↗Open source↗Open source↗Open source↗Open source↗UnknownProprietary↗Open source↗Open source↗Proprietary↗Open source↗Open source↗Open source↗Open source↗Proprietary↗Open source↗
Primary workflow objectRemote session↗Remote session↗Remote session↗Remote session↗Remote session↗Remote session↗Remote session↗Remote session↗Remote session↗Remote session↗Remote session↗Remote session↗Remote session↗Remote session↗Remote session↗Remote session↗Remote session↗Remote session↗
Product statusActive↗Beta↗Active↗Active↗Active↗Active↗Active↗Active↗Beta↗Active↗Active↗Active↗Active↗Active↗Active↗Active↗Active↗Active↗
Execution and data boundary
Execution locationPaired machine, Vendor cloud↗Local daemon, Paired machine, Vendor cloud, User cloud↗Local daemon, Paired machine↗Paired machine↗Local daemon, Vendor cloud↗Local daemon, Paired machine, User cloud↗Local daemon, Paired machine↗Paired machine↗Paired machine, Vendor cloud↗Local daemon, User cloud↗Local daemon, User cloud↗Ssh host, Container, User cloud↗Local daemon, Paired machine, Vendor cloud↗Local daemon, Paired machine, Vendor cloud, User cloud↗Local daemon, User cloud, Paired machine↗Local daemon, Paired machine↗Paired machine↗Local process, Ssh host↗
Client
Web or mobile clientBuilt in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗
Native iOS clientBuilt in↗Built in↗Not available↗UnknownNot available↗UnknownLimited↗Limited↗Built in↗UnknownUnknownUnknownUnknownUnknownBuilt in↗UnknownBuilt in↗Unknown
Native Android clientBuilt in↗Built in↗Not available↗UnknownNot available↗UnknownUnknownUnknownBuilt in↗UnknownUnknownUnknownUnknownUnknownBuilt in↗UnknownUnknownUnknown
Browser or PWA clientBuilt in↗Built in↗Built in↗Built in↗UnknownBuilt in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗UnknownBuilt in↗Built in↗UnknownUnknown
Session ownership
Connects to an existing sessionBuilt in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Limited↗Limited↗Limited↗Limited↗Limited↗Built in↗Limited↗Built in↗Built in↗
Session host ownershipExisting session on paired machine↗Existing or Happier-launched session on a connected machine↗Existing multiplexer panes on the operator-owned host↗Operator machine↗Agent CLI processes and session files on the operator's local machine↗Existing or dashboard-launched pi session on the connected dashboard host↗Local command or PTY on host Mac↗Existing tmux session on paired machine↗Existing local CLI or VS Code session↗Self-hosted remote editor workspace↗Self-hosted Code OSS server↗SSH host, container, WSL, or tunnel workspace↗Command launched on paired host↗Hosted command or tmux attachment↗Remote SSH/RDP/VNC/Telnet host↗Command or PTY on self-hosted machine↗Operator-owned SSH host↗Operator machine↗
Interaction
Remote approvals and follow-upsBuilt in↗Built in↗Built in↗Built in↗Built in↗Built in↗UnknownBuilt in↗Built in↗UnknownUnknownUnknownUnknownUnknownLimited↗UnknownUnknownUnknown
Live terminal inputBuilt in↗Built in↗Built in↗Built in↗Limited↗Built in↗Built in↗Built in↗Limited↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗
Remote input modelFollow-ups, terminal control, and approve/deny↗Agent messages, approvals, steering, and embedded terminal input↗Structured prompt answers, text replies, special keys, and raw terminal keystrokes↗Agent-aware chat and approval controls↗Channel chat messages, Approve or Deny buttons, slash commands, and quoted-message routing↗Agent prompts and commands, queued input, structured dialogs, and integrated terminal input↗Raw interactive terminal input↗Terminal input, prompts, and structured approve/deny↗Follow-ups and structured approvals↗Full browser IDE, terminal, and file editing↗Full browser IDE, terminal, and file editing↗Full desktop IDE, terminal, and file editing↗Raw collaborative terminal input↗SSH terminal input↗SSH terminal and remote desktop input↗Raw browser terminal input↗Native SSH terminal, Command Dial, and SFTP image insertion↗Live terminal↗
Security
End-to-end encryption documentedLimited↗Built in↗Limited↗UnknownLimited↗Limited↗UnknownUnknownLimited↗UnknownUnknownUnknownBuilt in↗Limited↗UnknownUnknownLimited↗Built in↗
Relay and hosting boundaryLimited↗Built in↗Loopback bridge behind Tailscale Serve or an operator-managed reverse proxy↗UnknownBuilt in↗Local daemon or operator-hosted dashboard with optional zrok tunnel and OAuth allowlist↗Built in↗UnknownBuilt in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗tmate relay or self-hosted server↗
Relay deploymentHosted encrypted sync relay; self-hostable server↗Happier Cloud or self-hosted relay↗No vendor relay; Tailscale Serve or operator-managed proxy or tunnel↗UnknownNo Lucarne vendor relay; Telegram and WeChat clouds connect to the local daemon↗Direct LAN or mDNS, operator-hosted Docker or remote server, or optional zrok tunnel↗LAN, SSH/VPN, or user-supplied tunnel↗UnknownAnthropic-hosted relay↗Direct self-hosted server; user supplies proxy/VPN↗Direct self-hosted server↗SSH, container transport, WSL, or VS Code tunnel↗Hosted relay↗Hosted or self-hosted uptermd relay↗Self-hosted Termix service↗Direct self-hosted WebSocket service↗No vendor relay; direct SSH↗Built in↗
Transport securityEnd-to-end encrypted session content↗End-to-end encrypted by default; configurable self-hosted storage policy↗Deployment-dependent HTTPS with device pairing; no documented end-to-end content encryption↗UnknownChannel-provider transport and authorized-user controls; no documented application-level end-to-end encryption↗Deployment-dependent; tunnel access can use OAuth and an allowlist, while localhost is unguarded↗Deployment-dependent↗UnknownOutbound HTTPS with scoped credentials↗Deployment-dependent TLS or secure tunnel↗Deployment-dependent↗Selected transport↗Argon2-derived AES end-to-end encryption↗SSH transport↗Protocol and deployment-dependent↗Deployment-dependent TLS↗SSH transport security↗SSH↗
Compatibility
Named agent harnessesBuilt in↗Built in↗Any terminal agent; named support for Claude Code, Codex, OpenCode, and pi↗Claude Code↗Claude, Codex, Gemini, GitHub Copilot CLI, pi, and Grok Build↗pi only; Oh My Pi is explicitly unsupported↗Built in↗Built in↗Built in↗UnknownUnknownUnknownUnknownUnknownUnknownUnknownAny CLI or TUI reachable over SSH↗Any terminal program↗
Understands agent state and approvalsBuilt in↗Built in↗Limited↗Built in↗Built in↗Built in↗Limited↗Built in↗Built in↗Limited↗Limited↗Limited↗Limited↗Limited↗Limited↗Limited↗UnknownUnknown
Attention
Push or attention notificationsBuilt in↗Built in↗Built in↗Built in↗Built in↗Built in↗UnknownBuilt in↗Built in↗UnknownUnknownUnknownUnknownUnknownBuilt in↗UnknownNot available↗Unknown
Continuity
Session history or recordingBuilt in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗Built in↗UnknownUnknownUnknownUnknownUnknownBuilt in↗UnknownUnknownUnknown
Session durability boundarySurvives client disconnect while host session runs↗Persistent host sessions with restart resume and tmux-backed terminal resume↗Owned by the host multiplexer while that multiplexer remains running↗UnknownProvider history is resumable; live sessions are daemon-managed with a configurable idle timeout↗Host-persisted pi JSONL history with resume and fork support↗Browser reconnect + recorded PTY; host process must remain↗Owned by tmux; survives browser and client exit↗Survives remote client disconnect; local session must remain↗Server workspace survives browser close↗Server workspace survives browser close↗Remote workspace persists; IDE connection can reconnect↗Host command must remain running↗Host command or tmux attachment must remain↗Saved connection and shared-session history↗Host command must remain running↗Provided by tmux or herdr on the host↗Built in↗
Open-source project
Repository metric scopeWhat the joined repository represents for this product column.Product repository↗Product repository↗Product repository↗Product repository↗Product repository↗Product repository↗Product repository↗Not trackedNot trackedcode-server checked-in source; shallow checkout excludes the uninitialized VS Code submodule.↗Full Code OSS fork; contributor count covers this fork rather than all upstream VS Code authors.↗Not trackedProduct repository↗Product repository↗Whole Termix monorepo, including server and desktop/mobile/web clients.↗Product repository↗Not trackedProduct repository↗
Latest verified releaseNone published↗stack-v0.2.15↗v1.18.0↗macos/v1.140.1+264↗v0.5.2↗v0.9.0↗v1.0.0-beta.18 · repository tag↗Not trackedNot trackedv4.141.0↗openvscode-server-v1.109.5↗Not trackedv0.4.1↗v0.36.0↗sdk-v1.0.4↗1.7.7↗Not tracked2.4.0↗
Release dateNot applicable↗2026-10-08↗2026-10-08↗2026-10-03↗2026-08-02↗2026-10-06↗Not applicable↗Not trackedNot tracked2026-10-08↗2026-02-20↗Not tracked2025-02-12↗2026-10-06↗2026-10-08↗2024-03-30↗Not tracked2019-11-16↗
Repository licenseMIT↗MIT↗MIT↗MIT↗MIT↗MIT↗MIT↗Not trackedNot trackedMIT↗MIT↗Not trackedMIT↗Apache-2.0↗Apache-2.0↗MIT↗Not trackedISC↗
Repository stars24.1K↗1.9K↗1.3K↗1.1K↗339↗315↗4.7K↗Not trackedNot tracked79.6K↗6.2K↗Not tracked7.7K↗1.3K↗15.4K↗12.5K↗Not tracked6.1K↗
Repository forks2.1K↗169↗153↗115↗17↗48↗335↗Not trackedNot tracked6.9K↗608↗Not tracked309↗87↗731↗1.2K↗Not tracked335↗
Open repository issues1.1K↗207↗12↗19↗19↗44↗61↗Not trackedNot tracked150↗131↗Not tracked29↗12↗1↗118↗Not tracked130↗
Contributor entries81↗84↗76↗20↗2↗23↗60↗Not trackedNot tracked303↗2.9K↗Not tracked6↗24↗11↗70↗Not tracked49↗
Source lines at measured refPinned to a verified stable release, a clearly labelled prerelease, or an exact default-branch commit.205.4K↗3.2M↗283K↗238.6K↗146.5K↗801K↗169.8K↗Not trackedNot tracked12.1K↗1.6M↗Not tracked9.1K↗55.1K↗463.4K↗19.2K↗Not tracked39.5K↗
Primary languageTypeScript 95.84%↗TypeScript 90.1%↗TypeScript 97.63%↗Dart 69.55%↗Rust 99.54%↗TypeScript 82.07%↗TypeScript 50.14%↗Not trackedNot trackedTypeScript 81.88%↗TypeScript 95.57%↗Not trackedRust 45.36%↗Go 97.64%↗TypeScript 97.06%↗C 56.07%↗Not trackedC 90.63%↗
Repository size221.3 MB↗721.5 MB↗27.7 MB↗598.9 MB↗10.8 MB↗132.7 MB↗1008.2 MB↗Not trackedNot tracked54.1 MB↗1.1 GB↗Not tracked992 KB↗173.2 MB↗81.3 MB↗20.1 MB↗Not tracked7.8 MB↗
Repository last push2026-10-09↗2026-10-09↗2026-10-08↗2026-10-03↗2026-08-02↗2026-10-08↗2026-08-05↗Not trackedNot tracked2026-10-08↗2026-09-24↗Not tracked2026-09-21↗2026-10-08↗2026-10-09↗2026-08-12↗Not tracked2026-10-06↗
Repository statusActive repository↗Active repository↗Active repository↗Active repository↗Active repository↗Active repository↗Active repository↗Not trackedNot trackedActive repository↗Active repository↗Not trackedActive repository↗Active repository↗Active repository↗Active repository↗Not trackedActive repository↗
Repository data refreshed2026-10-09↗2026-10-09↗2026-10-09↗2026-10-09↗2026-10-09↗2026-10-09↗2026-10-09↗Not trackedNot tracked2026-10-09↗2026-10-09↗Not tracked2026-10-09↗2026-10-09↗2026-10-09↗2026-10-09↗Not tracked2026-10-09↗

No comparison rows match this view.