Skip to main content

Local-first OpenAPI 3.0/3.1 security audit CLI

Project description

Speculynx CLI

Speculynx is a local-first Python/Typer CLI for auditing OpenAPI 3.0.x and 3.1.x files for API security risks. Swagger 2.0, GraphQL, gRPC, and SOAP are outside the MVP scope.

OpenAPI files are analyzed locally. Speculynx does not send customer OpenAPI documents to the backend. Free scans work without a license and without network access.

Install

From a local checkout:

python -m pip install -e .

After a package build, install the wheel locally:

python -m pip install dist\speculynx-0.1.2-py3-none-any.whl

Commands

speculynx --help
speculynx scan --file path\to\openapi.yaml
speculynx login
speculynx info
speculynx logout

login verifies a Pro license key with:

POST /v1/verify
Authorization: Bearer <license_key>

The key is stored with the operating-system credential store through keyring. Legacy ~/.speculynx.json files are ignored.

Free Scan

speculynx scan --file path\to\openapi.yaml

Free rules include:

  • KEY-EXP-01: keys or tokens exposed in query parameters.
  • HTTP-001: insecure http:// server URLs.
  • AUTH-001: missing documented authentication.
  • KEY-EXP-02: missing documented key/token expiration.

Pro Scan

With a valid Pro license, scan also runs heuristic checks for patterns such as BOLA, BFLA, sensitive data exposure, likely secrets in examples, SSRF inputs, missing rate-limit documentation, and unclear API inventory/versioning.

Pro findings are static analysis signals, not proof of runtime vulnerabilities. They should be manually verified against backend authorization, gateway, and infrastructure controls.

PDF Export

PDF export is Pro-only:

speculynx scan --file path\to\openapi.yaml --export report.pdf

In Free mode the export is refused.

Live Scan / DAST

scan-live is Pro-only and can send real HTTP requests to a target API. It is safe-by-default:

  • only GET requests are sent by default;
  • POST, PUT, PATCH, and DELETE require --allow-unsafe-methods;
  • --yes does not unlock unsafe methods by itself;
  • --dry-run prints planned requests without sending HTTP traffic;
  • --insecure must be explicitly provided to disable TLS verification.

Examples:

speculynx scan-live --file openapi.yaml --target https://api.example.com --dry-run
speculynx scan-live --file openapi.yaml --target https://api.example.com --yes
speculynx scan-live --file openapi.yaml --target https://api.example.com --yes --allow-unsafe-methods

Only run scan-live against systems you own or are explicitly authorized to test.

Development

python -m unittest discover -s tests -v
python -m build

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

speculynx-0.1.2.tar.gz (29.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

speculynx-0.1.2-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

File details

Details for the file speculynx-0.1.2.tar.gz.

File metadata

  • Download URL: speculynx-0.1.2.tar.gz
  • Upload date:
  • Size: 29.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for speculynx-0.1.2.tar.gz
Algorithm Hash digest
SHA256 11d7dddb6c9ce54db5d30f2425d38b5eee0e16d53a25d5c9a5d3783f87f91279
MD5 cb7dbb0b8903f4c1939068a7bef572be
BLAKE2b-256 25d8c9c1f797ed9a5a5ef82dda3d7d43cd3fb2fa43718db27448c5dcee17432a

See more details on using hashes here.

File details

Details for the file speculynx-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: speculynx-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 20.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for speculynx-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 13d19be70ead183ff45b879b35cd7e94a68e43cf85f1da7da4f1c1a0ef790282
MD5 2af6b308ec06fa47e563d633040eb250
BLAKE2b-256 df7d169c7034638e25f44f026023124b7ea29597088ea66c9134e29af8edaca9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page