opensrc
v0.7.2
Published
Fetch source code for packages to give coding agents deeper context
Readme
opensrc
Give coding agents access to any package's source code. Resolves packages from registry APIs, shallow-clones at the correct version tag, and caches globally at ~/.opensrc/.
Install
npm install -g opensrcInstalling globally gives you the native Rust binary directly — no Node.js overhead on each run.
Usage
opensrc path prints the absolute path to a package's source, fetching on cache miss. Compose it with any tool:
rg "parse" $(opensrc path zod)
cat $(opensrc path zod)/src/types.ts
find $(opensrc path pypi:requests) -name "*.py"
ls $(opensrc path crates:serde)/src/
grep -r "Router" $(opensrc path vercel/next.js)/packages/next/src/Multiple packages at once:
rg "parse" $(opensrc path zod react next)Specific versions:
rg "ZodError" $(opensrc path [email protected])
cat $(opensrc path pypi:[email protected])/src/flask/app.pyOptions:
--cwd <path>— working directory for lockfile version resolution--verbose— show progress during fetch
List cached sources
opensrc list # human-readable
opensrc list --json # JSON outputRemove cached sources
opensrc remove zod
opensrc remove vercel/next.js
opensrc rm pypi:requestsClean cache
opensrc clean # remove everything
opensrc clean --packages # only packages
opensrc clean --repos # only repos
opensrc clean --npm # only npm packages
opensrc clean --pypi # only PyPI packages
opensrc clean --crates # only crates.io packagesSupported Registries
| Registry | Prefix | Example |
|----------|--------|---------|
| npm | (default) or npm: | opensrc path zod |
| PyPI | pypi:, pip:, python: | opensrc path pypi:requests |
| crates.io | crates:, cargo:, rust: | opensrc path crates:serde |
| GitHub | owner/repo or URL | opensrc path vercel/next.js |
| GitLab | gitlab: or URL | opensrc path gitlab:owner/repo |
| Bitbucket | bitbucket: or URL | opensrc path bitbucket:owner/repo |
How It Works
- Resolves the package to a git repository URL via registry APIs
- Detects the installed version from lockfiles (npm only) or uses latest
- Shallow-clones the repo at the matching version tag
- Caches in
~/.opensrc/repos/<host>/<owner>/<repo>/<version>/ - Tracks metadata in
~/.opensrc/sources.json
The OPENSRC_HOME environment variable overrides the default cache location.
Development
Requires Rust and Node.js 18+.
# Build
cargo build --manifest-path cli/Cargo.toml
# Run tests
cargo test --manifest-path cli/Cargo.toml
# Build release + copy to bin/
npm run build:native
# Format
cargo fmt --manifest-path cli/Cargo.toml
# Lint
cargo clippy --manifest-path cli/Cargo.toml -- -D warningsLicense
Apache-2.0
