The Live Conduit for Python

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

counter.wire
---
count = wire(0)
---
<p>Count: {count}</p>
<button @click={count.value += 1}>
    Add One
</button>
---
count = wire(0)
---
<p>Count: {count}</p>
<button @click={count.value += 1}>
    Add One
</button>

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