Skip to main content

Oneport — the pre-ship gate

One command runs every Oneport check across your repo and tells you, in one verdict, whether it's safe to ship.

onp ship orchestrates the whole Oneport tool suite — secret scanning, dependency vulnerabilities, migration safety, code review, API breaking changes, test gaps, and more — into a single ship-readiness verdict with a single exit code for CI.

It doesn't reimplement the tools. It runs each independent Oneport CLI, merges their findings by severity, and answers the only question that matters before a deploy: is this safe to ship, and if not, what do I fix first?

$ onp ship

Ship readiness: BLOCKED — 2 blocker(s), 3 warning(s)

MUST FIX before shipping
  ✗ [secrets]  AWS Access Key ID  config.py:12
      fix: Deactivate the key in IAM, rotate it, purge git history.
  ✗ [migrate]  Drops a column with no reverse migration  0042_auto.py:8

SHOULD FIX
  ⚠ [depcheck] requests 2.19 — CVE reachable in fetch.py:42
  ⚠ [review]   SQL injection risk  users.py:8

✓ apidiff  ✓ testgap

→ Fix the 2 blocker(s), then run onp ship again.

Install

pip install oneport          # the orchestrator (this package)
# plus whichever tools you want gated:
pip install oneport-secrets oneport-depcheck oneport-migrate oneport-review \
            oneport-apidiff oneport-testgap

oneport doctor shows which tools are installed.

Use

onp init          # scaffold .oneport/oneport.yaml + guidelines.md
onp ship          # run the gate on the whole repo
onp ship src/     # or a subpath
onp ship --format json      # machine-readable, for CI
onp ship --fail-on critical # only critical findings block
oneport dashboard     # the same verdict as a local HTML dashboard (nothing uploaded)
oneport list          # show which gates will run
onp tools         # the whole suite, by layer, with install status
oneport usage         # token usage from the local ledger

Exit code is 1 when any gate blocks, 0 when clear — drop onp ship straight into CI.

The whole suite, one front door

Every Oneport tool is a first-class onp subcommand — onp <tool> ... forwards to the tool's own CLI, so this one command is the way into the platform:

Layer Tools
Trust onp secrets · onp depcheck · onp migrate · onp review · onp apidiff · onp testgap · onp costwatch
Velocity oneport impact · oneport standup · oneport upgrade
Knowledge oneport context · oneport docgen
Operations oneport apiwatch · oneport postmortem · oneport debug · oneport debt
Governance oneport evidence
oneport standup daily                       # your git → standup notes
oneport impact analyze billing/stripe.py    # what breaks if I touch this?
oneport upgrade scan --to django:5.0        # deprecated-API readiness
oneport evidence report -F soc2 -o pack.pdf # SOC 2 evidence from your ship history
onp review --staged                     # AI review of what you're committing

Each tool is its own pip package — install only what you use; onp tools shows what's present and gives the install hint for what isn't. A tool that isn't installed never breaks the umbrella.

Configure — .oneport/oneport.yaml

gates:              # which gates run, in order (omit for sensible defaults)
  - secrets
  - depcheck
  - migrate
  - review
  - apidiff
  - testgap
fail_on: error      # verdict blocks on this severity or higher

Or keep the defaults and adjust with enable: / disable: lists. The same .oneport/ directory holds guidelines.md — the shared brain every Oneport tool reads.

How it fits together

  • oneport_core — the shared spine: the result contract every tool's JSON is normalised into, config loading, the tool registry, and the usage ledger.
  • oneport_cli — the oneport orchestrator: runs each gate as a subprocess, merges results, renders the verdict.

A tool that isn't installed is skipped; a tool that errors is surfaced (and, by default, blocks — a gate that can't run means the repo can't be certified). No tool failure ever takes down the whole run.

Privacy

Serverless by design. oneport runs the tools on your machine; each tool talks only to its model API on your own key. There is no Oneport server. The usage ledger (~/.oneport/usage.db) stores token counts and a one-way hash of the repo path — never your code.

Metadata

Release files for oneport 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oneport 0.4.0
File Size Uploaded Provenance Actions
oneport-0.4.0.tar.gz 50.1 kB Without provenance Details for oneport-0.4.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for oneport 0.4.0
File Interpreter ABI Platform Actions
oneport-0.4.0-py3-none-any.whl Python 3 none any Details for oneport-0.4.0-py3-none-any.whl

Total release size: 96.0 kB

Release files / oneport-0.4.0.tar.gz

Download URL oneport-0.4.0.tar.gz
Size 50.1 kB
Tags Source
SHA-256 checksum
How to use checksums
339b0747fffb0a7df77fd589fab3d057b1e6fefd3a782ce0f6703a08eb84c8b3
BLAKE2b-256 checksum
How to use checksums
a331d6e598e9b0a4b00c8ddfd36b1169b1e9b355c867737e92bcb4e2eac48d3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release files / oneport-0.4.0-py3-none-any.whl

Download URL oneport-0.4.0-py3-none-any.whl
Size 45.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2adbba173ee276eda4f7170dbdf519986fd7ecbd51b9acf639635cfe3f742822
BLAKE2b-256 checksum
How to use checksums
7a7f59745b3da08c5df431253547229a4602edaff60149930c9b979279b98a2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Security for oneport 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page