Built for your Tailscale tailnet

Every device's terminal.
One command away.

Tailminal puts a secure terminal server on every machine in your tailnet. Exec commands from anywhere, attach to persistent shell sessions, and let your AI agents drive it all — plain stdin, plain stdout.

Get started Agent setup → /llms.txt
$ tailminal exec laptop -- adb devices
List of devices attached
emulator-5554   device

$ tailminal attach laptop
laptop ~ ▌  

Everything a terminal across machines needs

⌨️ One-shot exec

Run a command on any node and stream stdout/stderr live. Exit codes propagate — perfect for scripts and CI-style checks.

🔁 Persistent PTY sessions

Interactive shells that survive disconnects. Detach on your laptop, reattach from your PC with full scrollback replay.

🤖 Agent-native

tailminal exec and tailminal attach are plain stdin/stdout subprocesses. Any agent framework can spawn them — zero SDK integration.

🖥️ Web UI on every node

Each device serves a dashboard: host list, live xterm.js terminal, and a quick-command form. No client install needed.

🔒 Tailnet-private

Nothing leaves your tailnet. Every API call requires a per-node bearer token. No accounts, no cloud, no telemetry.

🧩 One binary, any OS

Windows (PowerShell & CMD), macOS (zsh), Linux (bash/sh). Same package everywhere — peer-to-peer, no hub, no single point of failure.

How it works

PC tailminal client
HTTP + WebSocket
over the tailnet · port 7601
Laptop tailminal server + PTY

Every node runs the identical server. Peers are discovered via MagicDNS. No central coordinator — if a node is up, it works.

Up and running in three steps

  1. Install & build

    git clone <your-fork> && cd tailminal
    pnpm install && pnpm build
  2. Start a node

    tailminal serve
    # generates ~/.tailminal/token + config.json
  3. Reach it from anywhere in your tailnet

    tailminal hosts
    tailminal exec laptop -- uname -a
    tailminal attach laptop

Add peers to ~/.tailminal/config.json — they appear in the CLI and the web UI automatically.

Building an agent?

Don't scrape this page — fetch /llms.txt. It contains the full setup guide, API surface, and copy-paste integration patterns written for machines.

Read /llms.txt