Happier Docs
Clients

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

Embedded terminal support

The in-app embedded terminal also depends on the daemon.

That is what allows Happier to:

  • create the terminal session on your machine,
  • reconnect to that same terminal after refresh/navigation,
  • stream output back into the app UI,
  • resize and restart the terminal from the app.

If the daemon is not running or the machine is unreachable, the embedded terminal cannot work.

Full guide: Embedded terminal.

Provider authentication support

Provider login flows in provider settings also depend on the daemon because Happier runs the real provider CLI on the target machine.

That is what allows Happier to:

  • launch provider login commands on the selected machine
  • stream the provider’s terminal output back into the app
  • detect URLs printed during login flows
  • refresh machine-local auth state after the login flow exits

Full guide: Provider authentication.

Local memory search support

Local memory search also depends on the daemon.

That is what allows Happier to:

  • build the machine-local memory index
  • maintain light or deep transcript indexing in the background
  • run optional local embeddings models on the machine
  • query the local index from the app/web UI

Because the index is daemon-local, memory search is scoped to the specific machine where the daemon runs.

Full guide: Local memory search.

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 logs

Release lanes

The daemon follows the CLI/runtime lane you installed on that machine:

  • stable CLI install -> stable daemon/runtime
  • preview CLI install -> preview daemon/runtime
  • dev CLI install -> dev daemon/runtime

That means the public lane commands are:

happier daemon install
hprev daemon install
hdev daemon install

Likewise, updater commands stay lane-specific:

happier self update
hprev self update
hdev self update

There is no separate public daemon installer endpoint today; the daemon rides with the matching CLI lane on that machine.

Side-by-side installs (stable vs preview vs dev)

You can install all three public lanes side-by-side (happier, hprev, hdev) without them overwriting each other.

Daemon runtime state is lane-scoped, and daemon services (LaunchAgent/systemd/Scheduled Task) use lane-scoped service identifiers. To inspect the exact service name/label/unit on your platform, run:

happier daemon service paths
hprev daemon service paths
hdev daemon service paths

Recommendation: keep only one lane’s daemon service enabled for a given server profile unless you have a specific reason to run multiple daemons concurrently.

Always-on: install as a user service

Install for your current default server profile:

happier daemon install

Advanced lifecycle control (and dry-run planning):

happier daemon service status
happier daemon service install --dry-run
happier daemon service restart

Platform notes:

  • macOS: LaunchAgent
  • Linux: systemd --user
  • Windows: Scheduled Task (user-level)

To remove it:

happier daemon uninstall

On 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 web

This prints an authorization URL and waits until you approve it in your browser (the request can expire; if it does, rerun the command).

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 --json

This 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

On this page