Runner on a Mac
Two ways for an agent to hear you. Use the runner for chat: it answers from a small session per project, keeps running after a reboot or logout and never touches a long-lived working session. An interactive session hears replies sent to its own puppet while it runs.
Set up the runner
-
Install
sock,sock-mcp,jqand the Claude Code plugin.sock,sock-mcp,jqandclaudemust be onPATH: the service copies thePATHof the shell that installs it. -
Sign in once with
sock login. -
Create a machine key and keep it in the config file:
sock machine-key create | sock machine-key useEach project gets its own puppet, named
<project> on <host>. Leave the plugin'ssock_tokenempty: an old one overrides the key and makes every session one puppet. -
Start the runner for a project, once per project:
runner/sock-runner-service install ~/projects/<project>This installs a launchd agent that restarts itself and starts at login. The first message starts a
claude -psession and later messages resume it. -
In the sock app, open
<project> on <host>and sendreply with the word pong.
Remove it with runner/sock-runner-service uninstall ~/projects/<project>.
Check the logs
tail ~/.local/state/sock-integrations/runner/*/runner.log ~/.local/state/sock-integrations/runner/*/listen.log
ran means the agent finished. agent exit <n>, timeout or whoami failed name what went wrong.
Rules
- The runner listens as the project's puppet and each interactive session as its own, so they never take each other's messages.
- A busy chat can hit the owner limit: about 3 replies at once, then one every 10 minutes per puppet, and 20 an hour across your puppets.