CLI
Install, authenticate, and target servers from the CLI.
Install
curl -fsSL https://happier.dev/install | bashWindows (PowerShell):
irm https://happier.dev/install.ps1 | iexnpm fallback (power-user / Node workflow):
npm install -g @happier-dev/cliAuthenticate
happier auth loginhappier auth login prints both web and mobile connection options.
When using self-hosted servers, run login against the correct server profile (see below).
Recommended first-run flow:
- Use the mobile app path first (QR/deep link) to sign in/create account and approve terminal connection.
- If you already use Happier on another device, sign in with that same account.
- If you open a terminal-connect link while logged out, Happier routes you through sign in and then returns you to terminal approval automatically.
Remote machine pairing (SSH, automated)
If you want to run Happier on a remote machine (VPS, home server, dev box) but approve/authenticate it from a machine where you're already signed in:
happier auth pair-remote --ssh user@host --jsonNotes:
- This orchestrates a claim-gated pairing flow over SSH (remote request → local approve → remote wait).
- Add
--server ...or--server-url/--webapp-urlif you're targeting a self-hosted server.
Pairing (JSON, manual / scripting)
Split the flow when you want full control (automation, custom SSH, etc):
# On the remote host (prints a request + publicKey)
happier auth request --json
# On a local machine that's already authenticated (approves the public key)
happier auth approve --public-key <publicKey> --json
# Back on the remote host (waits, claims, and writes credentials)
happier auth wait --public-key <publicKey> --jsonServer profiles
Save and switch servers
happier server list
happier server current
happier server add --name company --server-url https://api.company.example --webapp-url https://app.company.example --use
happier server use company--use (and happier server use ...) sets the default server for future commands, so you can usually omit --server ... once it’s selected.
Target a server for one command
Use per-invocation targeting when you do not want to switch the default:
happier --server company auth login
happier --server personal daemon statusYou can also use URL flags:
happier --server-url https://api.company.example --webapp-url https://app.company.example auth login
happier --server-url https://api.company.example --webapp-url https://app.company.example auth pair-remote --ssh user@host --jsonDaemon (background mode)
For always-on background sessions, remote control, and headless servers, see Daemon.
Multi-server reference
For full multi-server and multi-daemon guidance, see Features → Multi-server.