git, so Bilanc can see both sides of the work: what the agent wrote, and what the engineer committed.
Where the AI Coding Tools connections give you seat- and token-level adoption, posthook gives you attribution: which lines of which commits were written by an agent, by which model, from which session, and what the engineer prompted to get them.
How it works
- Hooks in each agent’s global config (
~/.claude/settings.json,~/.cursor/hooks.json,~/.codex/config.toml) record every edit and prompt, with the exact line ranges the agent touched. - A git shadow — a
gitsymlink installed ahead of the real binary onPATH— records every commit and clone, on every repo, with no per-repo setup. - Everything lands in a local SQLite file at
~/.posthook/posthook.db. Engineers can query it themselves withposthook blame,posthook metrics, andposthook dash. - A background sync daemon (launchd on macOS, systemd on Linux) flushes new rows to your Bilanc workspace every few seconds, authenticated with a team install key.
Requirements
- macOS or Linux on Intel or Apple Silicon / arm64. Windows is not supported yet.
curlorwget, andgitonPATH. Nothing else — the installer downloads a static binary.- Node.js 24+ is optional, only for the engineer’s local
posthook dashweb view. Team sync does not need it.
Installing
There are two ways to roll posthook out. Both use the same install link; they differ only in who runs it.Share a link
Each engineer runs one command in their terminal. Best for teams up to a few dozen people.
MDM deployment
Push the install through Jamf, Kandji, Intune, or any MDM that runs scripts. Recommended for org-wide rollouts.
Get an install link
Who needs to do it: a Bilanc Owner or Manager.- Sign in to app.bilanc.co and go to Admin → Connections.
- Under AI Tools, click Connect on the PostHook card.
-
Click Generate install link and copy the command shown. It looks like this:
Share a link
Send the command to your engineers. Each of them runs it once in a terminal. The installer:- downloads the latest release for their OS and CPU, verifies the SHA-256 checksum, and installs it to
~/.local/bin - writes the team key and endpoint into
~/.posthook/config.json - runs
posthook init, which installs hooks for every agent it detects and sets up the git shadow - prompts for the engineer’s work email so the dashboard can attribute their sessions (it suggests their git identity as a default)
- installs the background sync daemon and starts it
posthook status. If ~/.local/bin isn’t ahead of git on their PATH, the installer prints the line to add to their shell profile.
For anything larger than a handful of machines, or where you want the install to happen without engineers doing anything, see MDM deployment.
What gets sent
Team sync is a faithful, append-only replica of the local database. Nothing leaves the machine until an install key is configured, and posthook never phones home in local-only mode.
Prompts and tool payloads can contain source code. If that’s a concern for a particular repository, talk to us about exclusions before rolling out.
Everyday commands
Posthook is open source: github.com/Bilanc/posthook.

