Install the hooks

Claude Code on macOS, Linux or Windows.

Before installing anything, read the hook script for your platform — hook.sh or hook.ps1: the allowlist at the top is the complete list of what leaves your machine, and the two are line-for-line counterparts. Adding a machine needs an operator to approve it — private beta.

1. Enroll this machine

The enroll script mints an ingest token here, on this machine, and sends the server only its hash. It prints a short code; an operator approves that code on the board, and the script writes your config and fetches the hook script. The token is never displayed, never travels, and never reaches the server — so there is nothing to paste, and nothing for an agent to echo into a transcript.

macOS and Linuxenroll.sh:

curl -fsS https://meathook.ai/enroll.sh -o /tmp/meathook-enroll.sh
less /tmp/meathook-enroll.sh        # it is short; read it
sh /tmp/meathook-enroll.sh

Takes --machine LABEL to suggest a board name (defaults to the short hostname; the operator can correct it at approval) and --force to replace an existing config.

Windowsenroll.ps1, native PowerShell, no Git Bash needed:

Invoke-WebRequest https://meathook.ai/enroll.ps1 -OutFile $env:TEMP\meathook-enroll.ps1
notepad $env:TEMP\meathook-enroll.ps1   # it is short; read it
powershell -ExecutionPolicy Bypass -File $env:TEMP\meathook-enroll.ps1

Same options, PowerShell-style: -Machine LABEL and -Force.

2. Optional settings

The script writes ~/.meathook/config.json with the server URL, your token and the machine label. You can add "project" (defaults to the repo name), "prompt_summaries": "true" to show your first prompt of a session as its board summary, and "reply_summaries": "true" to replace that with the agent's latest closing message each turn — both are opt-in verbosity, off by default, and both scrub token-shaped strings before sending. A .meathook.json in a repo overrides any of these for that repo.

3. Register the hooks with Claude Code

Merge the snippet for your platform — claude-hooks.json or claude-hooks-windows.json — into your Claude Code settings. The enroll script prints this command too; it doesn't run it, because it edits your config, not ours.

macOS and Linux, into ~/.claude/settings.json:

curl -fsS https://meathook.ai/claude-hooks.json -o /tmp/mh-hooks.json
if [ -f ~/.claude/settings.json ]; then
  jq -s '.[0] * .[1]' ~/.claude/settings.json /tmp/mh-hooks.json > /tmp/mh-merged.json
  mv /tmp/mh-merged.json ~/.claude/settings.json
else
  cp /tmp/mh-hooks.json ~/.claude/settings.json
fi

Windows, into %USERPROFILE%\.claude\settings.json:

$s = "$env:USERPROFILE\.claude\settings.json"
$new = Invoke-RestMethod https://meathook.ai/claude-hooks-windows.json
if (Test-Path $s) {
  $cur = Get-Content $s -Raw | ConvertFrom-Json
  $cur | Add-Member -NotePropertyName hooks -NotePropertyValue $new.hooks -Force
  $cur | ConvertTo-Json -Depth 10 | Set-Content $s
} else {
  New-Item -ItemType Directory -Force -Path (Split-Path $s) | Out-Null
  $new | ConvertTo-Json -Depth 10 | Set-Content $s
}

4. Verify

Hooks load at session start, so already-running sessions won't report. Start a new Claude Code session anywhere and it should appear on the board within a few seconds.