Quadkit is alpha (0.0.x). The latest published release is 0.0.50, with eighteen packages on PyPI. Pin what you import; public APIs may still move before 1.0.
uv add "quadkit>=0.0.50,<0.1"uv add "quadkit-cli>=0.0.50,<0.1"uv add "quadkit-web>=0.0.50,<0.1"[0.0.50] — 2026-11-09
Section titled “[0.0.50] — 2026-11-09”The open-core expansion. Five packages join the public line — quadkit-ai-llm, quadkit-ai-agents, quadkit-ai-mcp, quadkit-workflow, and quadkit-notification — bringing the catalog to eighteen distributions, all released together at 0.0.50.
- AI & Agents.
quadkit-ai-llm(LLM client layer),quadkit-ai-agents(tools, strategies, execution), andquadkit-ai-mcp(MCP servers and clients). - Workflows & notifications.
quadkit-workflow(durable workflows and sagas) andquadkit-notification(multi-channel notifications).
How to take 0.0.50
Section titled “How to take 0.0.50”uv add "quadkit-cli>=0.0.50,<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. Theapistarter creates it; add installed packages without changing its shape.
Expect names, extra kwargs, and the reserved-but-unpublished packages to keep moving.
[0.0.46] — 2026-10-23
Section titled “[0.0.46] — 2026-10-23”Canonical documentation and packaging release. Public APIs are unchanged; the work is in the links users follow from PyPI, the CLI, and error messages.
Changed
Section titled “Changed”- PyPI metadata. All thirteen distributions now publish
HomepageandDocumentationlinks tohttps://oridecon.dev/quadkit/; the retired GitHub Pages site and placeholder domain are gone from shipped metadata. - Runtime links.
QuadkitError.docs_url, DI error hints, and CLI pointers resolve through the canonical docs host instead of a dead or placeholder URL. - Public tree. Package READMEs, security/support/contributing links, and the public workflows point at live destinations; the exported tree is checked for retired hosts before release.
Validation
Section titled “Validation”- 26 artifacts built from the exported tree (13 wheels, 13 sdists).
- Clean Python 3.12 install: all 13 packages import and
quadkit versionpasses. - Public test suite: 16,521 passed, 230 skipped.
- PyPI metadata verified for canonical URLs and no retired domains.
How to take 0.0.46
Section titled “How to take 0.0.46”uv add "quadkit-cli>=0.0.46,<0.1"[0.0.42] — 2026-09-26
Section titled “[0.0.42] — 2026-09-26”The 0.0.42 cut. Thirteen distributions on PyPI.
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 | Shared protocols, value objects, and exceptions (typing-extensions dependency) |
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 boundaries. Package-family-specific checks are defined in
.importlinter; run them withmake lint-boundaries. - 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 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 eighteen packages, grouped by purpose
- Notes — notes on building the framework