chirp-ui

HTML UI for Python apps

Build forms, navigation, docs, and app shells from Python templates that render plain HTML.

  • Server-rendered HTML
  • Optional htmx and Alpine

Example interface

Common app screens, ready to render.

Use ready-made UI for common screens, then customize the rendered HTML and CSS for your app.

Forms Navigation Content
Account settings

Labels, inputs, validation messages, and actions render as normal HTML.

Open the docs API reference
100+ components and patterns

Forms, cards, nav, overlays, and shell UI.

0 utility classes

Compose with components, not class strings.

HTML by default

Add htmx or Alpine only where interaction needs it.

What you can build

Reusable UI for pages and product screens.

Chirp UI gives Python projects a practical starting point for the interfaces teams build repeatedly.

How it fits

Render HTML first. Add behavior where it helps.

Server-rendered pages

Use components where you already render HTML

Chirp UI fits static sites, docs, and Python web apps that return HTML first. Add interaction only where the screen needs it.

Page kit

  • Hero and section headers
  • Feature and resource cards
  • Metrics and calls to action
App interfaces

Keep common product screens consistent

Forms, navigation, overlays, and app-shell layouts use the same component library, so docs and product screens do not drift apart.

App kit

  • Forms and validation
  • Sidebar and page map
  • Command palette

Why it works

The UI stays inspectable from Python.

one library

Python teams

Pages and application screens can share the same component library.

Use Chirp UI for cards, forms, navigation, surfaces, grids, and actions instead of rebuilding each screen by hand.

inspectable

Maintainers

Components are easier to audit because the Python API, templates, CSS, and docs are kept in sync.

Generated references and tests help keep the shipped UI surface documented instead of hidden in one-off markup.

Ecosystem

Part of a Python-first HTML stack.

Start

Start with a working component, then adapt it.

Install Chirp UI, render a component from Python, and layer in htmx or Alpine only when a screen needs client-side behavior.