HappierDocs

Dev box

Run Happier CLI + daemon inside a container (dev-box), and pair it to your account without opening a browser.

This page explains how to run Happier inside a container (for example: a remote VM or a disposable “dev box”) and authenticate it from your local machine.

Dev box image

We publish a preview dev box image on Docker Hub:

docker pull happierdev/dev-box:preview

We also publish the same image to GitHub Container Registry (GHCR):

docker pull ghcr.io/happier-dev/dev-box:preview

The image includes:

  • the published happier CLI binary
  • optional provider CLIs, installed on first boot via happier install provider

The image does not include a source checkout or hstack; it is meant for using Happier from a container, not developing Happier itself.

Note: “dev box” is our Docker image name — it’s not tied to any specific editor “devcontainer” feature.

Optional: install provider CLIs on first boot

Set HAPPIER_PROVIDER_CLIS to install provider CLIs through the Happier CLI:

docker run --rm -it \
  -e HAPPIER_PROVIDER_CLIS=claude,codex \
  happierdev/dev-box:preview

Supported values today: claude, codex.

Persist ~/.happier so credentials, machine IDs, logs, etc. survive container restarts:

docker run --rm -it \
  -v happier-home:/home/happier/.happier \
  happierdev/dev-box:preview

Pair a remote container/host from your local CLI (no web UI)

If your local machine is already authenticated (happier auth status is OK), you can pair a remote host/container over SSH:

happier auth pair-remote --ssh user@host

What this does:

  1. Runs happier auth request --json on the remote host.
  2. Approves the request locally using your existing token (the local token is not sent to the remote host).
  3. Runs happier auth wait --public-key ... --json on the remote host to claim the request and write credentials.

Use --json when scripting. If your active relay URL is loopback-only (localhost / 127.0.0.1), interactive mode offers reachable addresses for this computer. In scripts, pass --server-url-for-remote <url> with the address the remote host can use to reach this computer's relay (--remote-server-url is still accepted as a legacy alias).

Manual (scriptable) alternative

If you want to integrate with custom orchestration:

  1. On the remote host:
happier auth request --json
  1. On your local machine (authenticated):
happier auth approve --public-key <publicKey> --json
  1. Back on the remote host:
happier auth wait --public-key <publicKey> --json

On this page