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: insecurehttp://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
GETrequests are sent by default; POST,PUT,PATCH, andDELETErequire--allow-unsafe-methods;--yesdoes not unlock unsafe methods by itself;--dry-runprints planned requests without sending HTTP traffic;--insecuremust 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11d7dddb6c9ce54db5d30f2425d38b5eee0e16d53a25d5c9a5d3783f87f91279
|
|
| MD5 |
cb7dbb0b8903f4c1939068a7bef572be
|
|
| BLAKE2b-256 |
25d8c9c1f797ed9a5a5ef82dda3d7d43cd3fb2fa43718db27448c5dcee17432a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13d19be70ead183ff45b879b35cd7e94a68e43cf85f1da7da4f1c1a0ef790282
|
|
| MD5 |
2af6b308ec06fa47e563d633040eb250
|
|
| BLAKE2b-256 |
df7d169c7034638e25f44f026023124b7ea29597088ea66c9134e29af8edaca9
|