Count: 0

The Live Conduit for Python

HTML-over-the-wire without the JavaScript hangover.

01 · Python

Write Python, not a frontend

A .wire file is Python on top of HTML. State lives on the server in wire() signals.

02 · Conduit

One conduit, no API layer

No REST endpoints, no JSON, no client store to keep in sync. The server renders HTML over one live connection.

03 · Patch

Click. Patch. Done.

Events go up the wire and only the node that changed comes back. Your turn: press Add one.

04 · Transport

Any wire you've got

WebSocket, WebTransport or HTTP long polling. Same app, same code.

05 · Edge

Stateless, at the edge

No server process held open per visitor. State rides along with each event, signed, so the nearest edge node answers and every round trip stays short.

Why pywire

The frontend ergonomics of Svelte. The simplicity of Python.

Fine-grained reactivity

Wrap a value in wire() and any template that reads it updates automatically — no hooks, no virtual DOM, no client routing.

count = wire(0)

One file, many languages

.wire single-file components: Python on top of HTML. First-class JS and CSS in the same file. JS component islands coming soon.

counter.wire

Live by default

DOM diffs stream from the server over your transport of choice. No JSON APIs to invent, no client state to sync.

WebSocketWebTransportHTTP Long Polling