quadkit-cli
The quadkit command line: project scaffolding, generators, a smart
runner, and administrative commands for every stage of the application
lifecycle. Contributor-based — other packages can register their own
commands.
For day-to-day Quadkit developers: scaffold, generate, run, inspect.
The quadkit family
| Package | Role |
|---|---|
quadkit-contracts |
zero-dependency protocols, types, exception hierarchy |
quadkit |
the framework core — DI container, modules, config, logging, Result |
quadkit-web |
ASGI layer — controllers, routing, middleware, OpenAPI docs |
quadkit-cli |
project scaffolding and code generators |
quadkit-testing |
in-process test beds, fakes, fixtures |
Installation
uv add quadkit-cli
# or as a standalone tool:
uv tool install quadkit-cli
Requires Python >= 3.11.
Explicit runtime health (local 0.0.50 source)
# File checks only; explicitly reports that runtime health was NOT run
quadkit system health
# From an installed/importable app project, opt into real provider lifecycle
quadkit system health --app my_api.app:app --check sql:database_connection --strict
# Repeat --check contributor:name to select additional canonical async probes
--app must identify a fresh Quadkit Application instance in CREATED state,
not an ASGI object or a factory. The command starts it, awaits selected async
check(container) -> HealthCheckResult contributions, and stops it in finally,
including failures/cancellation. Startup/shutdown each have a cooperative 60-second
limit; probes use their contribution timeout. Unknown/duplicate/ambiguous selections
are rejected before application import/boot. Only explicitly selected checks run;
installed packages do not imply configured application dependencies.
Booting has real side effects: normal providers/background tasks and any application-configured migrations may run. Use an approved environment. This is not a read-only sandbox; it does not replace provider/configuration authority, start an HTTP server, register custom generated probes or verify migrations itself.
Only canonical HEALTHY is a passing probe. All other states/errors/malformed
results fail critical checks and warn for non-critical checks; --strict fails on
warnings too. Boot/shutdown failures fail the command. Provider message/error text
is not echoed by the runner (application/provider logs retain their own policies).
Without explicit runtime options the file-only command prints a runtime-not-run
warning; strict file-only mode therefore cannot claim runtime acceptance.
The SQL callback is demonstrated with generated anonymous-action apps in flat and
modular layouts using local SQLite. Other contributed probes still need individual
contract/runtime evidence; this is not universal dependency or installed-wheel
acceptance. No quadkit health top-level alias is introduced: use system health.
Minimal working example
There is no code to write — the product is the command line:
# Create a new project (single `api` template); the package
# inside is my_api/ with app.py exposing create_app()
quadkit new project my-api
cd my-api
# Generate application code (list all generators: quadkit gen list)
quadkit gen provider MyProvider
quadkit gen controller Orders
# Serve the application; reload is on by default, pass --no-reload in prod
quadkit run my_api.app:create_app --host 0.0.0.0 --port 8000 --workers 4
Eleven generators ship today (quadkit gen list):
controller middleware graphql webhook websocket exception_filter
interceptor error resource provider test
Global options: --json for machine-readable output, --quiet,
--debug, --no-color, and --config <path> to point at a specific
application.yaml.
Command index
| Command | Purpose |
|---|---|
quadkit new project / module / package |
scaffold projects, bounded contexts, and quadkit-* extensions |
quadkit init |
initialize Quadkit in an existing project |
quadkit add <provider> |
add a provider to a project (e.g. database, auth) |
quadkit run [target] |
smart runner — auto-detects create_app, sets profile |
quadkit dev start |
production-server startup |
quadkit gen <what> |
code generation (controllers, providers, middleware, tests, more — see quadkit gen list) |
quadkit test / quadkit lint |
project-level checks |
quadkit db / quadkit events |
database / event-schema management |
quadkit config / quadkit inspect / quadkit shell |
configuration, runtime introspection, REPL |
quadkit project / quadkit contrib / quadkit system |
project tasks, contributors, system info |
quadkit version |
framework and package versions |
Per-distribution guide: quadkit-cli reference.
Optional extras
[dev] and [test] bundle tooling; [all] pulls everything.
Configuration
The CLI reads application.yaml like any Quadkit application; its own
section is cli (color), overridable via QK_CLI__*, e.g.
QK_CLI__COLOR=false.
Error handling
Commands report structured failures (use --json for machine-readable
envelopes) and non-zero exit codes; --debug surfaces full tracebacks.
Testing
quadkit test runs the project suite; the CLI's own behavior is
covered by the public test set the release pipeline executes from the
exported tree.
Security
The CLI reads configuration and scaffolds code — it does not serve
traffic. As with every distribution, keep the 0.x line pinned and
review release notes on upgrade. Report vulnerabilities privately per
SECURITY.md.
Stability
Version 0.0.50 in the 0.x series, versioned independently of the
other distributions; APIs may change between minor versions until
1.0 — pin an exact version (quadkit-cli==0.0.50) or a tight range
(>=0.0.50,<0.1.0). Full policy:
stability and compatibility.
Links
- Documentation — https://oridecon.dev/quadkit/
- Getting started — https://oridecon.dev/quadkit/getting-started/installation/
- Changelog — https://github.com/dbtinoy-/quadkit/blob/main/CHANGELOG.md
- Issues — https://github.com/dbtinoy-/quadkit/issues
- Security — report privately per SECURITY.md
- Contributing — CONTRIBUTING.md
Apache-2.0 — see LICENSE. "Quadkit" and the Quadkit logo are trademarks of the project — see TRADEMARK.md.
Metadata
Release files for quadkit-cli 0.0.50
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| quadkit_cli-0.0.50.tar.gz | 192.6 kB | Without provenance | Details for quadkit_cli-0.0.50.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| quadkit_cli-0.0.50-py3-none-any.whl | Python 3 | none | any | Details for quadkit_cli-0.0.50-py3-none-any.whl |
Total release size: 373.0 kB
Release files / quadkit_cli-0.0.50.tar.gz
| Download URL | quadkit_cli-0.0.50.tar.gz |
|---|---|
| Size | 192.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d22030e84254a99b95353478998f87bebc59934d0eb7f621071b13a19e7e1142
|
|
BLAKE2b-256 checksum How to use checksums |
a5100571a3ab7ab6ed696ab03c3111423fb0ffb3eae68419e6644eae6e6316d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / quadkit_cli-0.0.50-py3-none-any.whl
| Download URL | quadkit_cli-0.0.50-py3-none-any.whl |
|---|---|
| Size | 180.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fe46b6cbf11b217aa7c972ac460770061117a14a43ebfe2b3849f85c3baf4b98
|
|
BLAKE2b-256 checksum How to use checksums |
9023407a642e3c0d8caf9d9c97d85954ab20af4ff8ec474bc1875ef3c404101e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for quadkit-cli 0.0.50
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.