xyne-boxesfaster than your macbook

Juspay · Incus · Tailscale

A Linux box faster than your MacBook.

Remote Incus machines with a warm Nix store and pre-cached Juspay envs — for builds and shells that crawl on a laptop. SSH in.

Create
$ xyne-boxes create mybox
Connect
$ xyne-boxes connect mybox

01 · Once per machine

Prepare your laptop

Install the CLI with Nix or with the curl installer. Tailscale puts you on the private network. After this, creating a box is the two commands in the next section.

01

Install the CLI

On a pristine Mac (Apple Silicon) or Linux x86_64, install the CLI (and step) with no Nix. Or install Nix and skip this — every command can be nix run github:juspay/xyne-boxes instead.

$curl -fsSL https://raw.githubusercontent.com/juspay/xyne-boxes/nightly/installer/install.sh | sh
02

Install Tailscale

You need the Tailscale CLI so you can join the Juspay network. On macOS, install it from the Mac App Store. On Linux, use the official Linux packages or your distro’s Tailscale module. tailscale --help should print something.

macOS: CLI missing after the App Store install

The App Store build does not always put the CLI on your PATH. Paste this once:

$mkdir -p /usr/local/bin
printf '#!/bin/sh\nexec /Applications/Tailscale.app/Contents/MacOS/Tailscale "$@"\n' > /usr/local/bin/tailscale
chmod +x /usr/local/bin/tailscale
03

Join the network

This opens a browser so you can sign in.

$sudo tailscale up --login-server=https://headscale.nixos.asia --hostname $(hostname -s)

02 · Every day

Create, then jump in

Pick a name. First command builds the box. Second drops you in as toor. VS Code is optional.

01

Create it

$xyne-boxes create <name>
First time — and about once a week — you will sign in

The terminal prints a link and a short code. Open google.com/device, enter the code, and sign in with your Juspay Google account. That issues the SSH certificate.

02

Connect

$xyne-boxes connect <name>
Need agent forwarding for git push from the box?

Load your laptop key into the agent first, then connect.

$eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Prefer ssh <name> instead of connect

Do this once. The Include line must sit at the top of ~/.ssh/config — SSH scopes it to the last Host block if it is appended. After that, plain ssh <name> works for every box you create. If you already appended the line, move it to the top.

$mkdir -p ~/.ssh
touch ~/.ssh/config
grep -qxF 'Include ~/.pu-state/*/ssh_config' ~/.ssh/config \
  || { { printf 'Include ~/.pu-state/*/ssh_config\n\n'; cat ~/.ssh/config; } > ~/.ssh/config.new \
        && mv ~/.ssh/config.new ~/.ssh/config; }
03

Open in VS Code optional

Edit and debug on the box from your laptop. Install the Remote - SSH extension (or the Remote Development pack). Microsoft’s SSH guide and tutorial walk through the UI.

VS Code uses your SSH config, so do the Prefer ssh <name> instead of connect step once. Then in VS Code: Command Palette → Remote-SSH: Connect to Host… → pick <name> → open a folder. The workspace is the box, not your MacBook.

03 · Reference

Every command

After the curl installer the command is xyne-boxes. If you skipped it, prefix with nix run github:juspay/xyne-boxes --. Copy pastes the installed form.

CommandDoes
create <name>
Create a box
connect <name>
SSH in. Also renews an expired certificate.
list
List your boxes
fork <source> <name>
Clone an existing box
destroy <name> …
Destroy one or more boxes
version
Print package, commit, bun, ssh, and step-cli versions

04 · The environment

What you land in

An Incus container cloned from a loaded NixOS image — not a bare machine.

Ready to work

git, vim, tmux, direnv, starship, and more. Open the box in VS Code with Remote - SSH if you want a full IDE.

Warm Nix

Flakes are on and the box shares the host’s /nix/store. Common Juspay dev-envs are pre-cached, so shells and builds start warm — that’s why this beats a fresh MacBook.

Your home persists

You land as toor. The home directory survives stop/start. It is gone only when you destroy.

New to Nix?

Start at nixos.asia/nix-first. Next: home-manager via nixos-unified-template.

05 · Break glass

If something fails

Access expired

Certificates last about a week. If you ssh in with the generated config after that, you get:

xyne-boxes: SSH authentication failed. The certificate is missing or expired. xyne-boxes connect <name>

Nothing is broken. xyne-boxes connect <name> renews before it opens SSH. Sign in the same way — about 20 seconds, then you are good for another week.

$xyne-boxes connect <name>

GitHub 403

Rate limit. Turn the VPN off and try again. If it keeps happening, set up a GitHub token for a higher limit.

Still stuck?

Join #xyne-boxes-feedback on Xyne Spaces.