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.

Now: being built Next: planned Later: toward 1.0 and beyond

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 $for get their own instance, props work 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() or producer() reaches every connected client, across workers. In-process by default, Redis when REDIS_URL is 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.

    In a pull request#282
  • 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-secure for CSRF, security headers and rate limits. pywire.testing for testing pages. pywire-observability for request IDs, JSON logs, OpenTelemetry and Sentry.

    In pull requests#261#262#263
  • 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 check knows the classic mistakes

    Static 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-db

    Queries 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.md in 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 saas template grows into a reference app with auth, teams, settings, billing hooks and email.

  • Deploy from CI

    pywire deploy reads config from the environment, prints --json and 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 .wire files.

  • 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 build either 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 .wire code, 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.