Skip to content

Installation

Patera requires Python 3.13 or newer. We recommend uv.

uv init --python 3.13 my-app
cd my-app
uv add "patera[dev]"     # core + uvicorn/watchfiles for the development server
pip install "patera[dev]"

Extras

Optional features are installed with extras:

Extra Installs Purpose
prod granian production server (patera prod)
dev uvicorn, watchfiles, websockets development server with auto-reload (patera dev)
testing pytest, pytest-asyncio, httpx, ... testing tools (patera test)
database patera-database async SQLAlchemy integration
migrate patera-migrate SQL migrations (pyway)
auth patera-auth authentication/authorization middleware
caching patera-caching response caching (in-memory)
caching-redis / caching-sqlite + redis / aiosqlite Redis or SQLite cache backends
taskmanager patera-taskmanager scheduled and background tasks (APScheduler)
email patera-email SMTP e-mail client
apiinterface patera-apiinterface declarative clients for external HTTP APIs
joltui patera-joltui JoltUI server components with typed group registration
admin patera-admin admin dashboard
aiinterface patera-aiinterface LLM chat interface (experimental)
desktop patera-desktop desktop windows and packaging (experimental)
desktop-ui patera-desktop-ui Python browser UI for desktop apps (experimental)
all the server extensions admin, API interface, authentication, caching, SQL, migrations, e-mail, task manager and JoltUI
uv add "patera[database,auth,caching]"

What patera[all] contains

patera[all] is the server-extension bundle. It does not install the experimental AI or desktop packages, optional cache backends, or every optional provider. Install these explicitly with patera[aiinterface], patera[desktop] or patera[desktop-ui] and the relevant provider extras. Keeping the bundle's scope avoids surprising existing server installations with desktop or machine-learning dependencies.

The production server is an extra too, prod, because a deployment needs it but a desktop program does not (it embeds Uvicorn). Without it, the core's dependencies are pure Python apart from pydantic-core.

Packages and imports

Every extension is a separate distribution that installs into the patera namespace. Distribution names use kebab case (patera-taskmanager); imports live under patera (patera.taskmanager). The full map is in the public API reference.

Next step

Continue with the quick start.