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.