Run it in the background
service install runs the daemon as a per-user service: a launchd LaunchAgent on macOS, a systemd user unit on Linux. It starts at login, restarts if the daemon exits with an error, and runs in your session, so the OS keyring and your gh and Claude Code logins work as they do in a terminal.
open-conduit service install # takes serve's flagsopen-conduit service statusopen-conduit service stop # until the next start or loginopen-conduit service startopen-conduit service uninstallinstallrecords the config path, the state directory, theserveflags you give it and a PATH built from your shell’s PATH and whereverclaudeorcodex,gitandghare. It warns when it can’t findgit, or neitherclaudenorcodex. A tunnel’s program (ngrok, cloudflared) is found on your shell’s PATH, or at the tunnel config’sbinary. Its package’s doctor check reports when it is missing.start(andinstall, which starts the service) returns once the daemon answers on its socket, waiting up to 30 seconds. launchd holds a start back for 10 seconds after the daemon last exited, so astartstraight after astoptakes a little longer; once that has passed,startasks launchd again. A daemon that doesn’t come up in time is reported as an error with the log’s path, never as started.- Run
installagain after changing flags or installing a tool the daemon needs (a repository’s toolchain, say): it replaces the unit and restarts the daemon. open-conduit upgrade, or the web view’s Update page, installs a new release and restarts the service on it (see upgrading).- A
brew upgraderestarts the daemon on the new version too. When the files the daemon runs from are removed, asbrew upgradedoes with the old version’s directory, it stops with an error, and the service starts the new binary. Running turns carry on and the new daemon adopts them, but a shell step that callsosafter the upgrade fails, since its PATH still names the removed directory. Upgrading whileopen-conduit doctorshows nothing running undercapacityavoids that. - Remove the service with
service uninstallbefore a plainbrew uninstall, or usebrew uninstall --zap open-conduit, which removes it with the cask. If the cask is already gone,launchctl bootout gui/$(id -u)/com.open-conduit.daemonand deleting the plist clear it. - Webhooks come from the config’s
settings.webhooks, as withserve. - Output goes to
~/.local/state/open-conduit/logs/service.log(under--data-dirif you give one).open-conduit doctorreports whether the service is installed and running. - The unit lives at
~/Library/LaunchAgents/com.open-conduit.daemon.plistor~/.config/systemd/user/open-conduit.service. - Stop the service before
backup createorstate check, which need the daemon stopped.