This version is in beta. Some features may change before release.

Plugins

Browse the documentation in this section.

The Plugin trait

umbral's only extension mechanism. Built-ins and third-party plugins are structurally identical.

What a plugin is

A `Plugin` is a self-contained, swappable unit that bundles models, routes, and logic into one builder call.

Authentication

umbral-auth plugin - AuthUser model, argon2 password hashing, session login helpers, and the custom user model swap.

Sessions plugin

Cookie-backed session store powered by a DB-backed session table.

Permissions (RBAC)

Groups, permissions, and content types for umbral. The has_perm query layer.

Security plugin

Automatic CSRF protection and a hardening-headers bundle. Mount it and you're done.

Admin plugin

Auto-generated CRUD UI for your models, served at /admin/.

REST plugin

Auto-generated JSON CRUD from your models - plus authentication, permissions, filtering, pagination.

OpenAPI plugin

Swagger UI + machine-readable JSON spec for your REST endpoints, auto-generated from the model registry.

Tasks plugin

Database-backed background task queue for running work outside the request cycle.

Email plugin

SMTP + template-driven transactional email with file attachments.

Caching

In-memory, SQLite, and Redis cache backends plus view-level cache_page middleware for umbral.

Storage (Static + Media)

The unified StoragePlugin - serve developer-shipped static assets (the STATIC_URL pipeline, collectstatic, manifest-hash cache-busting, Cache-Control) AND user uploads (the media_file model, streaming saves, file-lifecycle cleanup) through one plugin and one Storage trait, with an optional shared S3 backend.

Signals

Per-model lifecycle hooks (pre_save, post_save, pre_delete, post_delete) that fire automatically from the ORM, plus a generic name-keyed pub/sub escape hatch for app-defined events.

RLS plugin

Postgres Row-Level Security policies declared in the App builder and applied idempotently at boot.

Playground plugin

Interactive API playground for umbral-rest endpoints - Postman-style request builder, schema introspection, per-endpoint stats.

Live reload

Edit a template, stylesheet, or asset and the browser refreshes itself over SSE, with CSS hot-swapped in place. The Vite dev-loop feel for a server-rendered Rust app.

Analytics (PostHog)

Fire-and-forget product-analytics event capture for umbral apps via a PostHog backend. Captures never block a request.

Request logs

Request logging for umbral. A non-blocking capture layer records each HTTP request to a RequestLog model, browsable in the admin.

Realtime

Push live data to one user or a room over SSE/WebSocket - model subscriptions, presence, room gating, and a Redis backplane. Full guides live in the Realtime section.

Multitenancy (umbral-tenants)

Schema-per-tenant and database-per-tenant multitenancy for Postgres. Split your app into tenant apps (isolated per tenant) and shared apps (one copy in public), worked through a Starknet explorer where blockchain networks are the tenants.

OAuth / social login

Social login and OAuth account connection for umbral, layered on umbral-auth. Sign in with Google or GitHub, with provider tokens encrypted at rest.

Health checks

Liveness and readiness probes for umbral. Mounts GET /healthz (liveness) and GET /ready (readiness), with pluggable readiness checks for your dependencies.