Wreath 0.5.0 · Python 3.14 · ASGI
Build the systems that become somebody's operating surface.
Realtime rooms, durable work, PostgreSQL, policy and a native server belong to one application—not a week of integration before the interesting work begins.
Build the app they said was missing
Start with users and hard security boundaries, then inspect how much of the serious request path stays native.
02Balance a live energy depot
Coordinate microgrids, vehicles and chargers without overcommitting the power that remains.
03Turn computers into an agent fleet
Assign long-running work across every device a person owns and survive a device disappearing.
04Let customers wire the world together
Turn signed events, schedules and user hooks into durable, inspectable automation runs.
05Give an agent tools—safely
Put a governed MCP boundary around real operations instead of building a second, weaker backend.
06Land the enterprise
Carry a tenant from SAML and SCIM provisioning through isolation, support and deprovisioning.
07Ask better questions of time
Analyse irregular series honestly across missing samples, late arrivals and daylight-saving boundaries.
08Survive the noon drop
Keep scarce inventory coherent through flash traffic, retries and webhook redelivery.
09Assume the network will fail
Resume field sync and large uploads without exposing data outside the operator's assignment.
One system. One obvious home.#
A production service needs a router. It also needs validation, identity, data access, background work, observability and somewhere to run. Wreath owns those parts and keeps the framework usable on any conforming ASGI server.
from wreath import Request, Wreath
app = Wreath()
@app.get("/hello/{name}")
async def hello(request: Request, name: str) -> dict:
return {"hello": name}uv add wreath
uv run wreath dev app:appThe first route is deliberately ordinary. The interesting part begins when the requirements stop being ordinary: only one worker may own a device; a job must survive a process; an enterprise identity provider removes a person; a model may read freely but must involve a human before it deletes.
This site documents Wreath 0.5.0. Check the version, platform and upgrade contract before choosing an extra or moving an existing application between releases.
The contract is the product#
Each story starts with a visible system, introduces contention or failure, and then names the invariant that must continue to hold. That is the recurring Wreath idea: express the boundary early, refuse half-supported shapes, and leave enough evidence to explain the outcome afterward.