git, so Bilanc can see both sides of the work: what the agent wrote, and what the engineer committed. The same binary runs inside cloud agents such as Devin; see Cloud Agents.
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.
Watch the walkthrough
A short video tour of what posthook captures, how the install works, and what shows up in the Bilanc dashboard.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 to engineers’ machines. Both use the same install link; they differ only in who runs it. Cloud agents have their own path.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.
Cloud agents
Install posthook into a cloud agent’s environment and hook it into the agent’s lifecycle. Devin is supported today.
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 sends pending records from the local database to Bilanc, which stores raw batches as well as derived metrics. It requires cloud sync to be enabled with an endpoint and install key. Without team sync, records are not uploaded to Bilanc; Git-note sharing is a separate, default-enabled path that sends attribution metadata to your repository’s remote.
Team sync includes prompts and original tool payloads, which can include source-code content. See Data & Security for the full data inventory and how Posthook handles storage, Git-note sharing, and access.
Everyday commands
Posthook is open source: github.com/Bilanc/posthook.

