zmodu

Modular applications and a bounded runtime for Zig

Routes and dependencies resolve at compile time. Workers, mailboxes and timers stay bounded at run time.

Compile-time routing

One route table per module. Auth, permissions and OpenAPI metadata sit next to the handler, and duplicate paths fail before the server starts.

Module boundaries

Dependencies are declared and checked at startup. Missing, self and cyclic edges stop the application.

Bounded runtime

A worker owns its state, a mailbox owns the handoff, and a full queue returns error.Full instead of growing.

Deterministic replay

A controlled clock, random source and event sequence make the same input produce the same order and output.

Built-in observability

Structured logs, Prometheus metrics and OTLP tracing are part of the framework, not an add-on.

Data and AI

SQLx, Redis, Kafka and the zent ORM stay at the application layer. Agents, RAG and approvals compose as modules.

Start

  • Quick start — install and run the first route.
  • Modules — write a module and compose an application.
  • Runtime — workers, mailboxes, scheduler and replay.
  • API — the public surface.
  • Upgrading — breaking changes and migrations.