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. |
|
dashboard/demodata
Package demodata builds the in-memory dataset behind EYEBROW_DEMO=1: a fictional-but-realistic environment that lights up every dashboard tab so the product can be demoed on any machine without scanning anything real.
|
Package demodata builds the in-memory dataset behind EYEBROW_DEMO=1: a fictional-but-realistic environment that lights up every dashboard tab so the product can be demoed on any machine without scanning anything real. |
|
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, are quarantined, or woke as sleepers, 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, are quarantined, or woke as sleepers, 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/registry
Package registry holds the pure, IO-free rules for assessing an application published to a remote catalog (an app store listing).
|
Package registry holds the pure, IO-free rules for assessing an application published to a remote catalog (an app store listing). |
|
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/toolsurface
Package toolsurface models an MCP server's advertised tool surface — the tool names, descriptions, and input schemas a tools/list response carries.
|
Package toolsurface models an MCP server's advertised tool surface — the tool names, descriptions, and input schemas a tools/list response carries. |
|
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.

