Quadkit is alpha (0.0.x). The current release is 0.0.42 — thirteen packages on PyPI. Pin what you import; public APIs may still move before 1.0.
uv add "quadkit>=0.0.42,<0.1"uv add "quadkit-cli>=0.0.42,<0.1"uv add "quadkit-web>=0.0.42,<0.1"This page is the product digest: what a visitor should know. Per-package release history lives with each package on PyPI — see quadkit’s release history.
What is stable enough to build on
Section titled “What is stable enough to build on”The architecture is the part we are not casually rewriting:
- Published packages depend only on
quadkitandquadkit-contracts, never on each other. The documented exceptions are tooling:quadkit-cliandquadkit-testing. - Providers
registerthenboot.register()does not resolve. - Domain failures are
Result[T, E]. Infrastructure failures still raise. - One project tree (
domains/, app-rootdi/), grown withquadkit new module. Templates add packages, not a different shape.
Expect names, extra kwargs, and the reserved-but-unpublished packages to keep moving.
[0.0.42] — 2026-09-26
Section titled “[0.0.42] — 2026-09-26”The current cut. This is the line to pin.
Packages
Section titled “Packages”The public line is now thirteen distributions, released together, each with a wheel and an sdist on PyPI:
| Group | Packages |
|---|---|
| Foundation | quadkit, quadkit-contracts |
| Web | quadkit-web, quadkit-http |
| Data | quadkit-sql, quadkit-cache, quadkit-storage |
| Events | quadkit-events |
| Infra | quadkit-tasks, quadkit-monitor |
| Security | quadkit-auth |
| Tooling | quadkit-cli, quadkit-testing |
- Outbound HTTP, storage, and auth are public —
quadkit-http,quadkit-storage, andquadkit-authjoin the line alongside SQL, cache, events, tasks, and monitoring. - PyPI. All thirteen are installable at 0.0.42. Pin
>=0.0.42,<0.1. - Docs. Every package page is generated from its published sdist: README, guides, and an API reference built from the exports each package actually declares.
How to take 0.0.42
Section titled “How to take 0.0.42”uv add "quadkit-cli>=0.0.42,<0.1"[0.0.4] — 2026-09-19
Section titled “[0.0.4] — 2026-09-19”The cut that opened the line.
Runtime
Section titled “Runtime”- Application and container. Async-first DI:
create_app(), modules, YAML config, structured logging (json_format). - Providers.
register()receivesContainerRegistrarProtocol.boot()receivesContainerResolverProtocol. Shutdown runs in reverse priority. - Result. Domain failures are
Result[T, E]. Do not wrap a dead database inResult; do notunwrap()withoutis_ok(). - Contracts.
quadkit-contractsis zero-dependency: protocols, value types, exceptions. If two packages need the same type, it lives there.
Packages
Section titled “Packages”Five distributions, all alpha on the same line:
| Package | What it gives you |
|---|---|
quadkit | Application, DI container, providers, modules, config, Result, logging, validation |
quadkit-contracts | Zero-dependency protocols, value objects, and exceptions |
quadkit-web | ASGI — controllers, routing, middleware, OpenAPI, templates, uploads |
quadkit-cli | Scaffolding, generators, dev server, config inspection |
quadkit-testing | Test harnesses, fakes, fixtures, compliance suites |
Persistence, auth, queues, search, storage, and the AI platform are not published — they are built on the same contracts in the private repository and will appear on PyPI as they stabilise. quadkit-contracts reserves their domain directories; nothing published depends on them.
Tooling and distribution
Section titled “Tooling and distribution”- CLI.
quadkit new project,quadkit new module,quadkit gen,quadkit add,quadkit run. - Import linter. A cross-extension import that type-checks still fails CI.
- PyPI. All five packages are installable at 0.0.4. Pin
>=0.0.4,<0.1. - Machine surfaces.
/llms.txt,/agents.md,/SKILL.md, and per-package/llms/<package>.txt.
Project tree
Section titled “Project tree”One layout. Feature types live in domains/. App providers live in app-root di/. Modules have provider.py. There is no models/ directory and no second tree.
See Project Structure.
How to take 0.0.4
Section titled “How to take 0.0.4”uv add "quadkit-cli>=0.0.4,<0.1"quadkit new project my-app --template web-apicd my-appquadkit runOpen http://127.0.0.1:8000/docs for OpenAPI. Walkthrough: Your First App.
Coding agents should start at For coding agents, then /llms.txt and /agents.md.
- Installation —
uv add quadkit-cli - Your First App
- The Ecosystem — the five packages, grouped by purpose
- Blog — notes on building the framework