Roadmap
Where the wire runs next
pywire is heading to 1.0: a stable API you can build a business on, and everything a production SaaS needs without a heavy JavaScript frontend. Here's the route, in the order it gets built. Until 1.0, expect breaking changes between minor versions.
What guides it
- Built for agents
- Docs, tests and tooling made for agentic coding.
- Scales by design
- Sessions shared across workers, restored on reconnect, minimal diffs.
- Built for SaaS
- Real products without a heavy JavaScript frontend.
- Small core, official add-ons
- Batteries you opt into, maintained alongside the core.
- Server and edge are equals
- Long-running servers and serverless, same code.
- Real-time is core
- Shared state, presence and rooms ship in 1.0.
- WebTransport ready
- Built in, switched on as the server stack catches up.
- Open source
- Apache 2.0, backed by sponsors.
Now
Make what already exists trustworthy. Your first real app shouldn't hit a framework bug.
First up: components in loops, shared state for every user, and edge mode. Cards are in priority order.
Components that behave
Components inside
$forget their own instance,propswork in functions defined in a component's frontmatter, and child-to-parent callbacks get documented. Plus two fixes from the benchmark run.Shared state reaches everyone
A change to a shared
wire()orproducer()reaches every connected client, across workers. In-process by default, Redis whenREDIS_URLis set. Until it lands, the docs say exactly what is shared.Edge stateless mode
Run on Cloudflare Workers, AWS Lambda, Azure Functions and Google Cloud with signed state snapshots. It also brings keyed
{$for}regions to every tier, so a one-row change on a 5,000-row list sends one row over WebSocket (304 B instead of 913 KB), plus optimistic UI and@poll. What differs between tiers goes in a published capability table.Faster by default
Lighter session saves per event, compressed stateless snapshots, gzip and Brotli responses, and published benchmarks for the default WebSocket mode.
Production add-ons
pywire-securefor CSRF, security headers and rate limits.pywire.testingfor testing pages.pywire-observabilityfor request IDs, JSON logs, OpenTelemetry and Sentry.A tighter dev loop
Reload on any change under
src/, new pages without a restart, and the full traceback when a page fails on first render.FastAPI, first class
Mounting pywire in FastAPI already works (guide). Next: dependency injection and auth shared with your FastAPI routes, and the rough edges smoothed out.
pywire checkknows the classic mistakesStatic checks for the template and handler pitfalls people actually hit, reported in the terminal and in your editor.
Next
Everything a SaaS needs, from live data to deploys from CI.
Real-time between users
Rooms and channels for chat, presence and collaborative views, plus server-sent events for streaming on the stateless tier.
Live data with
pywire-dbQueries that re-render every page showing them when the data changes, in every worker. SQLAlchemy and SQLModel first, the Django ORM later, and
invalidate()for raw SQL.Forms, done properly
Typed form refs, declarative validation that reconciles HTML5 and Pydantic, sensible debounce defaults, and file uploads documented as a feature.
Docs and examples for coding agents
An
AGENTS.mdin every new app, an agent skill for building with pywire, guides on structuring complex apps, and reference apps that show the patterns.A real SaaS starter
The
saastemplate grows into a reference app with auth, teams, settings, billing hooks and email.Deploy from CI
pywire deployreads config from the environment, prints--jsonand returns meaningful exit codes.Testing, fuller
A test client over a real WebSocket,
client.login(), events fired from CSS selectors, HTML snapshots, and fixtures loaded from.wirefiles.Observability, deeper
An OpenTelemetry span per event, a metrics endpoint, and traces that survive reconnects.
Editors that know your components
Prop completion, go-to-definition on component tags, and quick fixes from
pywire check --fix.WebTransport in production
pywire's WebTransport transport is built, with automatic fallback to WebSocket. It turns on by default as Hypercorn and Starlette finish HTTP/3 support and hosts forward WebTransport to your app, with middleware applied the same as over WebSocket.
Flask and Django
Guides for mounting pywire inside an existing Flask or Django app.
Community
A contributor guide, good first issues, a Discord, and RFCs in GitHub Discussions.
Later
The run-up to 1.0, and a few ideas past it.
A stability promise
Semantic versioning, a deprecation window and a documented public API. Until then, pywire takes clean breaks over compatibility shims.
- After 1.0
Polyglot islands
Drop a React, Svelte or Vue component, or a web component, into a page.
pywire buildeither runs the whole build or plugs into the one you have. - After 1.0
An agent UI add-on
An official add-on for building AI features into your app: a chat panel whose agent can read the page, fill forms and click through flows with the user's permission, and rearrange the layout when asked.
A plugin API
Custom directives and hooks, turning today's
connect_*pattern into a supported extension point.Faster builds and pages
Pages with nothing interactive prerendered at build time, image optimization, and constant folding in the compiler.
A profiler
Time and memory for every lifecycle phase of a page, in the dev tools.
More editors
JetBrains, Neovim and Zed setups on top of the language server and tree-sitter grammar.
- After 1.0
Desktop and mobile apps
Native desktop and mobile apps from the same
.wirecode, growing out of the pywire-shell prototype.
Version 1.0
What 1.0 means
Two promises at once: an API that won't break under you, and a framework you can run a real product on.
- No open correctness bugs in components, reactivity or forms
- Every core feature works on server and edge, with a published capability table
- Auth, security, testing and observability add-ons at 1.0 alongside the core
- Real-time between users: shared state, presence and rooms
- Live data queries and a settled FastAPI integration
- A published stability policy, with docs and tutorial that match the API exactly
- A reference SaaS app built on pywire
- A handful of regular contributors beyond the maintainer
How it gets built
One maintainer, a lot of agents
pywire has one maintainer, and AI coding agents write most of the code. Every change is reviewed by the maintainer and has to pass CI, including unit, client and browser end-to-end tests, before it merges. Agents are taking over routine fixes and speeding up feature work.
Get involved
Shape what comes next
The order on this page moves with what people build. Say what you need in GitHub Discussions, or support the maintainer if pywire saves you time.