latest release v4.1.0

Vibe-code any coding agent from your phone — securely.

One Go binary wires Tailscale, hardened SSH, tmux/mosh, and self-hosted push into a phone-controlled dev rig. Dry-run by default. Audited. Reversible. Zero telemetry.

curl -fsSL https://raw.githubusercontent.com/abysslink/abysslink/main/install.sh | sh

agent-agnostic by design — Claude Code is one opt-in module, not a dependency

begin the descent — the floor is 6,000 m down

−200 m · sunlight zone · where you live

Leave the desk. Keep the leash.

You start a long agent run and walk away. Your laptop stays home, unexposed. Three things can happen next — Abysslink has a move for each.

moment 01 · the buzz

It needs you. You know in one second.

The agent stops to ask permission — at 9pm, while you're on the couch. Your phone buzzes with the exact rig, session, and pane that's waiting. The push carries routing metadata only; the content is fetched from your own machine over the tailnet.

moment 02 · the tap

One tap. You're in the real terminal.

Not a chat transcript of your terminal — the actual live tmux session, same scrollback, cursor where the agent left it. mosh keeps it alive through wifi↔cell hops and subway tunnels. Read what it did, type the next instruction, pocket the phone.

moment 03 · the veto

Going rogue? Frozen mid-keystroke.

Dangerous commands hit a four-verifier quorum gate with a compiled deny-floor — some things are un-askable, no approval path exists. And abysslink arm wraps whole runs in a kill-switch: freeze from your phone, roll back to the pre-run snapshot. Ships shadow-first by design: observe, calibrate, then flip gate.enforcing to enforce.

78doctor checks, fail-closed
64security claims mapped to code
100%of managed file changes backed up & reversible
0telemetry, CI-enforced

−800 m · twilight zone · how it works

Nobody in the middle.

Phone and laptop talk directly over an encrypted private mesh — Tailscale by default, self-hosted Headscale or NetBird if even the coordination should be yours. The control plane exchanges public keys only; it never sees traffic, code, or commands.

phone mosh · ntfy WireGuard tunnel — end-to-end encrypted your laptop abysslinkd · tmux · agent self-hosted push · audit log nothing exposed to the internet control plane — keys only

Session-aware pushes

Watchers fire when a pane goes idle, a log line matches, or an HTTP check flips — each wake names the exact rig, agent, and pane.

Preview before apply

Every mutating command plans first: up shows what it would change and touches nothing until --apply.

Hardened, fail-closed

Tailnet-only binds, Funnel rejected at the schema, FileVault/LUKS required, 12h SSH re-check. doctor refuses to pass unsafe states.

Agent containment

Phone approve loop (never auto-approves), quorum gate, apoptosis kill-switch, dead-man switch, exfil sentinel — five independent layers, shadow-first by default.

Tamper-evident audit trail

Backup + HMAC-chained log entry on every file change; signed evidence bundles for auditors; uninstall restores everything.

Fleet-ready

Enroll every machine as a named rig; --all-rigs fans out status, doctor, notify, panic. Wake-on-LAN included.

−3,000 m · midnight zone · how it compares

Choose your vessel.

Honest comparison — several of these are excellent, they just make a different trade.

AbysslinkHappyTailscale + tmux + scriptsCloud agent service
Who can read your sessionnobody — E2E WireGuard (encrypted DERP fallback)nobody (E2E relay)nobodythe vendor
Real terminal into your machine✓ SSH + tmux + mosh✗ wraps the agent UI✓ if you build it✗ their VM, not your rig
Agent-agnostic✓ any commandClaude + Codex✗ one vendor
Host hardening + audit + undo✓ automated, fail-closed✗ DIY, usually skippedn/a
Setup effort~5 min guidedapp + relay accounta weekend of footgunszero — that's the trade
When NOT to use AbysslinkYour dev box runs Windows (unsupported) · you want a GUI, not a terminal · you can't run disk encryption — doctor fails closed without FileVault/LUKS · you want zero setup and don't mind a vendor cloud.

−4,500 m · abyssal zone · what it refuses to do

Security that argues back.

