mrkeyoor.com_
Thu 17 Sept 22:01 UTC
AI Toolsevaluationupdated 26 Aug 2026

opensrc review

opensrc is a command-line tool that finds a package's upstream repository, checks out the source matching the installed version, and returns its local path. Coding agents and developers can then search real implementation code instead of relying on type declarations, package bundles, or model memory.

+5stars / 7d
Verdict

Our opensrc run installed 536 packages and occupied 851 MB, then built in 45 seconds but failed its 6-second test step because a workspace reported missing node_modules. Use the published binary when an agent genuinely needs dependency source, since the path-based interface is simple and registry coverage is useful. Keep fetched code untrusted, restrict agent permissions, and do not let comments in an unfamiliar repository become instructions.

We ran it

Lab card: what happened when we ran opensrcScreenshot of opensrc (opensrc.sh)
Install✓ · 66s536 packages · 851 MB
Build✓ · 45s
Tests✗ · 6sran, no count parsed
Repo85 files~7,142 lines of source · 0.7 MB · 2 CI workflows

Answers from our run

Does opensrc build from source?

Dependencies installed in 66 seconds (536 packages), and the build succeeded in 45 seconds. We cloned commit f96078a into a clean Debian container with 3 CPUs and no project-specific setup.

Do opensrc's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use opensrc?

Teams that cannot expose third-party source text to an autonomous agent: issue 59 raises the unresolved risk of prompt instructions embedded in code comments.

What are the alternatives to opensrc?

Continue, MCP Servers, npm CLI. Our opensrc run installed 536 packages and occupied 851 MB, then built in 45 seconds but failed its 6-second test step because a workspace reported missing node_modules.

Setup4/5One global install for users; contributor workspace test failed
Docs4/5Concise command, registry, cache, and development coverage
Community3/5June release and push, with active pull requests continuing in August
Maturity3/5Useful narrow CLI, with cache and prompt-safety questions still open

Who it’s for

Developers debugging behavior hidden behind a package's public API.
Coding-agent users who want source checkouts available to rg, cat, and other local tools.
Polyglot teams working across npm, PyPI, crates.io, GitHub, GitLab, and Bitbucket.
Maintainers who can review untrusted source before an agent acts on anything it contains.

Who it’s NOT for

Teams that cannot expose third-party source text to an autonomous agent: issue 59 raises the unresolved risk of prompt instructions embedded in code comments.
Air-gapped workflows without a prepared cache: the first lookup calls registry APIs and shallow-clones the repository.
Users who need project-local caches today: the released README describes a global ~/.opensrc/ cache, while project-local support is still an open pull request.
Environments with strict source-license intake rules: fetching code is easy, but license approval remains the team's responsibility.
Buyers expecting a clean monorepo test command in our environment: our test run exited 1 after reporting a missing node_modules under packages/opensrc.

Setup reality

Our sandbox installed 536 packages in 66 seconds and used 851 MB. The build passed in 45 seconds. Tests exited 1 after 6 seconds. The log tail said the local package.json existed but node_modules was missing in packages/opensrc, then Turborepo reported one successful task out of two and failed opensrc#test.

Users install the global npm package, which supplies the native Rust binary. Fetching needs network access to registry APIs and the Git host. Private repositories need whatever Git authentication the environment already uses; normal public package lookup needs no service account or model key.

Source is cached globally under ~/.opensrc/ unless OPENSRC_HOME changes the location. Cache size grows with repositories and versions, so list and clean commands matter on shared machines. npm lockfiles can guide version resolution; other sources use an explicit version or the latest result.

It turns a package name into searchable upstream code

opensrc answers a question package managers often leave awkward: which upstream source matches the dependency version in this project? opensrc path zod resolves the package, shallow-clones the corresponding repository and tag on a cache miss, then prints an absolute path. That path composes with tools developers already trust. rg, cat, find, an editor, or a coding agent can inspect the implementation without a custom query language.

The CLI covers npm by default and accepts prefixes for PyPI and crates.io. It also fetches repositories from GitHub, GitLab, and Bitbucket. Specific package versions can be requested directly. For npm projects, --cwd lets the tool read the lockfile and resolve the installed version. Multiple packages may be fetched or printed in one call, which is handy when behavior crosses a framework and several supporting libraries.

