Skip to content
grove
Esc
↑↓navigate↵open⌘Jpreview
On this page

grove start, stop, restart

The daemon is one process for the machine, terminating TLS and holding every lease. These bring it up, take it down, and replace it.

One daemon serves every context on the machine. It terminates TLS for each context’s hostname, routes it to the port that context leased, and holds the leases. A lease lasts exactly as long as the grove exec connection that asked for it, so stopping the daemon drops all of them at once.

Nothing supervises the daemon and nothing starts it at boot. Its output goes to daemon.log in the state directory.

grove start

grove start

Start the daemon in the background, if it is not already running.

Running commands through grove exec starts one on its own, so this is for bringing the proxy up without running anything: a hostname you have bookmarked answers again without touching the project it belongs to.

grove stop

grove stop [--force]

Stop the running daemon.

Every lease goes with it, detached ones included, since nothing about them survives the process. Stopping a daemon that is not running is not an error.

One daemon serves the machine, so this reaches projects other than the one you are standing in. It refuses while anything is answering on a port grove leased, since those routes go with the daemon. A port nothing answers on does not stop it, and grove hold is what puts a detached route back. It tells you what it dropped.

grove restart

grove restart

Stop the daemon if it is running, then start a fresh one in the background.

This is what to run after rebuilding or upgrading grove, since the daemon keeps speaking the protocol it was built with.

Detached ports are taken again on the far side: before stopping anything, restart notes which worktrees hold detached leases, and once the new daemon is up it runs the equivalent of grove hold in each. A lease held by a running command is not, since nothing reconnects that command to a new daemon, so it has to be run again. Restart tells you which routes that cost.

Flags

start and restart take the daemon’s own settings, which are also the GROVE_LISTEN, GROVE_HTTP_LISTEN, GROVE_SOCKET, and GROVE_STATE_DIR variables:

Flag Meaning
--listen The address to serve HTTPS on.
--http-listen The address to answer plain HTTP on, redirecting to HTTPS.
--domain The domain every context lives under.
--ca-dir The directory holding the local CA.
--socket The control socket path.

stop takes --socket and --force, which stops even while a running command holds a lease.

grove daemon

Hidden from the command list, grove daemon runs the proxy and lease registry in the foreground. It’s what start spawns, and not how anyone starts a daemon for themselves.

Last updated on September 22, 2026

Was this page helpful?