Build software you understand and enjoy.
Stario is a small Python web framework. Yard self-hosts any app on one VM, behind HTTPS.
Routes are values, handlers write the response, HTML is Python, and a page can stay live over one open connection. There is no template language, no client build step, and no separate server to install.
The whole app
import asyncio from stario import App, Context, Route, Span, Writer, h, serve HOME = Route("GET /") async def home(c: Context, w: Writer) -> None: page = h.HtmlDocument( h.Head(h.Title("Hello")), h.Body(h.H1("Hello, Stario")), ) w.html(page) async def bootstrap(app: App, span: Span): app.add(HOME, home) yield if __name__ == "__main__": asyncio.run(serve(bootstrap))Save it as main.py and run uv run python main.py.
Two apps on this site run on Stario: Tiles, one board that every visitor paints at once, and Game of Life, one shared world that ticks five times a second. Read how they work: Tiles source and Game of Life source.
Where to go
- Read the docs
The framework, from the first page to the reference.
- Self-host on Yard
Yard runs any app in a container on your own VM, behind HTTPS.
- Blog
Release notes and design notes.
Stario is made by Adam Bobowski. The story is on About. The rest of the work is at bobowski.dev.