Warnings get clicked through, so the dangerous paths simply don't exist. Enforced in code — you cannot configure your way past them.

  • Bind to 0.0.0.0 — listeners resolve to the tailnet IP, full stop
  • Enable Tailscale Funnel — rejected at the YAML schema; no flag exists
  • Put a secret on argv — stdin or OS keychain only
  • Write secrets to the audit log — titles and diff hashes only
  • Run on an unencrypted disk — doctor exits fatal, no override
  • Upgrade to an unverified binaryupgrade checks cosign + SLSA provenance, refuses root
  • Mutate without a plan — dry-run default, --apply is deliberate
  • Phone home — zero telemetry, CI-enforced

Don't take the page's word for it — abysslink threat-model is read-only, needs zero setup, and checks these defenses live on your machine.

  • Signed, reproducible releasesCosign keyless + SLSA Build L3 provenance; byte-reproducible builds checked in CI. Verify a release yourself.
  • Every claim maps to code64 audited rows in CLAIMS-AUDIT.md — quote → file → doctor check.
  • Honest threat modelDuress decoy scoped to casual coercion (no wipe, by test); sentinel is defense-in-depth, not a boundary. Read the non-goals.
  • Apache-2.0, freeStable v4.x; security fixes land on the latest minor (policy). No paid tier, no cloud service, no account — there is no server of ours to sign into.

−6,000 m · hadal zone — the floor · you made it, get linked

Install in one line.

macOS 13+ or Linux (amd64/arm64), disk encryption on, a Tailscale account (or self-hosted backend). About five minutes of commands, plus a couple more to enroll your phone — the quickstart walks every step.

curl -fsSL https://raw.githubusercontent.com/abysslink/abysslink/main/install.sh | sh

Verifies the SHA-256 manifest always, and the cosign signature bundle when cosign is installed (set ABYSSLINK_REQUIRE_COSIGN=1 to require it). No sudo. Then: abysslink init.

Don't trust the installer? Verify the release yourself — cosign keyless + SLSA L3 provenance, checksums signed on every release.

  1. curl -fsSL https://raw.githubusercontent.com/abysslink/abysslink/main/install.sh | sh
  2. abysslink init — interactive wizard writes abysslink.yaml
  3. abysslink up — preview the plan; nothing is touched
  4. abysslink up --apply — converge when the plan looks right
  5. abysslink daemon enable --apply — optional: watchers, receipts, one-scan pairing
  6. abysslink doctor — fail-closed health check
  7. abysslink enroll phone --apply — QR pairing; then mosh in from your phone

ascending · decompression stop · questions people actually ask

Straight answers.

Do I need Claude Code?

No. The core is a generic notify/watch/approve layer that wraps any command — Claude Code support is one opt-in module that wires its hooks in. Codex, Aider, a long test run, make deploy: all plug into the same pipeline.

What does it cost?

Nothing for Abysslink itself — Apache-2.0, no paid tier, no cloud service, no Abysslink account. A free Tailscale account (or a self-hosted backend) is the only external requirement; any VPN plan or hardware cost is yours and separate.

Does it phone home?

No. Zero telemetry, enforced by a CI check that scans the codebase for telemetry imports. The only outbound calls are ones you invoke: your VPN backend's API, GitHub during upgrade/verify, your own push server. Every push path's visibility is documented in who sees what.

What can my push provider read?

A device token and a generic title — never content. The notification body has no field on the push wire by construction; your phone fetches it from your own machine over the private network with a single-use token.

What if my devices can't connect directly?

Traffic falls back to Tailscale's DERP relays — still end-to-end WireGuard-encrypted, so the relay forwards ciphertext it cannot read. The coordination server itself only ever exchanges public keys.

Which platforms does the rig side run on?

macOS 13+ and Linux (amd64/arm64) only. No Windows — that's a deliberate scope line, listed under "when not to use" above.

iPhone or Android?

Both. Any mosh/SSH client (Blink, Termius, Termux) plus the ntfy app. There is no Abysslink mobile app — nothing extra to trust or keep updated.

What if my phone is stolen?

abysslink panic revokes the phone's VPN key, push token, and SSH certificate in seconds. Sessions re-check every 12 hours, bounding how long a stolen device stays useful.

How do I uninstall?

abysslink uninstall previews, then reverses every system change from its backups. Binary removal per install method is in the uninstall guide.