Skip to content

Make install recipe handle running services gracefully #45

Description

@jakewan

Context

just install fails with "Text file busy" when the daemon or MCP binary is currently running. This requires manually stopping the service before installing and restarting afterward, which adds friction to the build-install-test cycle.

Current behavior

$ just install
cp daemon/finch-daemon ~/.local/bin/
cp: cannot create regular file '/home/jacob/.local/bin/finch-daemon': Text file busy

The same happens for the MCP binary when Claude Desktop holds it.

Proposal

Have the install recipe stop the service before copying and restart it afterward (at least for the daemon, which we control via systemd). For example:

systemctl --user stop finch.service
cp daemon/finch-daemon ~/.local/bin/
systemctl --user start finch.service

The MCP binary is managed by Claude Desktop, so it may need a separate approach or at minimum a clear error message suggesting a restart.

Motivation

Encountered during smoke testing of #43 — had to manually orchestrate stop/install/restart to verify the new ListTransactions RPC.

Metadata

Metadata

Assignees

No one assigned

    Labels

    buildBuild pipeline and install tooling

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions