Plugin Catalog
Vyuh Server ships with a curated set of plugins covering the cross-cutting concerns every server needs. Each plugin owns one singleton role (or contributes into a chain), and each is independently optional — pull exactly what your service needs.
Database (relational, OLTP)
Backs vyuh.db. At most one per server.
| Plugin | Role | Notes |
|---|---|---|
PostgresDbPlugin | DbPlugin | Production Postgres via the official postgres driver. Transactions, DDL batching, LISTEN/NOTIFY |
Storage (files, blobs)
Backs vyuh.storage. At most one per server. Optional — omit if your service has no file storage needs.
| Plugin | Role | Notes |
|---|---|---|
SupabaseStoragePlugin | StoragePlugin | Bucket+path file ops — upload, download, delete, move, copy, list, signed URLs — backed by Supabase Storage |
Auth
Both auth plugins can coexist — strategies concatenate into one chain.
| Plugin | Strategy | Notes |
|---|---|---|
JwtAuthPlugin | Bearer-token JWT | Callback-based verifier — bring your own JWT library |
ApiKeyAuthPlugin | X-API-Key header or ?api_key= query | Lookup callback resolves keys against any backing store |
Telemetry
Exactly one telemetry plugin per server. Swap by environment.
| Plugin | Sink | Notes |
|---|---|---|
ConsoleTelemetryPlugin | IOSink (stdout) | JSON-line dev/test sink |
OtelTelemetryPlugin | OpenTelemetry SDK | Production tracing, configures from OTEL_* env vars |
Filters
| Plugin | Compiler | Notes |
|---|---|---|
PostgresQueryPlugin | PostgresQueryCompiler | Compiles cdx_query JSON AST into parameterized Postgres WHERE clauses |
Capability Plugins
These don't claim a singleton role — they claim a descriptor type and emit infrastructure routes from it.
| Plugin | Claims | Notes |
|---|---|---|
EntityCrudPlugin | EntityCrudDescriptor<T> | The standard list/get/create/update/delete/count/grouped/schema/saved-view/versioning/drafts/relationship route table |
RealtimePlugin | RealtimeChannelDescriptor | Mounts authenticated SSE at /live, diagnostics at /live/status, and fans source events to subscribed clients |
OpenApiPlugin | n/a | Auto-generates /openapi.json from the live router; mounts /docs (Scalar or Swagger UI) |
Writing Your Own
The framework's plugin model is the same one the shipped plugins use. See Writing a Plugin for a complete walkthrough of building a custom RateLimiterPlugin from scratch.