Skip to content

Alpha 0.0.x — what is stable

QuadKit is alpha. That word is doing real work: public APIs may change before 1.0, and you should pin 0.0.x in production. It is not a synonym for “the design is a mood board.”

This is the split we actually mean.

Four rules are not going to be a surprise in 0.2:

  1. quadkit-contracts imports nothing. Protocols, types, exceptions. If two packages need the same type, it lives there.
  2. Extensions never import each other. They talk through contracts, the container, and providers.
  3. register() does not resolve. Bindings in, instances out in boot(). The type system is the gate.
  4. Domain failures are Result. The database dying is still an exception.

If a generated app violates any of those, it is not a QuadKit app yet. The import linter will say so in CI.

The project tree is the same kind of promise. There is one layout. quadkit new project lays it down. quadkit new module grows a bounded context in place. Templates add packages, not a second shape.

  • Names and extra kwargs on tooling and web surfaces: the CLI, generators, and quadkit-web extras.
  • The generated API HTML. Do not treat a 1 MB api.md as a stable contract — the Guide and the protocols are.
  • Generated HTTP surfaces. Treat method signatures and response shapes as movable.

Read the changelog for the human cut of 0.0.4 and the release history on PyPI for the file-level log. Pin 0.0.x (uv add "quadkit>=0.0.4,<0.1").

Terminal window
uv add quadkit-cli
quadkit new project my-app --template web-api
cd my-app
quadkit run

Then Your First App. Follow the quickstart if you are an agent. Do not scrape this blog for the rules — /agents.md is the short list CI actually enforces.