Documentation
The integrity layer for everything your AI agents install and run.
18 sections · updated 11 Aug 2026
1Introduction
1.1What is eyebrow?#
eyebrow is the integrity layer for everything AI coding agents install and run — skills, MCP servers, plugins, hooks and rules.
It discovers every artifact installed across your AI tools, fingerprints them into a committable lockfile, catches the moment an approved artifact silently changes, and can sandbox what runs at runtime. It ships as a single self-contained binary, runs entirely on your machine, and never uploads your code or secrets.
The product in one line: know what's installed, prove it hasn't changed, see what ran, and catch the sleeper before it fires.
1.2The problem#
AI coding agents became useful the moment they could extend themselves — pulling a skill from a gist, an MCP server from a registry, a plugin from a tap, a hook from a dotfiles repo. That extensibility is most of the magic. It is also, structurally, a package manager nobody audits.
Each of those artifacts is third-party code, fetched once and then executed with your full environment: your credentials, your cloud access, your source code. Unlike npm or pip, there is no lockfile, no review gate, no pinned version, no diff your teammates can see.
Four questions no team can answer today:
- You don't know what's installed. Artifacts hide in a dozen tool-specific locations. No single inventory exists.
- You can't prove it's still what you reviewed. Artifacts can rewrite themselves in place, with no version bump.
- You can't see what actually ran. "This skill can read your credentials" is a hypothesis; "it read them 40× this week" is an incident.
- The sleeper case is invisible. Installed long ago, never used, silently changed, then fires for the first time — no static scanner sees it.
1.3Core principles#
| Principle | What it means in practice |
|---|---|
| A supply-chain tool can't be a supply-chain risk | One self-contained binary with virtually no dependencies of its own. The thing auditing your dependencies has none to exploit. |
| Local-first, always | Core functionality needs no network and no account. Network features are opt-in and degrade to local silently. |
| Content-free by design | Snapshots, fleet rollups, audit logs and reputation carry fingerprints and verdicts — never your code, never your secrets. |
| Redact everything sensitive | The audit log stores digests, never raw arguments. The dashboard shows environment-variable keys, never values. |
| Fail open to the user | The firewall and hooks degrade to the host tool rather than breaking your workflow. Security you turn off protects nothing. |
| Auditable itself | Open source, MIT licensed, reproducible builds with published checksums and provenance. |
1.4Who eyebrow is for#
| Audience | Primary value |
|---|---|
| Individual developers | See your own surface; catch a rug pull before it bites; run agents against real credentials safely. |
| Small engineering teams | Fleet blast-radius and one policy, without an MDM rollout or telemetry upload. |
| Platform / DevEx engineers | A CI gate with a stable pass/fail contract; standardise across the org. |
| Security & compliance | Signed baselines, change history, and audit evidence — with data sovereignty intact. |
| Regulated / air-gapped / crypto | "Code never leaves the machine" is a hard requirement, not a nice-to-have. |
| Publishers & marketplaces | The eyebrow badge: prove your artifact is what you say and hasn't changed. |
2Quick start
From nothing to a verified baseline in about two minutes.
2.1Install#
Homebrew (macOS / Linux):
brew install alexverify/tap/eyebrowGo:
go install github.com/alexverify/eyebrow/cmd/eyebrow@latestInstall script:
curl -fsSL https://eyebrow.cc/install.sh | shOr download a signed release binary from GitHub and verify its checksum. eyebrow is a single static binary with no runtime dependencies.
2.2Your first scan#
Run eyebrow scan in any directory. It is read-only and touches nothing:
$ eyebrow scan
scanning AI coding tools…
~/.claude/skills/ 12 skills
~/.claude/plugins/ 3 plugins
.claude/settings.json hooks + mcp
.mcp.json 4 MCP servers
→ 19 artifacts fingerprinted 3 findings (1 high)2.3Freeze the baseline#
Write the lockfile and commit it alongside your code:
$ eyebrow lock
wrote eyebrowlock.json (19 artifacts)
$ git add eyebrowlock.json && git commit -m "pin agent artifacts"2.4Verify later#
Any time after — or in CI — check the disk against the approved baseline:
$ eyebrow verify
OK 18 artifacts unchanged
!! 1 drifted: mcp:aws-helper
+ tools/postinstall.sh (added)3Core concepts
3.1Artifacts#
An artifact is any unit of third-party code or instruction your AI tool loads. eyebrow treats them all the same way: discover, fingerprint, analyse, watch.
| Artifact type | What it is | Why it's risky |
|---|---|---|
| Skill | A packaged capability an agent can invoke | Arbitrary code; often fetched from a gist or pack |
| MCP server | A tool server the agent talks to over Model Context Protocol | Runs as a process with your environment and credentials |
| Plugin | A tool-specific extension | Loaded automatically at startup |
| Hook | Code triggered by an event (e.g. opening a project) | Can execute before you see any trust prompt |
| Rule / instruction file | Natural-language directives that steer the agent | Can carry consent-bypass or exfiltration instructions |
| Agent / config | Sub-agents and tool configuration | Defines what the agent is permitted to do |
3.2Fingerprints and the lockfile#
A fingerprint is a canonical, cross-platform content hash of an artifact — stable across operating systems and line endings, and deliberately excluding volatile data (timestamps, caches) so integrity checks never produce false positives.
The lockfile (eyebrowlock.json) records every artifact's identity, version, fingerprint, capabilities and provenance. It is designed to be committed to your repository and reviewed like any other dependency change.
Crucially, the lockfile is content-free: it contains hashes and verdicts, never your source.
3.3Drift#
Drift is any difference between what is on disk now and what the lockfile approved. eyebrow classifies drift as expected (you updated something deliberately) or unexpected, and names exactly which files were added, removed or modified — without ever storing your code.
Drift is the core insight of the product: the danger is rarely what you installed. It is what that thing became afterwards.
3.4The sleeper attack#
The textbook supply-chain attack, and the one no pure-static scanner can see:
- An artifact is installed and reviewed. It looks fine, because it is fine.
- It sits dormant for weeks. Never invoked.
- A maintainer account is compromised, or a "no version bump" update lands. The content mutates on disk.
- It runs for the first time — and reads your cloud credentials.
No single signal catches this. You need three, fused:
- capability — what the artifact is able to reach (secrets, network, shell)
- drift — whether its content changed since you approved it
- usage — whether this is the first time it has ever executed
capability × drift × usage = sleeperMost tools own one of these signals. eyebrow owns all three, locally, which is why it can produce a verdict a single-layer or cloud-static scanner structurally cannot.
3.5Capability analysis#
Static analysers flag what an artifact is able to do, with the pattern and context that triggered the finding. Typical detections:
- Credential and secret access — reading
~/.ssh,~/.aws,.envfiles - Network egress — outbound calls, especially paired with local file reads
- Shell-out and obfuscation —
curl … | shpipes,eval/atobindirection - Install-time execution — npm install hooks, postinstall scripts
- Consent-bypass language buried in rule or instruction files
Findings are advisory, not absolute. You can approve, ignore or mark an artifact as safe — decisions are recorded in the lockfile so they are reviewable.
3.6Content-free and local-first#
Two guarantees that define the architecture:
- Local-first — the core job needs no network. Optional network features fall back to local silently when unreachable.
- Content-free — anything that ever leaves a machine carries identifiers, fingerprints and verdicts only. Never source code. Never secrets. Enforced at the boundary, not promised in a blog post.
4Products
4.1Overview#
| Product | What it does | Status |
|---|---|---|
| Local audit (snapshot) | One-time inventory, fingerprint, analyse, verify against baseline | Live |
| Continuous monitoring | Always-on drift detection and alerts | Live |
| Runtime MCP firewall | Policy, secret redaction, OS sandbox, audit log | Live |
| Local dashboard | Private on-machine view with approve / quarantine / freeze | Live |
| Quality & cost report | Which add-ons are unused, expensive, or poorly written | In development |
| The eyebrow badge | Public, live verification mark for publishers | Launching |
| eyebrow for Teams | Fleet view, central policy, alerts, posture history | In development |
| Agent trust oracle | Machine-payable verification lookups for agents | Roadmap |
4.2Local audit — the snapshot#
The read-only wedge, and the foundation of everything else. Run it anywhere, commit the result, review it like any other dependency change.
- Cross-tool discovery across 11 AI coding tools on macOS, Linux and Windows.
- Tamper-evident fingerprinting into a committable lockfile.
- Behavioural scanning with findings, patterns and context.
- Drift detection naming exactly which files changed.
- Cryptographic signing and a provenance ladder tracing each artifact to its origin.
- A stable pass/fail contract so CI can gate on it.
4.3Continuous monitoring#
The upgrade from a manual check to always-on watching. Scheduled re-verification, real-time alerts the moment something drifts, dormancy tracking, and first-execution signals that make the sleeper detector possible.
Security you run once is a snapshot. Watching over time is where the drift and sleeper risk actually lives. See §10 Access & pricing for how continuous access works.
4.4Runtime MCP firewall#
Fingerprinting tells you what an artifact could do. The firewall controls what it actually does while running.
| Capability | Behaviour |
|---|---|
| wrap / unwrap | Transparently route an MCP server through eyebrow — reversibly, with no change to what your agent sees |
| Per-server tool policy | A denied tool returns a clean JSON-RPC error instead of executing |
| Secret-redacting egress proxy | Credentials cannot leave in cleartext even if the server tries |
| OS sandbox | Seatbelt on macOS, bwrap on Linux, confining writes and network reach |
| Tamper-resistant audit log | Queryable after the fact; stores digests, never raw argument values |
4.5Local dashboard#
Run eyebrow dashboard for a private, on-your-machine view of every artifact: trust verdict, provenance, capability diff, file manifest, runtime activity, and last-used/dormancy — with one-click approve, quarantine, freeze, mute and egress-allow actions.
4.6Quality & cost report#
The same scan that finds security problems already reads and measures every add-on. That data answers a second question most teams have never measured: what is your AI setup costing you before it does any work?
"Your assistant loads 23 add-ons. Eleven have never fired. They consume nearly a fifth of its working memory before you type a word. Here are the three worth rewriting, and here's the rewrite."
Security tools get opened after an incident. Cost tools get opened every week.
4.7eyebrow for Teams#
Everything above protects one machine. Teams is the shared view across all of them.
| Capability | Free / self-managed | Teams |
|---|---|---|
| Full inventory of every artifact | Yes | Yes |
| Drift and tamper detection | Yes | Yes |
| Runtime containment and audit log | Yes | Yes |
| View across every machine | Manual, via git | Automatic |
| Alerts the moment something changes | — | Real time |
| One policy applied company-wide | Per developer | Centrally set |
| History, trends, posture reporting | — | Yes |
| Blast radius: who exactly is exposed | One machine | Everyone, instantly |
| Cost reporting across the org | — | Yes |
| SSO, compliance export | — | Enterprise tier |
5Architecture
5.1System overview#
AI coding tools eyebrow outputs
┌────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Claude Code │ │ Discovery │ │ eyebrowlock.json │
│ Cursor │───────▶│ Fingerprinting │───────▶│ findings report │
│ Codex │ │ Analyzers │ │ CI exit code │
│ Gemini CLI │ │ Verify / drift │ │ local dashboard │
│ Windsurf │ ├──────────────────┤ ├──────────────────┤
│ Copilot CLI │ │ Runtime shim │ │ audit log │
│ OpenCode … │◀──────▶│ (wrap / policy) │───────▶│ (digests only) │
└────────────────┘ └──────────────────┘ └──────────────────┘
│
▼ (opt-in, content-free)
.eyebrow/fleet → git → team blast-radius5.2Discovery engine#
eyebrow knows where each tool hides its artifacts, on every supported OS, and builds one inventory from all of them.
| Tool | Global (~/) | Project (./) |
|---|---|---|
| Claude Code | ~/.claude/{skills,plugins}/ · settings.json (hooks, mcp) | .claude/{skills,commands}/ · .mcp.json · CLAUDE.md |
| Cursor | ~/.cursor/mcp.json · Settings → Rules | .cursor/rules/*.mdc · .cursor/mcp.json · .cursorrules |
| Codex | ~/.codex/{config.toml, AGENTS.md, rules/, skills/} | .codex/{config.toml, AGENTS.md} · .agents/skills/ |
| Gemini CLI | ~/.gemini/{settings.json, GEMINI.md, extensions/} | .gemini/settings.json · GEMINI.md |
| Windsurf | ~/.codeium/windsurf/{mcp_config.json, memories/} | .windsurf/rules/*.md · .windsurfrules |
| Copilot CLI | ~/.copilot/{mcp-config.json, skills/, agents/} | .github/{copilot-instructions.md, mcp.json} |
| OpenCode | ~/.config/opencode/{opencode.json, plugins/, skills/} | .opencode/{plugins,skills,tools}/ · opencode.json |
5.3Fingerprinting#
Canonical hashing normalises line endings and path separators so the same artifact fingerprints identically on macOS, Linux and Windows. Volatile content — timestamps, caches, logs — is deliberately excluded so an integrity check never fires a false positive on noise.
5.4Analyzers#
Analyzers are pattern-and-context detectors that produce findings with a severity. They are designed to be extensible: the roadmap includes an analyzer plugin SDK so detection breadth becomes a community asset rather than a hiring problem.
5.5Runtime shim#
The shim sits between your agent and an MCP server, speaking the protocol transparently in both directions. It enforces per-tool policy, proxies egress with secret redaction, launches the server inside an OS sandbox, and writes a tamper-resistant audit log of digests.
5.6Fleet: git as the backend#
Each machine exports a content-free snapshot to .eyebrow/fleet in a repository your team already has: ids, fingerprints and verdicts — no source, no secrets. eyebrow fleet reads those commits to answer blast-radius questions.
No server is required for small teams. The result is fleet visibility without telemetry upload — the anti-MDM model.
5.7Signing and trusted keys#
Sign the lockfile with a local ed25519 key and register your teammates' public keys in eyebrow.trustedkeys. Approvals then trace to a person, not a vibe, and CI can enforce: only approved, unmodified, clean, signed-by-us artifacts run here.
5.8The privacy boundary#
| Data | Stays local | May leave (opt-in) |
|---|---|---|
| Your source code | Always | Never |
| Secrets, tokens, credentials | Always | Never |
| Tool-call argument values | Digested only | Never |
| Environment variable values | Never displayed | Never |
| Artifact identifiers and fingerprints | Yes | Fleet, reputation, badge (opt-in) |
| Verdicts and findings summary | Yes | Fleet, reputation (opt-in) |
6CLI reference
| Command | What it does |
|---|---|
| eyebrow scan | Discover and analyse every artifact across all detected tools. Read-only. |
| eyebrow scan --tool claude-code | Restrict the scan to a single tool. |
| eyebrow lock | Write or update eyebrowlock.json — your approved baseline. |
| eyebrow verify | Compare disk against the lockfile; classify and report drift. |
| eyebrow verify --ci | Same, with a stable exit code (1 on drift or policy violation) for pipelines. |
| eyebrow wrap <server> | Route an MCP server through the runtime firewall. |
| eyebrow unwrap <server> | Reverse wrapping, restoring the original configuration. |
| eyebrow dashboard | Open the local, private dashboard. |
| eyebrow fleet | Aggregate content-free snapshots into a team blast-radius view. |
| eyebrow sign / eyebrow keys | Sign the lockfile; manage trusted keys. |
| eyebrow audit | Query the runtime audit log. |
6.1Exit codes#
| Code | Meaning |
|---|---|
| 0 | Success — no drift, no policy violation |
| 1 | Drift detected or policy violated (the CI gate signal) |
| 2 | Execution error (bad configuration, unreadable path) |
7Onboarding guides
7.1Solo developer#
- Install eyebrow and run a scan to see your full surface for the first time.
- Review the findings. Approve what you recognise; investigate what you don't.
- Write the lockfile and commit it.
- Re-run verify whenever you update tools, or enable continuous monitoring so it watches for you.
- Wrap any MCP server that touches real credentials.
7.2Team setup#
- Standardise on a committed lockfile in each repository.
- Each engineer signs with their own ed25519 key; register public keys in eyebrow.trustedkeys.
- Enable content-free fleet snapshots into a shared repository (.eyebrow/fleet).
- Add the CI gate so a merge fails the moment an artifact drifts or breaks policy.
- Agree a policy: which capabilities require review, and who can approve.
7.3CI integration#
# .github/workflows/eyebrow.yml
name: eyebrow
on: [push, pull_request]
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install eyebrow
run: curl -fsSL https://eyebrow.cc/install.sh | sh
- name: Verify agent artifacts
run: eyebrow verify --ciThe job fails on drift or policy violation, so "we'll review the agent config later" becomes "the pipeline already did."
7.4Publisher onboarding (badge)#
- Claim your artifact and prove control (repo ownership, DNS TXT, registry, or DID signature).
- Run verification locally or in CI; eyebrow independently fetches and verifies the published artifact.
- Embed the badge snippet in your README and on your site.
- For continuous tiers, connect a release webhook and post the bond.
Target: under 10 minutes from claim to embedded badge. See §9 The badge programme.
8Use cases
8.1Individual developers#
- Adopting an unfamiliar repository — see the whole surface before letting an agent loose on it.
- Catching a rug pull — an approved skill rewrites itself and you get a diff instead of silence.
- Catching a sleeper — dormant, drifted, then it fires for the first time.
- Running agents against real credentials — wrap the MCP servers so denied calls fail cleanly and secrets are redacted.
- Reviewing artifact updates like dependency bumps, in a pull request.
- Trimming waste — find the unused and expensive add-ons dragging on context and cost.
8.2Teams and engineering organisations#
- Fleet inventory across every engineer's machine.
- Blast radius on CVE day — "this artifact drifted; 3 of 8 engineers have it."
- One central policy: approved, signed artifacts only.
- CI gating so drift can't merge.
- Posture history — signed, timestamped evidence of what changed and when.
- Shadow-AI discovery — surface the tools nobody officially sanctioned.
8.3Security, compliance and regulated industries#
- Audit evidence: signed baselines and change history for SOC 2 / ISO-style reviews.
- Data sovereignty and air-gapped operation — everything runs locally, content-free.
- Tamper detection on developer endpoints.
This maps cleanly onto Lean Six Sigma DMAIC, which many compliance and improvement organisations already run:
| Phase | eyebrow equivalent |
|---|---|
| Define | Scope the surface — what your agents are able to install |
| Measure | The free snapshot — baseline every artifact, signed |
| Analyze | Drift and capability findings; the fingerprint dataset (what "normal" looks like) |
| Improve | The quality & cost report — rewrite what's wasteful or vague |
| Control | Continuous monitoring plus the CI gate — hold the baseline |
8.4Agents that hold keys or move money#
- Pre-signature integrity — when an agent holds wallet or signing keys, a drifted MCP server can move funds, not just leak a variable.
- Closing the after-the-fact gap — an on-chain ledger proves what happened; eyebrow prevents the wrong thing from running.
- Copy-trading and strategy networks — verify the strategy you're copying runs unmodified, approved components.
8.5Publishers, marketplaces and platforms#
- A live verification mark for listings, checkable by humans and machines.
- Verified publisher identity — turn an anonymous author into an accountable one.
- Catalog-wide verification for a registry or marketplace.
8.6Infrastructure and node operators#
- Client and node-software integrity, so a compromised update cannot quietly turn honest hardware malicious.
- Signed baselines for operators running software behind staked wallets.
9The eyebrow badge
9.1What the badge claims#
The badge is a live, checkable claim that a published artifact is exactly what its publisher says it is, and hasn't changed since it was verified.
"This is the code they published. It hasn't changed. Here's what it can reach."
It is not a safety guarantee, a full code audit, or a promise the artifact is bug-free. eyebrow verifies identity and integrity, and reports capability findings. It does not certify intent. This precision is deliberate: it is the only claim that is provable, continuously checkable, and falsifiable.
9.2Tiers#
| Tier | Claim | Cadence | Price |
|---|---|---|---|
| Verified | Verified on <date> · commit <hash> | One-time | Free |
| Verified · Release | Re-verified every release | Each publish | ~$29–49/mo per artifact |
| Verified · Live | Continuously monitored; state as of <timestamp> | Continuous | ~$99–299/mo + $BROW bond |
| Verified · Live (Bonded+) | Same, with a larger displayed guarantee | Continuous | Custom + larger bond |
Free one-time badges buy ubiquity; continuous badges carry meaning. A badge that was true once is the exact failure mode eyebrow exists to catch.
9.3Badge states#
| State | Shown when | Public wording |
|---|---|---|
| Verified (green) | Hash matches, no critical findings | Verified by eyebrow |
| Drift (amber) | Content changed since verification | Changed since verification |
| Failed (red) | Critical finding, failed re-verification, revoked | Verification withdrawn |
| Expired (grey) | One-time badge older than 90 days, or lapsed subscription | Verification expired |
| Pending | Initial or re-verification in progress | Verification in progress |
9.4Technical contract#
https://badge.eyebrow.cc/<publisher>/<artifact>.svg → live badge image
https://badge.eyebrow.cc/<publisher>/<artifact>.json → machine-readable state
https://eyebrow.cc/verify/<publisher>/<artifact> → human verification pageEmbed in a README:
[]
(https://eyebrow.cc/verify/acme/mcp-server)The JSON response carries state, tier, version, content hash, verification timestamps, capabilities, findings counts, bond status, publisher identity, and a signature — so badge state can be verified without trusting eyebrow's server.
9.5Conditions and rules#
Eligibility#
- The artifact must be publicly retrievable at a stable identifier.
- The publisher must prove control of it.
- It must pass the scan with zero critical findings.
- The publisher accepts the terms, including that eyebrow may withdraw a badge at any time.
Automatic state changes#
| Trigger | New state |
|---|---|
| Hash mismatch on re-check | Drift (amber) |
| Critical finding appears | Failed (red) |
| Capability expansion beyond declared scope | Drift, pending review |
| Subscription lapse or bond withdrawn | Expired (grey) |
| One-time badge older than 90 days | Expired (grey) |
| Artifact unreachable on three consecutive checks | Expired (grey) |
Grace and appeal#
- Drift opens a 72-hour grace window; the badge shows amber publicly during it — no silent hiding.
- A failed state for a critical finding is immediate, with no grace period.
- Appeals follow a published, time-bound review process, and decisions are public.
9.6Bonds#
A bond is a refundable security deposit. To carry a continuous badge, a publisher locks $BROW as collateral behind their claim. They keep ownership; it is returned in full on graceful exit. It is slashed only through a published adjudication process if the artifact is proven to have shipped malicious code under a green badge.
- Skin in the game — the publisher's incentive aligns with the user's.
- Sybil resistance — you cannot cheaply create many fake verified publishers.
- Insurance — a real pool exists to compensate affected users.
Bond size scales to blast radius: a formatting skill and a wallet-signing MCP server are not the same risk.
9.7Why this badge is different#
- It's live, not a snapshot — it changes state when reality changes.
- It's falsifiable — anyone can check the endpoint or verify the signature.
- The publisher can't fake it — eyebrow controls the image and timestamps.
- It's economically backed by a bond.
- It publishes failures, including past drift events. Showing amber is what makes green mean something.
- It's machine-readable, so agents can check before installing.
- The auditor is auditable — open source, content-free, signed attestations.
10Access & pricing
10.1The access ladder#
| Stage | What you get | How access works |
|---|---|---|
| Free trial | The full product — snapshots and continuous monitoring | Time-limited |
| Free floor | One-time local snapshots: inventory, freeze, drift-check against a saved baseline | Free, always. No wallet, no account |
| Continuous (solo) | Always-on drift detection, alerts, scheduled re-verify | Hold $BROW (after a first-three-free allowance) |
| Teams | Continuous across every machine, central policy, posture history | Per-seat subscription or stake tier |
| Badge / publisher | Public verified badge | Free one-time; Live is subscription + bond |
| Enterprise | SSO/SIEM, compliance export, air-gapped edition, SLA | Custom contract |
The line, stated plainly: a one-time check of your own machine is always free. Watching it continuously over time is the paid upgrade.
10.2Why the split falls here#
eyebrow's engine is open source under MIT. A token gate on a purely local binary would be neither meaningful nor enforceable — anyone could fork it. So the free floor is genuinely free, and the paid tiers sit where value actually requires eyebrow's hosted service: continuous alerting, reputation lookups, cross-machine state and coordination.
Nobody ever pays to be safe. You pay for coordination, scale, and supply-side trust.
10.3Commitment#
We publish what stays free forever before the paid product exists, and we do not move something already free behind a paywall. A company selling protection against bait-and-switch cannot look like one.
11$BROW
11.1The one rule#
The local layer never requires a token. Scanning, locking, verifying and wrapping work with no wallet, no network and no $BROW. The token lives exclusively in the optional network and coordination layer.
11.2Utility#
| Mechanic | Where it applies | Effect |
|---|---|---|
| Hold-to-access | Continuous monitoring | Locks supply in proportion to active users |
| Publisher bond | The badge (Live tiers) | Collateral against a false claim; slash sink |
| Staked attestation | Reputation and warning list | Sybil resistance — a cost to lying |
| Stake-to-access / discounted seats | Teams | Locks supply per organisation |
| Buyback-and-burn | Enterprise and fiat revenue | Converts revenue into supply reduction |
| Metered oracle fees | Agent trust lookups (x402) | Demand scales with the number of agents |
| Marketplace fees | Analyzer and policy packs | Fee plus burn |
11.3What $BROW is not used for#
- Gating the local CLI or the free snapshot.
- Pay-per-scan of your own machine.
- Emissions or staking yield.
- Direct revenue share to holders.
12The ecosystem loop
Every part of eyebrow feeds the next. Two things compound with every install: the fingerprint dataset, and $BROW demand.
(A) FREE SNAPSHOT → devs install, see their surface, first fingerprints
(B) CONTINUOUS → hold $BROW · recurring use · richer fingerprints
(C) FINGERPRINT DATA → the only record of what "normal" looks like
(D) THE BADGE → publishers bond $BROW · verified mark on their sites
└→ backlinks + end-user reach → new devs → back to (A)
(E) TEAMS (paid) → revenue → buyback-and-burn → $BROW value → back to (B)
(F) AGENT ORACLE → agents pay per lookup · scales with #agents, not #humans| Stakeholder | What they get | What they feed back |
|---|---|---|
| Developer | Free surface check; affordable continuous protection | Installs and fingerprints |
| Publisher | A trust badge that closes sales | Bond, plus backlinks that recruit developers |
| Team | Posture, blast radius, one policy | Recurring revenue |
| Researcher | Bounties and attestation rewards | Detection breadth, the warning list |
| Agent | A trust signal before installing | Per-lookup demand |
13Roadmap
| Phase | Ships | Focus |
|---|---|---|
| 0 — Wedge (shipped) | Local audit: inventory, freeze, drift-catch, contain, local dashboard | Adoption and credibility |
| 1 — Habit | Continuous monitoring; quality & cost report | Weekly usage; the efficiency buyer |
| 2 — Standard | The badge; verified publisher identity; shared warning list | Publishers and distribution |
| 3 — Teams | Fleet cloud: alerts, central policy, posture history, org cost number | Recurring revenue |
| 4 — Scale | Analyzer marketplace, agent trust oracle, enterprise and regulated editions | Network effects and the data moat |
13.1Deeper capabilities on the roadmap#
- Universal activation telemetry — last-used and dormancy for every artifact kind, not just wrapped MCP servers.
- The sleeper detector — install-age × content-drift × first-ever invocation, fused into one alert.
- Line-level rug-pull proof — a red/green diff showing the exact line that was slipped in.
- Exercised-risk ranking — re-rank findings by what actually ran; mark capabilities reachable or unreachable.
- Network-effect reputation — "trusted by N other users, first seen <date>" — hash-only, opt-in, silent offline.
14Security & privacy
14.1What eyebrow collects#
By default, nothing leaves your machine. There is no account, no telemetry, and no upload in the core product. Optional network features are explicitly opt-in and carry fingerprints and verdicts only.
14.2Threat model — what eyebrow covers#
- Artifact tampering after approval (rug pulls, silent republishing).
- Sleeper artifacts: dormant, drifted, then first execution.
- Undeclared capabilities: secret access, network egress, shell-out, install hooks.
- Runtime misbehaviour of MCP servers — contained via policy, redaction and sandboxing.
- Unreviewed contributions — enforced via signed lockfiles, trusted keys and the CI gate.
14.3What eyebrow does not cover#
- Prompt injection and model-level manipulation at inference time.
- The reasoning of the agent harness itself.
- Vulnerabilities in code that has not changed since you approved it.
- Anything outside the artifact supply chain — network, OS and identity security remain your responsibility.
Naming the boundary is deliberate. A security tool that claims to cover everything can't be trusted on anything.
14.4Auditing eyebrow itself#
- Open source under MIT — read every line.
- A single static Go binary; dependency surface kept close to zero (standard library plus a TOML parser for Codex configs).
- Releases ship checksums and build provenance so you can prove the binary came from the repository's release workflow.
- Or build from source; it needs only Go.
14.5Reporting a vulnerability#
Report security issues privately through the repository's security advisory process rather than a public issue. Coordinated disclosure is welcome and credited.
15Integrations & ecosystem
eyebrow is designed to sit underneath other agent infrastructure rather than compete with it. Typical integration shapes:
| Partner type | How eyebrow fits |
|---|---|
| Agent frameworks | An integrity check inside skill installation, so every skill is verified and pinned before it runs — autonomy stays, the trust gap closes |
| Marketplaces & registries | Catalog-wide verification and a verified filter on listings |
| Agent runtimes with custody | Pre-signature integrity: verify the components before an agent signs or spends |
| Memory & compliance infrastructure | Verify the plugin itself, and the artifacts around a policy gate |
| Git and CI platforms | A gate enforcing that only pinned, signed, unmodified artifacts run |
| Compute networks | Client and node-software integrity for operators |
Integration enquiries and partnership proposals are welcome through the contacts in §17.
16FAQ
Does eyebrow upload my code?#
No. The core product runs entirely locally. Optional network features carry fingerprints and verdicts only — never source, never secrets.
Do I need an account to use it?#
No. Install the binary and run a scan. No account, no wallet, no signup for the local snapshot.
Is it open source?#
Yes, MIT licensed. The engine is auditable, which is the only honest way to ship a tool with this much access.
What's the difference between a snapshot and continuous monitoring?#
A snapshot is a check you run; continuous monitoring watches for you and alerts the moment something drifts. Snapshots are free; continuous is the paid or token-held upgrade.
Why is a token involved at all?#
Only in the network layer — continuous access, publisher bonds, staked attestation. It provides sybil resistance and collateral, which a subscription alone cannot. The local layer never needs it.
Will this slow down my agents?#
No measurable impact for scanning, which is read-only and on-demand. The runtime firewall adds a thin protocol shim and is opt-in per server.
What if eyebrow's servers are down?#
Everything local keeps working. Network features degrade to local silently by design.
Does it work on Windows?#
Yes for discovery, fingerprinting and verification. OS sandboxing is not available on Windows, and eyebrow tells you so rather than pretending otherwise.
How is this different from a normal SCA scanner?#
Scanners check dependencies at a point in time, usually in the cloud. eyebrow fuses capability, drift and runtime usage locally — which is the only way to catch a sleeper.
Can I use it in an air-gapped environment?#
Yes. That is a first-class use case; there is no required network call.
What happens if a badge holder rug-pulls?#
The badge flips state publicly, and for bonded tiers the bond is slashable through a published adjudication process, with proceeds distributed to affected users.
Can I self-host the team features?#
The git-as-backend fleet model is entirely self-managed — your repository, your data. The hosted control plane is an optional convenience.
17Glossary
| Term | Definition |
|---|---|
| Artifact | Any skill, MCP server, plugin, hook, rule or agent config an AI tool loads |
| Fingerprint | A canonical, cross-platform content hash of an artifact |
| Lockfile | eyebrowlock.json — the committed record of approved artifacts and their fingerprints |
| Drift | A difference between what is on disk and what the lockfile approved |
| Sleeper | An artifact that lay dormant, then drifted, then executed for the first time |
| Capability | What an artifact is able to reach: secrets, network, shell, filesystem |
| Content-free | Carrying identifiers, hashes and verdicts only — never source or secrets |
| Blast radius | How many machines or people are exposed to a given artifact |
| Bond | Refundable $BROW collateral backing a continuous badge claim |
| Attestation | A signed statement about an artifact's verification state |
| MCP | Model Context Protocol — the standard by which agents talk to tool servers |
| Wrap | Routing an MCP server through eyebrow's runtime firewall |
18Support & community
| Channel | Where |
|---|---|
| Website & docs | eyebrow.cc |
| Source code | github.com/alexverify/eyebrow |
| Issues & feature requests | GitHub Issues |
| Security disclosures | GitHub security advisories (private) |
| Updates | @eyebrowCC on X |
| Partnerships & integrations | Contact via eyebrow.cc |
Contributions are welcome — particularly discovery support as tool layouts change, new analyzers, and incident teardowns for the public library.
eyebrow — know what's installed, prove it hasn't changed, see what ran.