Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
eyebrow
command
Command eyebrow is the single static binary entrypoint.
|
Command eyebrow is the single static binary entrypoint. |
|
internal
|
|
|
adapters/analyze
Package analyze runs static analysis over resolved artifact code.
|
Package analyze runs static analysis over resolved artifact code. |
|
adapters/auditlog
Package auditlog appends audit events as JSONL, one file per UTC day.
|
Package auditlog appends audit events as JSONL, one file per UTC day. |
|
adapters/cpstore
Package cpstore is a file-backed store for the control-plane server.
|
Package cpstore is a file-backed store for the control-plane server. |
|
adapters/discover
Package discover walks tool configurations and normalizes every skill, MCP server, plugin, hook, rule, and context file into the domain Artifact model.
|
Package discover walks tool configurations and normalizes every skill, MCP server, plugin, hook, rule, and context file into the domain Artifact model. |
|
adapters/fleetstore
Package fleetstore reads and writes fleet snapshots as one JSON file per owner under a shared directory (the "git is the backend" path, e.g.
|
Package fleetstore reads and writes fleet snapshots as one JSON file per owner under a shared directory (the "git is the backend" path, e.g. |
|
adapters/hash
Package hash adapts the pure domain digest algorithm to the filesystem.
|
Package hash adapts the pure domain digest algorithm to the filesystem. |
|
adapters/historystore
Package historystore appends and reads counts-only posture snapshots to a local JSONL file (~/.eyebrow/history.jsonl), the data behind the posture trend.
|
Package historystore appends and reads counts-only posture snapshots to a local JSONL file (~/.eyebrow/history.jsonl), the data behind the posture trend. |
|
adapters/hookconfig
Package hookconfig installs (and removes) the host-tool hooks that feed eyebrow's usage telemetry.
|
Package hookconfig installs (and removes) the host-tool hooks that feed eyebrow's usage telemetry. |
|
adapters/lockstore
Package lockstore reads and writes eyebrowlock.json.
|
Package lockstore reads and writes eyebrowlock.json. |
|
adapters/mcpconfig
Package mcpconfig rewrites MCP server configs (Claude Code's .mcp.json) so stdio servers launch through the eyebrow shim, and restores them.
|
Package mcpconfig rewrites MCP server configs (Claude Code's .mcp.json) so stdio servers launch through the eyebrow shim, and restores them. |
|
adapters/notify
Package notify posts short digests to a chatops webhook.
|
Package notify posts short digests to a chatops webhook. |
|
adapters/parse
Package parse normalizes the heterogeneous config formats used by AI coding tools into Go values: JSON, JSONC (Claude/Cursor/VS Code-style, with comments and trailing commas), and TOML (Codex).
|
Package parse normalizes the heterogeneous config formats used by AI coding tools into Go values: JSON, JSONC (Claude/Cursor/VS Code-style, with comments and trailing commas), and TOML (Codex). |
|
adapters/policystore
Package policystore loads a policy file (eyebrow.policy.json) from disk.
|
Package policystore loads a policy file (eyebrow.policy.json) from disk. |
|
adapters/report
Package report renders scan, verify, and list results.
|
Package report renders scan, verify, and list results. |
|
adapters/repstore
Package repstore loads an opt-in community reputation corpus (theme H3) from a local JSON file: a content-hash → Signal map the user chose to trust.
|
Package repstore loads an opt-in community reputation corpus (theme H3) from a local JSON file: a content-hash → Signal map the user chose to trust. |
|
adapters/resolve
Package resolve turns a Source declaration into concrete, pinned, content-addressable code (or an integrity anchor for sources that cannot be hashed locally).
|
Package resolve turns a Source declaration into concrete, pinned, content-addressable code (or an integrity anchor for sources that cannot be hashed locally). |
|
adapters/sbom
Package sbom renders a lockfile as a CycloneDX 1.6 SBOM: one component per discovered artifact (skill, MCP server, plugin, …) and one vulnerability per static-analysis finding.
|
Package sbom renders a lockfile as a CycloneDX 1.6 SBOM: one component per discovered artifact (skill, MCP server, plugin, …) and one vulnerability per static-analysis finding. |
|
adapters/sign
Package sign implements detached ed25519 signatures over canonical bytes, satisfying ports.Signer.
|
Package sign implements detached ed25519 signatures over canonical bytes, satisfying ports.Signer. |
|
adapters/snapshotstore
Package snapshotstore is a content-addressed blob store for the *approved* bytes of an artifact's files.
|
Package snapshotstore is a content-addressed blob store for the *approved* bytes of an artifact's files. |
|
app/apptest
Package apptest provides in-memory fakes implementing the application ports.
|
Package apptest provides in-memory fakes implementing the application ports. |
|
app/ports
Package ports declares the interfaces (the "ports" of the hexagon) that the application services depend on.
|
Package ports declares the interfaces (the "ports" of the hexagon) that the application services depend on. |
|
app/scan
Package scan implements the `scan` use case: discover artifacts, resolve and pin their sources, hash them, run static analysis, and assemble a lockfile.
|
Package scan implements the `scan` use case: discover artifacts, resolve and pin their sources, hash them, run static analysis, and assemble a lockfile. |
|
app/shim
Package shim implements the MCP interposition relay — the heart of `eyebrow wrap` (Component 2).
|
Package shim implements the MCP interposition relay — the heart of `eyebrow wrap` (Component 2). |
|
app/verify
Package verify implements the `verify` use case — the rug-pull detector.
|
Package verify implements the `verify` use case — the rug-pull detector. |
|
buildinfo
Package buildinfo exposes build-time metadata stamped via -ldflags.
|
Package buildinfo exposes build-time metadata stamped via -ldflags. |
|
cli
Package cli is the driving adapter: it parses arguments, wires the concrete adapters into the application services (the composition root), and maps outcomes to process exit codes.
|
Package cli is the driving adapter: it parses arguments, wires the concrete adapters into the application services (the composition root), and maps outcomes to process exit codes. |
|
client
Package client is the CLI-side HTTP client for the self-hostable team control plane (Component 3b).
|
Package client is the CLI-side HTTP client for the self-hostable team control plane (Component 3b). |
|
controlplane
Package controlplane is the self-hostable team server (Component 3b, slice 4a): it ingests content-free fleet snapshots from each machine and aggregates them with the exact pure functions the local dashboard uses (fleet.Aggregate), so a team beyond the "git is the backend" scale gets the same blast-radius view over the wire.
|
Package controlplane is the self-hostable team server (Component 3b, slice 4a): it ingests content-free fleet snapshots from each machine and aggregates them with the exact pure functions the local dashboard uses (fleet.Aggregate), so a team beyond the "git is the backend" scale gets the same blast-radius view over the wire. |
|
dashboard
Package dashboard serves a local, read-only web view of what eyebrow sees on this machine: the inventory, drift against the lockfile, findings, and the MCP shim's audit timeline.
|
Package dashboard serves a local, read-only web view of what eyebrow sees on this machine: the inventory, drift against the lockfile, findings, and the MCP shim's audit timeline. |
|
domain/advisory
Package advisory matches discovered artifacts against a curated, offline feed of known-malicious skills and MCP servers.
|
Package advisory matches discovered artifacts against a curated, offline feed of known-malicious skills and MCP servers. |
|
domain/alert
Package alert derives team-level alerts from what the control plane actually holds: the aggregated fleet report (which artifacts drifted or are quarantined, and on how many machines) and the ingested audit events (which wrapped servers were blocked from egress or had a tool call denied).
|
Package alert derives team-level alerts from what the control plane actually holds: the aggregated fleet report (which artifacts drifted or are quarantined, and on how many machines) and the ingested audit events (which wrapped servers were blocked from egress or had a tool call denied). |
|
domain/artifact
Package artifact defines the normalized internal model for every "thing" eyebrow discovers across AI coding tools: skills, MCP servers, plugins, subagents, hooks, rules, and context files.
|
Package artifact defines the normalized internal model for every "thing" eyebrow discovers across AI coding tools: skills, MCP servers, plugins, subagents, hooks, rules, and context files. |
|
domain/audit
Package audit models the events the MCP shim records: one line per tool call, plus session lifecycle markers.
|
Package audit models the events the MCP shim records: one line per tool call, plus session lifecycle markers. |
|
domain/digest
Package digest implements eyebrow's canonical, content-addressable integrity primitive.
|
Package digest implements eyebrow's canonical, content-addressable integrity primitive. |
|
domain/doctor
Package doctor models the result of an environment self-check: a list of named checks, each with a status and a one-line detail, plus a summary.
|
Package doctor models the result of an environment self-check: a list of named checks, each with a status and a one-line detail, plus a summary. |
|
domain/finding
Package finding models the output of static analysis over an artifact.
|
Package finding models the output of static analysis over an artifact. |
|
domain/fleet
Package fleet aggregates per-developer inventory snapshots into a team-wide blast-radius view (theme G1): "crypto-price-feed just drifted — 3 of 8 engineers have it installed." It answers "who is exposed" the moment an advisory lands, which is impossible to see from a single laptop.
|
Package fleet aggregates per-developer inventory snapshots into a team-wide blast-radius view (theme G1): "crypto-price-feed just drifted — 3 of 8 engineers have it installed." It answers "who is exposed" the moment an advisory lands, which is impossible to see from a single laptop. |
|
domain/jsonrpc
Package jsonrpc models the slice of JSON-RPC 2.0 the MCP shim inspects.
|
Package jsonrpc models the slice of JSON-RPC 2.0 the MCP shim inspects. |
|
domain/lockfile
Package lockfile defines the eyebrowlock.json model and the drift-detection logic that powers `eyebrow verify` — the rug-pull detector.
|
Package lockfile defines the eyebrowlock.json model and the drift-detection logic that powers `eyebrow verify` — the rug-pull detector. |
|
domain/policy
Package policy defines the rules a team can enforce over an inventory, and the pure evaluation that turns a locked + current snapshot into a pass/fail decision.
|
Package policy defines the rules a team can enforce over an inventory, and the pure evaluation that turns a locked + current snapshot into a pass/fail decision. |
|
domain/posture
Package posture summarizes an inventory into a single trust verdict and the counts behind it — the onboarding "first verdict" and the data point a trend is built from.
|
Package posture summarizes an inventory into a single trust verdict and the counts behind it — the onboarding "first verdict" and the data point a trend is built from. |
|
domain/provenance
Package provenance grades how verifiable an artifact's origin is, the agent-specific analog of a SLSA level.
|
Package provenance grades how verifiable an artifact's origin is, the agent-specific analog of a SLSA level. |
|
domain/reach
Package reach classifies whether a finding's file is on a path the artifact actually runs (theme H2).
|
Package reach classifies whether a finding's file is on a path the artifact actually runs (theme H2). |
|
domain/reputation
Package reputation models an opt-in, privacy-preserving community trust signal (theme H3): "this exact artifact hash is trusted by N other eyebrow users, first seen 2026-04." It is the one signal a purely local tool cannot build alone — a network effect that sharpens as adoption grows.
|
Package reputation models an opt-in, privacy-preserving community trust signal (theme H3): "this exact artifact hash is trusted by N other eyebrow users, first seen 2026-04." It is the one signal a purely local tool cannot build alone — a network effect that sharpens as adoption grows. |
|
domain/risk
Package risk fuses an artifact's static severity with its runtime usage (theme F3): a finding on code that has actually run is more urgent than the same finding on code that has only ever sat on disk.
|
Package risk fuses an artifact's static severity with its runtime usage (theme F3): a finding on code that has actually run is more urgent than the same finding on code that has only ever sat on disk. |
|
domain/secrets
Package secrets detects and redacts well-known credential shapes in byte streams.
|
Package secrets detects and redacts well-known credential shapes in byte streams. |
|
domain/textdiff
Package textdiff is a small, dependency-free line differ.
|
Package textdiff is a small, dependency-free line differ. |
|
domain/timeline
Package timeline assembles the per-artifact event ribbon (theme F4): the unified "what happened, when" stream a reviewer wants in an incident — installed → approved → first invoked → drifted → last invoked — ordered in time.
|
Package timeline assembles the per-artifact event ribbon (theme F4): the unified "what happened, when" stream a reviewer wants in an incident — installed → approved → first invoked → drifted → last invoked — ordered in time. |
|
domain/trust
Package trust turns the facts eyebrow already knows about an artifact — its findings, how it drifted, whether its source is pinned, what it can do, and whether a trusted key approved it — into a single action-mapped Verdict plus a transparent, hand-recomputable breakdown.
|
Package trust turns the facts eyebrow already knows about an artifact — its findings, how it drifted, whether its source is pinned, what it can do, and whether a trusted key approved it — into a single action-mapped Verdict plus a transparent, hand-recomputable breakdown. |
|
domain/usage
Package usage turns the runtime audit log into a per-artifact picture of what actually ran, and when (theme F).
|
Package usage turns the runtime audit log into a per-artifact picture of what actually ran, and when (theme F). |
|
platform/run
Package run abstracts external command execution so adapters that shell out (npm, git) can be unit-tested with a scripted fake instead of a real process.
|
Package run abstracts external command execution so adapters that shell out (npm, git) can be unit-tested with a scripted fake instead of a real process. |
|
proxy
Package proxy implements Component 2's egress proxy: a local forward proxy the shim points wrapped MCP servers at via HTTP(S)_PROXY.
|
Package proxy implements Component 2's egress proxy: a local forward proxy the shim points wrapped MCP servers at via HTTP(S)_PROXY. |
|
sandbox
Package sandbox confines a wrapped MCP server to an allowed workspace and forces its network through the egress proxy, using OS primitives (macOS Seatbelt, Linux bubblewrap).
|
Package sandbox confines a wrapped MCP server to an allowed workspace and forces its network through the egress proxy, using OS primitives (macOS Seatbelt, Linux bubblewrap). |
Click to show internal directories.
Click to hide internal directories.

