[AVAILABLE] for
memory, supabase and postgres. Declared but
unimplemented for sqlite, see below.Providers, precisely
postgres and supabase select the same implementation. Despite its name,
SupabaseStorageProvider writes through a direct Postgres connection (DATABASE_URL), so a
self hosted Postgres works under either name. Both refuse to start without DATABASE_URL.
sqlite throws at startup, by design (fails closed rather than silently falling back).
What’s stored
Business Transactions and Execution Trust Records (the append-only ledger behind every Execution Trust Record), Execution Intents, Refusal Records, pending policy changes and their signed approval records, approval issuers, external connectors, the execution and caller audit events, and the single-use nonces for authorizations, approvals and step up envelopes. Each has aMemory* implementation for
tests and a Supabase* (Postgres) implementation; see packages/storage/src/index.ts.
Configuration
PARMANA_STORAGE is the only variable read. An older DATABASE_PROVIDER variable existed
briefly as a second, disconnected path to the same setting and is now retired: if it’s
present in the environment, config loading fails at startup naming PARMANA_STORAGE as the
replacement, rather than silently ignoring it. Tests: packages/storage/tests/.
See @parmana/storage for the package’s full export list if you’re
consuming it directly rather than through the default server.