The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Voyager listing page.
The verified-brief organ for coding agents.
An AI coding agent that reaches the open internet gets a raw, unsigned, possibly-poisoned blob and feeds it straight into its own prompt. voyager sits in front of that: it turns a query into a cited, confidence-scored, OSV-gated, injection-hardened brief — the only surface your model ever sees.
Every claim carries its provenance and a confidence signal. Package recommendations pass a fail-closed OSV vulnerability gate, surface build provenance (npm SLSA attestations) when present, and can be reproduced in a disposable twin — install + smoke-import run inside a hardened, rootless, network-isolated container (never on the host). That proves the package installs and its entrypoint loads; it is not a safety proof. All fetched text is stripped of instruction-shaped payloads (multilingual + base64 + markdown /HTML vectors) and framed as untrusted evidence the model must analyze, never obey.
CLI, library, and MCP server.
check is a natural CI gate: fail the build if an agent picked a vulnerable,
deprecated, or non-existent dependency.
Tools: check_package, retrieve, discover_repos, fetch_docs.
| Tier | Source | Base trust |
|---|---|---|
| A | GitHub · npm · PyPI · OSV (structured facts) | high |
| B | canonical docs (official hosts only) | high |
| C | open-web search (Tavily / Exa / Apify) | low — cross-referenced before trusted |
| D | isolated twin (install + smoke in a container) | reproduction, not a safety proof |
Keys are optional: the Tier-A core (npm/PyPI/OSV, and GitHub unauthenticated) is
zero-key. Tier-C providers each no-op without their key. Set GITHUB_TOKEN,
TAVILY_API_KEY, etc., or inject a resolver.
One egress allowlist (a fixed set of public API hosts), https-only, redirect: error, a streamed byte cap that aborts an oversized body mid-download, and
an injection-strip that removes role-hijacks / chat-template tokens / zero-width
& bidi characters, decodes-and-rescans base64, neutralizes markdown images and
HTML comments, and matches instruction payloads across several languages. The
framing is the real defense — the strip keeps it from being trivially escaped.
The twin runs the package's code only inside a hardened, network-isolated,
read-only, non-root container; with no container runtime it refuses to run
(returns unsupported) rather than execute on the host. See SECURITY.md.
Idempotent Tier-A facts (npm / PyPI / OSV) are cached in-process and on disk
under ~/.voyager/cache (content-addressed, TTL'd) so repeated checks are fast,
survive across runs, and lean less on the network. No secret is ever written
(auth headers are never part of a cache key or value). VOYAGER_NO_CACHE=1
disables it; VOYAGER_CACHE_DIR relocates it.
deps.dev-backed multi-ecosystem facts (crates / Go / RubyGems / Packagist), typosquatting detection, PyPI/cargo twins. Contributions welcome.
MIT © dir-ai