Home / Docs / How it works

How it works

One pipeline, all local: agent events are appended to a file on your Mac, and the app assembles session state from it. No server is involved at any point.

Claude Code session
  โ””โ”€ hooks (SessionStart / UserPromptSubmit / PermissionRequest / PostToolUse / Stop / SessionEnd)
       โ””โ”€ appends one JSON line per event to ~/.butler/events.jsonl
            โ””โ”€ Silicon Workers watches the file and assembles per-session state
                 โ””โ”€ menu bar panel updates in real time

The six Claude Code hook events

Silicon Workers listens through Claude Code's official hooks mechanism. The hook script only writes a log line; it always exits 0 with zero output, which for PermissionRequest means "no opinion" โ€” approval prompts reach you exactly as before.

Hook eventWhat it means in the panel
SessionStartSession lifecycle bookkeeping (no card yet โ€” avoids noise from warm-up sessions)
UserPromptSubmitYou sent a message โ†’ card created / back to Running; your first message becomes the title
PermissionRequestAgent needs your approval โ†’ Waiting for you (strong signal, counted on the menu bar badge)
PostToolUseA tool finished = still working โ†’ back to Running (after you approve, the panel flips back automatically)
StopA response turn ended โ†’ Waiting for you (weak signal: "take a look")
SessionEndSession over โ†’ the card leaves the panel

Strong signals vs. weak signals

Timeouts and edge cases

Known limitations (accepted by design)

Next: Connect Codex ยท Uninstall