Daemon
Run Happier in the background (sessions, remote control, headless servers).
What is the daemon?
The Happier daemon is a small background process that keeps Happier “available” on your machine.
In practice, it’s what enables Happier to start and manage sessions even when you don’t have a terminal open. This is especially important for features like remote start (e.g. from the app/web UI): the daemon is the thing on your computer that can receive that request and launch the session locally.
It also helps the CLI:
- keep long-running sessions alive
- reconnect to and manage existing sessions
- support remote control / orchestration features without requiring your terminal to stay open
When does it run?
You can run it in two ways:
- On-demand: start it when you need it (some CLI commands may start it automatically).
- Always-on (recommended): install it as a user service so it starts automatically after login and keeps running in the background.
Why always-on is recommended:
- It makes your machine ready to start sessions remotely at any time.
- It avoids “why can’t I start a session?” situations where the daemon simply isn’t running yet.
- It’s the smoothest experience on headless servers (or laptops you want to control remotely).
Common commands
happier daemon status
happier daemon start
happier daemon stop
happier daemon list
happier daemon logsAlways-on: install as a user service
Install for your current default server profile:
happier daemon installAdvanced lifecycle control (and dry-run planning):
happier daemon service status
happier daemon service install --dry-run
happier daemon service restartPlatform notes:
- macOS: LaunchAgent
- Linux:
systemd --user - Windows: Scheduled Task (user-level)
To remove it:
happier daemon uninstallOn Windows, happier daemon service paths prints the Scheduled Task name and wrapper path.
Headless authentication (no TTY)
On headless servers (or anywhere you don’t have an interactive TTY), use:
happier auth login --no-open --method webThis prints an authorization URL and waits until you approve it in your browser (the request can expire; if it does, rerun the command).
Recommended: remote pairing over SSH
If you have SSH access and want a fully automated experience (request + approval + credential write), run this from a machine where you're already authenticated:
happier auth pair-remote --ssh user@host --jsonThis is especially useful for provisioning headless servers because you can approve the connection from your already-signed-in machine and avoid copy/pasting URLs.
Troubleshooting
- Check status:
happier daemon status - Find logs:
happier daemon logs - Service paths:
happier daemon service paths