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)HTML-over-the-wire without the JavaScript hangover.
---
count = wire(0)
---
<p>Count: {count}</p>
<button @click={count += 1}>
Add One
</button>---
count = wire(0)
---
<p>Count: {count}</p>
<button @click={count += 1}>
Add One
</button>Why pywire
Wrap a value in wire() and any template that reads it updates automatically — no hooks, no virtual DOM, no client routing.
count = wire(0).wire single-file components: Python on top of HTML. First-class JS and CSS in the same file. JS component islands coming soon.
counter.wireDOM diffs stream from the server over your transport of choice. No JSON APIs to invent, no client state to sync.
WebSocketWebTransportHTTP Long Polling