Rank possible components across npm, PyPI, crates.io, RubyGems, GitHub and Hugging Face. Discovery is guidance, not approval.
START HERE
What ossfind does
ossfind is a dependency decision service for AI-assisted development. It checks a direct package at an exact version against an administrator-controlled license and vulnerability policy before adoption, then records who requested the decision, which policy was applied, and which evidence was available.
Return allow, review or deny for exact npm, PyPI and Maven versions using live metadata and OSV advisories.
Apply the same central policy through CLI, MCP, the browser console and a GitHub pull-request check.
QUICK START
Install an authorized customer build
ossfind 0.3.0 is delivered by Pamyn under commercial terms. Use Node.js 24.20 or later. Verify the package checksum supplied with your order, then install the archive in an administrator-managed location.
mkdir ossfind-install && cd ossfind-install
npm install /secure/path/ossfind-0.3.0.tgz
./node_modules/.bin/ossfind --versionConnect to the central service
Ask your administrator for the HTTPS service origin and an evaluator token. Store the token in your approved secret manager. Do not put it in a command argument, repository file, MCP JSON or TOML.
On the public Pamyn demo, developers can request a 24-hour evaluator day pass in the console. The first key is automatic while the shared five-per-day quota remains available; it permits ten evaluations. Save the one-time key ID and renewal secret securely. Another day requires an administrator-approved renewal, which the developer redeems in the console. Customer pilots use operator-issued credentials instead.
export OSSFIND_API_URL=https://your-ossfind-service.example
export OSSFIND_API_TOKEN=your-evaluator-token
./node_modules/.bin/ossfind evaluate express --package-version 5.1.0 --jsonExit 0 means a live allow decision was recorded. Exit 2 means review, deny or demo evidence. Exit 1 means input, configuration, network, authentication or storage failure.
CORE CONCEPTS
How to read a decision
| Outcome | Meaning | Required action |
|---|---|---|
| Allow | Retrieved evidence satisfies the active policy for this exact direct version. | The workflow may continue if all other controls pass. |
| Review | Evidence is missing, ambiguous, stale, or requires human judgment. | Resolve the reason. Do not treat it as approval. |
| Deny | A configured license, advisory severity or component rule was violated. | Choose another version/component or follow your external exception process. |
A decision is tied to the package coordinate, exact version, evidence retrieval time and policy fingerprint. It is not a guarantee that the package is vulnerability-free, compatible, legally suitable or safe at runtime.
CLI REFERENCE
Commands
| Command | Purpose | Current scope |
|---|---|---|
search | Rank component candidates for a task. | Six discovery ecosystems or all. |
inspect | Read verified exports, signatures and installation facts. | npm and PyPI. |
evaluate | Apply policy to one exact version and record the decision. | npm, PyPI and Maven. |
detect | Find project manifests without evaluating them. | Node, Python, Java/Kotlin, .NET, Go and Rust. |
setup | Generate an MCP entry for a supported coding client. | Copilot, Claude Code and Codex. |
gate | Evaluate supported dependency changes between two Git commits. | npm locks, exact requirements and direct Maven versions. |
ossfind search "HTTP client" --ecosystem npm --limit 5
ossfind inspect axios --json
ossfind detect . --json
ossfind evaluate Pillow --ecosystem pypi --package-version 12.1.0 --json
ossfind gate --base "$BASE_SHA" --head "$HEAD_SHA" --mode observe --format githubUse --help for the installed build’s full argument list. Machine consumers should use --json and must still enforce the exit code.
CODING AGENTS
Connect through MCP
The installed ossfind-mcp process is a local stdio bridge. It is agent-independent and can be launched by GitHub Copilot in VS Code, Claude Code, Codex and other MCP clients. The central HTTP service is not a remote MCP endpoint.
ossfind setup copilot
ossfind setup claude
ossfind setup codex- Run the matching setup command from the final installation path.
- Merge the printed entry into the client’s existing configuration.
- Expose
OSSFIND_API_URLandOSSFIND_API_TOKENto the client-launched process through approved secret handling. - Restart or reload the client, list tools, and test one known allow and one known deny.
Available MCP tools
| Tool | Behavior |
|---|---|
search_components | Searches and ranks candidates across six ecosystems. |
inspect_component | Returns npm TypeScript or PyPI Python API facts. |
check_compatibility | Compares verified npm/PyPI manifest facts with project facts. |
plan_integration | Creates a minimal install/import scaffold from verified signatures. |
evaluate_component | Evaluates and records one exact npm, PyPI or Maven version. |
explain_decision | Optionally generates a non-authoritative Gemini brief for a recorded review/deny decision. |
usage_stats | Returns aggregate supplier, cache, rate-limit and search metrics. |
PULL REQUEST CONTROL
Protect dependency changes in GitHub
The gate compares committed Git objects, finds the merge base, extracts supported changed direct dependencies and sends exact versions to the same central evaluator. It does not run repository code or invoke a package manager.
OSSFIND_API_URL=https://your-ossfind-service.example \
OSSFIND_API_TOKEN="$TOKEN" \
ossfind gate --base "$BASE_SHA" --head "$HEAD_SHA" --mode observe --format github| Ecosystem | Resolved inputs |
|---|---|
| npm | Direct dependency declarations resolved through package-lock.json or npm-shrinkwrap.json v1/v2/v3. |
| PyPI | Exact name==version entries in supported requirements*.txt files. |
| Maven | Direct POM dependencies with a literal release or a property in the same POM. |
Start in observe: review/deny/unresolved findings are reported while the gate exits 0, but setup and service failures exit 1. After policy tuning, use block and require the check in branch protection. Block mode exits 2 for review, deny or unresolved findings. The current maximum is 25 changed exact versions per run.
Changed pnpm, Yarn, Bun, Poetry, uv and Gradle dependency files are reported as unresolved. Fork pull requests normally do not receive repository secrets. Use your organization’s trusted-run process.
HTTP API
Central service interface
All API calls use Authorization: Bearer <token>. Health endpoints are public. Give every repository or agent installation its own least-privilege service principal.
| Endpoint | Method | Role | Result |
|---|---|---|---|
/healthz | GET/HEAD | Public | Process liveness. |
/readyz | GET/HEAD | Public | Live governance and persistent storage readiness. |
/api/v1/capabilities | GET | Any principal | Reports optional server capabilities without exposing credentials. |
/api/v1/policy | GET | Any principal | Active policy. |
/api/v1/evaluations | POST | Evaluator/admin | Persisted decision record. |
/api/v1/review-briefs | POST | Evaluator/auditor/admin | Optional AI advisory for a recorded review/deny decision; evaluator access is limited to its own records. |
/api/v1/review-brief-disclosures | GET | Auditor/admin | Paginated audit of provider disclosures with the requesting principal, decision, audience, model and time. |
/api/v1/decisions | GET | Auditor/admin | Cursor-paginated history. |
/api/search | GET | Evaluator/admin | Discovery results. |
/api/usage | GET/HEAD | Auditor/admin | Aggregate operational metrics. |
curl --fail-with-body https://your-ossfind-service.example/api/v1/evaluations \
-H "Authorization: Bearer $OSSFIND_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"ecosystem":"npm","name":"express","version":"5.1.0"}'Status 400/415 means invalid input, 401 invalid credentials, 403 insufficient role or disallowed origin, 404 unavailable endpoint, 408/413 slow or oversized body, 429 quota exceeded, and 503 unexpected service or storage failure. Every non-2xx response means no approval.
POLICY
Configure organizational rules
A policy can allow exact registry license strings, block advisory severities, and deny named components. Unknown keys are rejected. Changes are loaded at startup and every decision includes the canonical SHA-256 policy fingerprint.
{
"id": "engineering-default-v1",
"allowedLicenses": ["MIT", "Apache-2.0", "BSD-3-Clause"],
"blockedSeverities": ["critical", "high"],
"deniedComponents": ["npm:example-blocked-package"]
}License matching is exact string policy, not legal compatibility analysis. For example, MIT OR Apache-2.0 does not equal MIT. Unknown or ambiguous advisory severity requires review. A known deny takes precedence. Policy changes require a service restart; 0.3.0 has no policy-write or exception-approval API.
OPERATIONS
Run a single-organization instance
Use TLS ingress, network access controls, a persistent local volume for SQLite, and a unique evaluator credential per integration. Set OSSFIND_PUBLIC_ORIGIN to the exact HTTPS origin. Do not run multiple replicas against the same SQLite file.
Default service limits
- Four concurrent API operations and 60 authenticated requests per minute for each discovery and governance workload bucket, per process.
- Thirty evaluations and five uncached AI review briefs per principal per minute.
- 16 KiB JSON request bodies and a 10-second body deadline.
- Shorter caching for security evidence; expired evidence never becomes a fallback approval.
Optional Gemini review briefs
AI is off by default. To enable it, use a paid Gemini API project approved for the customer data involved, keep the key in server-side secret storage, and set all three variables below. Pin the model instead of accepting silent model changes.
OSSFIND_REVIEW_AI=gemini
GEMINI_API_KEY=<secret manager reference>
OSSFIND_GEMINI_MODEL=gemini-3.8-flash
OSSFIND_GEMINI_DATA_TERMS=paid-approved
OSSFIND_REVIEW_BRIEFS_PER_PRINCIPAL_PER_MINUTE=5Each uncached request uses the Gemini Interactions API with provider storage disabled, no tools, bounded response size and strict structured-output validation. OSSFIND_GEMINI_DATA_TERMS=paid-approved is a startup acknowledgement that the project is on paid terms and approved for the submitted evidence. Valid briefs are cached in the audit database by decision, audience, provider, model and prompt version. Every provider disclosure records the requesting principal in a separate audit log. Provider failure leaves the recorded outcome unchanged.
Monitor /api/usage for supplier requests, cache hits and misses, upstream 429 responses, the latest reported rate-limit headroom, results by ecosystem and search latency. When AI review is enabled, it also reports aggregate provider calls, successes, cache/coalescing counts, errors and token usage. Metrics are in-memory and reset when the process restarts; they are operational signals, not billing records.
Backup and upgrade
- Stop the service and close database connections.
- Copy the entire data directory, including SQLite WAL files if present.
- Restore to a separate instance and verify history before relying on the backup.
- Pin the authorized release, upgrade while stopped, then verify readiness, one authenticated evaluation and history retrieval.
Rotate credentials by adding a new SHA-256 token digest under a unique principal, distributing the new secret, restarting, then removing the old principal and restarting again. Never remove the last administrator.
SECURITY AND DATA
Know what leaves your environment
An exact evaluation sends the ecosystem, package name and version to its public metadata provider and OSV. It does not require repository source. Package coordinates can still reveal technology choices and should follow your data-classification rules. Discovery can contact additional registries and metadata services.
Credentials are stored as cryptographic hashes in service configuration. Decision history stores the authenticated principal ID, package coordinate, outcome, reasons, evidence summaries, timestamps and policy fingerprint. Restrict ingress logs so authorization headers are never recorded.
Optional Gemini review sends a minimized projection of a selected review/deny decision: package coordinate, outcome, reason codes, license and evidence status, advisory IDs/severity, scope and requested audience. It does not send source code, audit actor, credential or freeform customer prompt. Review Google’s paid-service terms and DPA for each deployment.
Remote aggregate telemetry is disabled unless an operator explicitly enables both its switch and HTTPS endpoint. It excludes queries, package names, paths, credentials and governance evidence. Review the security overview and privacy information before a pilot.
TROUBLESHOOTING
Common failures
The console says “Enter a valid service access token.”
Use the role-specific token issued for this instance. Check for whitespace and confirm the token belongs to the same service origin. Tokens stay only in the current page and clear on reload.
The agent cannot see ossfind tools.
Run ossfind setup <client> again from the final install path, merge the output without replacing other MCP entries, and restart the client. GUI-launched clients may not inherit variables exported in a terminal.
An exact version returns review.
Read the reasons and evidence state. The license may be absent or not explicitly allowed, supplier evidence may be unavailable, or an advisory may have unknown severity. Do not change review to allow in the client.
The service returns 429.
Honor Retry-After, reduce parallel calls and inspect aggregate supplier headroom. Give each integration its own evaluator principal. The current in-process global quota is a workload bound, not DDoS protection.
/readyz returns 503.
Confirm live mode is enabled, governance and at least one evaluator/admin principal are configured, and the persistent audit database is writable. Fixture or in-memory governance deliberately fails pilot readiness.
The gate reports an unresolved dependency.
Pin a supported direct version in a supported file, or keep the gate in observation mode until the format is supported. Blocking mode correctly treats unresolved input as no approval.
PRODUCT SCOPE
Current boundary
Available in 0.3.0
- Exact npm, PyPI and Maven policy evaluation
- Central CLI and MCP decisions
- GitHub gate for documented direct formats
- Evaluator, auditor and admin roles
- Persistent audit history and browser export
- Six-ecosystem discovery
- Self-hosted or Pamyn-assisted deployment
Requires later development or separate tooling
- Transitive and runtime dependency scanning
- Malware and artifact integrity analysis
- Black Duck or Fortify connectors
- SAML/OIDC, SCIM and individual-user login
- Multi-tenancy and high availability
- Signed or immutable decision attestations
- SOC 2/ISO certification and an uptime SLA
LICENSE AND SUPPORT
Commercial access
ossfind 0.3.0 and later are proprietary Pamyn software. An accepted proposal, order or written commercial agreement controls access, permitted deployment, integrations, updates and support. There is no public 0.3.0 source archive.
Versions through 0.1.12 remain available to their recipients under MIT. The already exposed 0.2.0 snapshot remains available to its recipients under AGPL-3.0-only; their existing rights are unchanged. Those historical rights do not grant access to 0.3.0 or later.
Documentation updated September 12, 2026 · Applies to ossfind 0.3.0
No matching section
Try a broader term or clear the search.