A native binary keeps repeated lookup work small

The npm installation delivers a native Rust binary, so each command does not start a Node.js application. A first request needs registry and Git network access. Later requests return the cached path. Separate commands fetch without printing, list cached entries as text or JSON, remove one source, or clean groups by registry and repository type. OPENSRC_HOME moves the cache away from its default location.

The released documentation places everything under ~/.opensrc/, including repository checkouts by host, owner, name, and version plus a metadata file. That is convenient for one developer account. It is less suitable for disposable CI or shared build users, where a global cache can mix projects and grow without a quota. Pull request 69 adds project-local cache support, but it was still open on August 26, 2026. Do not describe that behavior as released until it lands in a tagged version.

What happened when we ran it

Our sandbox installed 536 packages in 66 seconds and used 851 MB on disk. The monorepo build completed in 45 seconds. At commit f96078a, the checkout contained 85 files, about 7,142 lines of source, and occupied 0.7 MB before installation. The contrast between the small repository and the 851 MB installed workspace is notable for contributors, even though ordinary users receive the native package.

The test command exited 1 after 6 seconds. Turborepo reported one successful task out of two. The failing opensrc#test task ran under packages/opensrc, where the log warned that a local package.json existed but node_modules was missing. The tail ended with pnpm and Turborepo lifecycle errors. That output identifies the immediate workspace complaint, but it does not show whether the cause was dependency layout, a script assumption, or our container.

The repository has two CI workflow files, no Dockerfile, no tests directory, and monorepo workspaces. Our measurement block did not include an npm audit result, so there is no honest vulnerability total to report. The useful conclusion is narrower: installation and build succeeded, while the top-level test path did not complete cleanly in a fresh unprivileged container.

Source context can also contain instructions aimed at agents

opensrc is marketed to coding agents, and that changes the threat model. Open issue 59 asks what stops a dependency comment from containing a malicious instruction for an agent that reads it. The tool's job is to fetch source, not interpret or sanitize prose inside that source. A successful clone therefore expands what the model can read and potentially what it may treat as guidance.

The defense belongs around the agent. Treat repository text as data, keep system and project instructions separate, and require approval for shell commands, network calls, credential access, or file writes prompted by fetched content. Limit the fetched source to packages relevant to the current question. A human developer can recognize a strange instruction in a comment; an autonomous workflow needs explicit rules that untrusted code cannot grant itself authority.

Licensing deserves similar attention. opensrc can retrieve a repository whose source license differs from the packaged artifact or whose monorepo contains several notices. Reading code for debugging is one use; copying implementation into a product is another. The cache should preserve provenance, while code review should record the source repository and version before any copied section enters a codebase.

Health is decent, though the last release predates active pull requests

The repository's last merged push and release, v0.7.3, both arrived on June 23, 2026. GitHub showed 22 open issues and pull requests. August activity included a project-local cache pull request, while July work covered repository-field parsing. That is ongoing participation after the last tag, not evidence of abandonment. It also means users should distinguish proposed fixes from released behavior.

opensrc is worth installing for a developer or supervised agent that frequently needs to answer “what does this dependency really do?” Its plain path output is the right abstraction. The recommendation weakens as autonomy grows. On an unattended agent, every fetched repository is a new untrusted document set, and the convenience of immediate source access must be matched by a permission boundary that source text cannot change.

Alternatives

ProjectWhat it isPick it when
Continue gh↗An open coding assistant that indexes local code and other context for model use.pick this instead when you want a full coding-agent interface and indexed context rather than a source-fetching utility.
MCP Servers gh↗Reference MCP servers include a Git server for controlled repository inspection by clients.pick this instead when repository access should be exposed through MCP with an explicit client-server boundary.
npm CLIThe standard npm client can reveal package repository metadata for a manual, reviewable clone workflow.pick this instead when npm is the only registry and you prefer explicit metadata lookup and Git commands over another cache manager.

Sources

  1. opensrc README
  2. opensrc CLI README
  3. opensrc v0.7.3 release
  4. Prompt injection risk report
  5. Project-local cache pull request

More ai tools reviews

rowboat · skills · superpowers-zh · yolov5 · eve · MemOS · the whole board →