The HTML-first framework for Bun.
You write TypeScript and ship working HTML. Enhancement is opt-in, and the workspace stays legible to people and agentic tools.
$ webstir init full my-app$ webstir watch --workspace my-app$ webstir test --workspace my-app$ webstir publish --workspace my-appWhy Webstir
Webstir is narrow on purpose: multi-page apps, backoffice tools, and dashboards where the server renders the page and the browser enhances it.
HTML first
Server-rendered documents are the default. Forms, links, redirects, and auth-gated flows work with no client script, so the baseline app is the real app.
How it worksEnhancement is opt-in
Client navigation and fragment updates are features you enable once the HTML path is right. They layer on top of working pages instead of replacing them.
Client navigationOne workspace shape
Every app shares the same layout, manifests, and commands. Inspect reports drift and repair restores it, so people and agentic tools can read, change, and verify an app the same way.
Contracts and invariants
Documentation
Tutorials to start, guides for daily work, reference for the details, and explanations for the reasoning behind them.