MikiUI
A Python-first UI framework that renders UIs as standalone desktops or websites.
Quick Start
pip install -e .
mikiui new myapp
cd myapp
mikiui dev # development server
# or
mikiui desktop # native desktop window
Styling
MikiUI supports two styling frameworks. Choose one during project creation:
mikiui new myapp
# Follow the prompts to choose Tailwind or plain CSS
| Framework | Description | Node.js Required |
|---|---|---|
tailwind |
Tailwind CSS + optional DaisyUI | Yes |
plain |
Plain CSS, no framework | No |
Tailwind CSS
cd myapp
npm install # Install Node.js dependencies
mikiui dev # Start dev server
mikiui tailwind dev # Watch & rebuild CSS (second terminal)
Production build:
mikiui build --target web --theme tailwind
Add DaisyUI:
mikiui install tailwind daisyui
Plain CSS
cd myapp
mikiui dev # No extra setup needed
What's Available
- Components — all HTML elements as Python classes (Button, Input, Form, Table, Dialog, Tabs, etc.)
- Widgets — high-level composite UI (DataGrid, MediaPlayer, DockablePanel, IDE Editor, ThemeSwitcher, etc.)
- Themes — 4 built-in themes (light, dark, solarized-dark, dracula) with custom theme support
- Styling — Tailwind CSS or plain CSS
- Plugins — extend with custom themes, components, and widgets
- Desktop — native pywebview window or system browser fallback
- Full-stack — FastAPI backend with HTMX + Alpine.js runtime
Commands
| Command | Description |
|---|---|
mikiui new <name> |
Scaffold a new project (prompts for framework) |
mikiui dev |
Development server (auto-discovers app.py) |
mikiui desktop |
Native desktop window (pywebview) |
mikiui desktop --reload |
Desktop with auto-reload |
mikiui desktop --browser |
Force system browser |
mikiui build --target web |
Static web build |
mikiui build --target desktop |
Desktop package build |
mikiui tailwind dev |
Watch and rebuild Tailwind CSS |
mikiui tailwind build |
Production Tailwind build |
mikiui install tailwind |
Install Tailwind + npm deps |
Running Your App
# app.py
from mikiui import MikiApp, Div, H1, Button
app = MikiApp(title="My App")
app.set_theme("dark")
@app.route("/", title="Home")
def home():
return Div(H1("Welcome to MikiUI!"), Button("Click me"))
if __name__ == "__main__":
app.run() # python app.py
# or: app.run(desktop=True) for native window
Documentation
- Getting Started
- Styling Guide
- Theme Reference
- Theming Guide
- App Discovery & Running
- Plugin System
- Full Spec
Production readiness
Use the following commands to validate the package and production build flow before shipping a release:
pip install -e .
python -m build
mikiui build --target web
mikiui build --target desktop
pytest
The framework is intended to support:
- web deployment via static HTML/HTMX + FastAPI
- desktop deployment via pywebview or browser fallback
- a single Python codebase for component and widget reuse
- Tailwind or plain CSS styling without changing app logic
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mikiui-0.0.1.tar.gz.
File metadata
- Download URL: mikiui-0.0.1.tar.gz
- Upload date:
- Size: 391.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c33ef873d9992184699ebbb79b0c6fe43b53c0c88420e4937041a442ef876bf3
|
|
| MD5 |
9b364877ddecf0a976205d21ec1b6b34
|
|
| BLAKE2b-256 |
4150a22e6d8125998e59d981266bc3f4a4575c9a3845c1cf52cb6f88ba66090c
|
Provenance
The following attestation bundles were made for mikiui-0.0.1.tar.gz:
Publisher:
release.yml on alainmiki/mikiUI
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mikiui-0.0.1.tar.gz -
Subject digest:
c33ef873d9992184699ebbb79b0c6fe43b53c0c88420e4937041a442ef876bf3 - Sigstore transparency entry: 2634551440
- Sigstore integration time:
-
Permalink:
alainmiki/mikiUI@8c6b9bfa408e255be1f9147cc712cd66d2f35413 -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/alainmiki
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8c6b9bfa408e255be1f9147cc712cd66d2f35413 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mikiui-0.0.1-py3-none-any.whl.
File metadata
- Download URL: mikiui-0.0.1-py3-none-any.whl
- Upload date:
- Size: 440.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c71bf4e3d02be8d653486b98f46bf8e5b5a854676d72ae6be22fb8fea8a4fbe
|
|
| MD5 |
0d1e9de97fc9b3fe4f30c0a80b9c59ae
|
|
| BLAKE2b-256 |
3e37c38b51565bc04f231d1f8c7d31212a550eaccc6ef0edeb3c29b48531bc83
|
Provenance
The following attestation bundles were made for mikiui-0.0.1-py3-none-any.whl:
Publisher:
release.yml on alainmiki/mikiUI
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mikiui-0.0.1-py3-none-any.whl -
Subject digest:
3c71bf4e3d02be8d653486b98f46bf8e5b5a854676d72ae6be22fb8fea8a4fbe - Sigstore transparency entry: 2634551471
- Sigstore integration time:
-
Permalink:
alainmiki/mikiUI@8c6b9bfa408e255be1f9147cc712cd66d2f35413 -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/alainmiki
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8c6b9bfa408e255be1f9147cc712cd66d2f35413 -
Trigger Event:
push
-
Statement type: