Agent index (llms.txt) — fetch this first, then the page it names.

orama namespace

Create namespaces, mint API keys, back up and restore. Every command and flag below comes from the orama command tree, so it matches the binary.

Global conventions are on the CLI overview.

orama namespace

Manage namespaces

text
orama namespace

Aliases: ns

text
List, delete, and repair namespaces on the Orama network.

Subcommands: backup-open, backup-seal, backup, create, delete, disable, enable, keys, list, repair, restore-key, restore, rqlite, session-policy, webrtc-status

orama namespace backup

Take a backup of the namespace, sealed to your X25519 public key

text
orama namespace backup [flags]
text
Ask the namespace gateway for a backup: its RQLite snapshot, the CIDs it
has pinned, and its secrets, decrypted by the cluster and sealed with the rest
to the public key you give. The cluster never holds the private key and cannot
open what it wrote. Keep the private key off the cluster.

--out writes the sealed file. --deal-dir also seals it into one slot-N file per
replica of a private storage deal (under your orama-storage-v1 key and repair
seed) and prints the 'orama storage create' and 'orama storage put' commands
that open the deal and upload the slots. Restore it from the deal with
'orama namespace restore --from-deal'. The backup is taken when you run the
command; the cluster does not take or store backups by itself.

It goes to the namespace's own gateway (the host 'orama auth login --namespace'
stored). With ORAMA_TOKEN, set ORAMA_API_URL to that host
(https://ns-<name>.<domain>): the environment's gateway does not serve backup.
FlagDefaultDescription
--deal-dir—also seal the backup into one slot-N file per replica of a private storage deal, in this directory
--deal-nonce—the deal's 32-byte nonce, hex; the same value goes to 'orama storage create --nonce' (needed with --deal-dir)
--deal-replicas3number of slots to write; the same value goes to 'orama storage create --replicas'
--key—your X25519 backup public key, 64 hex characters
--out—file to write the sealed backup to
--repair-seed-file—file holding your repair seed, hex, mode 0600 (needed with --deal-dir)
--storage-key-file—file holding your orama-storage-v1 key, hex, mode 0600 (needed with --deal-dir)

orama namespace backup-open

Decrypt a backup file with an X25519 private key

text
orama namespace backup-open [flags]
FlagDefaultDescription
--in—input file
--key—32-byte X25519 key, hex (public for seal, private for open)
--out—output file

orama namespace backup-seal

Encrypt a backup file to an X25519 public key

text
orama namespace backup-seal [flags]
text
Encrypt a file to the owner's backup public key.

The cluster holds only that public key. It cannot decrypt the file.
This seals any file. A namespace's own backup is 'orama namespace backup', and
putting one back is 'orama namespace restore'.
FlagDefaultDescription
--in—input file
--key—32-byte X25519 key, hex (public for seal, private for open)
--out—output file

orama namespace create

Create a namespace and start its cluster

text
orama namespace create <name>
text
Create a namespace. The wallet you are signed in as becomes its owner.

Creating a namespace used to happen by itself: signing in to a name that did
not exist created it. So a typo made a namespace, and one belonged to whoever
happened to sign in first.

  orama namespace create myapp
  orama auth login --namespace myapp

orama namespace delete

Delete the current namespace and all its resources

text
orama namespace delete [flags]
FlagDefaultDescription
--forcefalseSkip confirmation prompt

orama namespace disable

Disable a feature for a namespace

text
orama namespace disable <feature> [flags]
text
Disable a feature for a namespace. Supported features: webrtc, webrtc-stealth
FlagDefaultDescription
--namespace—Namespace name

orama namespace enable

Enable a feature for a namespace

text
orama namespace enable <feature> [flags]
text
Enable a feature for a namespace. Supported features: webrtc, webrtc-stealth
FlagDefaultDescription
--namespace—Namespace name

orama namespace keys

Manage scoped API keys (bugboard #148)

text
orama namespace keys
text
Create, list, and revoke scoped API keys. Profiles: invoke-only | app-runtime | admin.

Subcommands: create, list, revoke-legacy, revoke, rotate

orama namespace keys create

Mint a new scoped API key

text
orama namespace keys create [flags]
FlagDefaultDescription
--expires-in-days0How long the key lives, in days (default 90, max 365). A key that never expires is not on offer
--label—Human label for the key
--namespace—Namespace name
--scope—Profile (invoke-only|app-runtime|admin) or a comma-separated grant list (admin, cache, invoke, proxy, pubsub, push, storage, webrtc)

orama namespace keys list

List scoped API keys

text
orama namespace keys list [flags]

Aliases: ls

FlagDefaultDescription
--namespace—Namespace name

orama namespace keys revoke

Revoke a single API key by id

text
orama namespace keys revoke [flags]
FlagDefaultDescription
--id0Key id to revoke
--namespace—Namespace name

orama namespace keys revoke-legacy

Revoke ALL legacy (unscoped) keys — the cutover step

text
orama namespace keys revoke-legacy [flags]
FlagDefaultDescription
--forcefalseSkip confirmation prompt
--namespace—Namespace name

orama namespace keys rotate

Mint a successor to a key and keep the old one working for an overlap

text
orama namespace keys rotate [flags]
text
Mint a new key with the same grants and label, and shorten the original's life
to the overlap.

Rotating by minting a new key and revoking the old one in the same breath is an
outage: whatever is deployed with the old key stops the moment the new one
exists. The overlap is the window in which to deploy the successor — both keys
work, and the original then expires on its own.
FlagDefaultDescription
--expires-in-days0How long the successor lives, in days (default 90)
--id0Key id to rotate
--namespace—Namespace name
--overlap-days0How long the old key keeps working (default 7, max 30) — the window to deploy the new one

orama namespace list

List namespaces owned by the current wallet

text
orama namespace list

Aliases: ls

orama namespace repair

Repair an under-provisioned namespace cluster

text
orama namespace repair <namespace>
text
Repair an under-provisioned namespace cluster. Run it on a node. It talks to that node's gateway on the node's WireGuard address; localhost is where public traffic arrives, so a repair sent there is refused.

orama namespace restore

Restore a namespace backup onto the namespace gateway (DESTRUCTIVE)

text
orama namespace restore [flags]
text
Open a backup on this machine with your private key, seal its secrets to
the destination gateway's restore key (--dest-key, from 'orama namespace
restore-key'), and send it to the namespace gateway you are signed in to.

The gateway replaces the namespace's entire RQLite database with the backup,
writes the secrets under its own cluster's encryption root, and pins every CID
in the backup. The namespace must already exist on the destination, and
--namespace must name the namespace the backup was taken of. A wrong key, a
corrupt file or a different namespace stops before anything is sent.

The sealed backup is the file at --in, or the private storage deal that holds
it (--from-deal, with --rpc and your storage key and repair seed files): the
first slot a provider serves with the on-chain root is fetched and opened.
Give one of the two.

The gateway also refuses, before writing anything, a restore that would put
the namespace over its storage quota on the destination, and it keeps the
destination's quota rather than the one in the backup. It runs one backup or
restore at a time and answers 429 while one is running.

The live keys, grants and sessions (in the cluster's registry) are not
restored: a restore neither brings back a key that was revoked nor removes one
minted since. The backup's database still carries stale copies of those rows,
which nothing reads. Before loading, the gateway checks the database image and
refuses (400, nothing written) one that is damaged or carries triggers, views
over platform tables or stored-object records for content only other namespaces
hold; it removes plaintext API keys and other namespaces' records an older backup
may carry, and checks again, after the load.

With ORAMA_TOKEN, set ORAMA_API_URL to the namespace's gateway
(https://ns-<name>.<domain>): the environment's gateway does not serve restore.
FlagDefaultDescription
--dest-key—destination gateway's restore public key, from 'orama namespace restore-key'
--from-deal0read the sealed backup from this private storage deal instead of --in
--in—sealed backup file
--key-file—file holding your X25519 backup private key, 64 hex characters
--namespace—namespace the backup was taken of; must match the backup
--repair-seed-file—file holding your repair seed, hex, mode 0600 (needed with --from-deal)
--rpc—oramad CometBFT RPC, for example http://127.0.0.1:31001 (needed with --from-deal)
--storage-key-file—file holding your orama-storage-v1 key, hex, mode 0600 (needed with --from-deal)

orama namespace restore-key

Print the namespace gateway's restore public key

text
orama namespace restore-key
text
Print the X25519 public key a restore's secrets are sealed to. It is
derived from the destination cluster's encryption root and the namespace, so
it is different for every namespace and changes when that root is rotated.
Pass it to 'orama namespace restore --dest-key'.

orama namespace rqlite

Manage the namespace's internal RQLite database

text
orama namespace rqlite
text
Export and import the namespace's internal RQLite database: your own tables and the
namespace's functions, function secrets, stored-object records, quotas and push and
WebRTC settings. Keys, grants and deployments are in the cluster registry, not in it.

Both go to the namespace's own gateway (the host 'orama auth login --namespace' stored).
With ORAMA_TOKEN, set ORAMA_API_URL to that host (https://ns-<name>.<domain>): the
environment's gateway does not serve them.

Subcommands: export, import

orama namespace rqlite export

Export the namespace's RQLite database to a local SQLite file

text
orama namespace rqlite export [flags]
text
Downloads a consistent SQLite snapshot of the namespace's internal RQLite database.
FlagDefaultDescription
-o, --output—Output file path (default: rqlite-export.db)

orama namespace rqlite import

Import a SQLite dump into the namespace's RQLite (DESTRUCTIVE)

text
orama namespace rqlite import [flags]
text
Replaces the namespace's entire RQLite database with the contents of the provided SQLite file.

WARNING: This is a destructive operation. All existing data in the namespace's RQLite
(your tables, functions, function secrets, stored-object records, quotas and push and
WebRTC settings) will be replaced with the imported file. The file must be a SQLite
database, as 'export' writes; at most 256 MiB. Live keys and grants (in the cluster
registry) are not replaced, and stale copies in the file are ignored. The namespace's
storage quota stays as it was. The gateway checks the file before loading it and
refuses (400, nothing written) one that is damaged or carries triggers, views over
platform tables or stored-object records for content only other namespaces hold;
it removes plaintext API keys and other namespaces' records an older file may carry,
and checks again, after the load. One backup, restore, export or
import runs at a time on a gateway.
FlagDefaultDescription
-i, --input—Input SQLite file path

orama namespace session-policy

Show or set who may sign in to a namespace and what its sessions bind

text
orama namespace session-policy [flags]
text
With no flags, show the namespace's session policy. With flags, set them; a flag
left out keeps its value.

  --sign-in members   only wallets holding a grant sign in (the default)
  --sign-in open      a wallet holding none may sign in too, as an end user of
                      the application. It gets a session and no API key, is
                      never granted anything, and reaches only what a grantless
                      wallet reaches. Closing it again ends those sessions at
                      their next refresh. A namespace nobody owns stays closed.

  --device-policy     optional | required | approval: what an end user's
                      sign-in must bind. Requiring devices revokes the sign-in
                      keys end users already hold.

Changing either needs write access to the namespace.

  orama namespace session-policy --namespace myapp --sign-in open
FlagDefaultDescription
--device-policy—What an end user's sign-in must bind: optional | required | approval
--namespace—Namespace name
--sign-in—Who may sign in: members | open

orama namespace webrtc-status

Show WebRTC service status for a namespace

text
orama namespace webrtc-status [flags]
FlagDefaultDescription
--namespace—Namespace name