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

orama cluster and operator

Cluster-wide settings, namespace creators, and the wallets that operate a cluster. Every command and flag below comes from the orama command tree, so it matches the binary.

Global conventions are on the CLI overview.

orama cluster

Register this cluster on the chain, and remove a tenant namespace

text
orama cluster
text
Register the cluster's public name on the chain, retire it, and remove a tenant's
namespace as an operator. Who may create namespaces and the cluster's update
policy are maintainer commands: see 'orama maint cluster'.

Subcommands: namespace, register-onchain, retire-onchain

orama cluster namespace

Operator actions on a namespace

text
orama cluster namespace

Subcommands: remove

orama cluster namespace remove

Remove a namespace whose owner can no longer delete it

text
orama cluster namespace remove <namespace> [flags]
text
Remove a namespace and everything in it: its cluster on every node, its
deployments, its stored content (unless another namespace holds the same), its
keys and its grants.

The owner deletes a namespace with 'orama namespace delete'. This is for a
namespace whose owner cannot: the owner's wallet is lost, or it belonged to a
test run's throwaway wallet. Such a namespace keeps its port blocks and
processes on three nodes until an operator removes it.

It needs the operator grant and a wallet on the operator list. --reason is
required and is written to the audit trail with your wallet
(namespace.operator_remove). You are asked to type the namespace name unless
--force is given.
FlagDefaultDescription
--forcefalseDo not ask to type the namespace name
--reason—Why the namespace is removed; recorded in the audit trail [required]

orama cluster register-onchain

Register this cluster's public name on the Orama chain

text
orama cluster register-onchain [flags]
text
Register an optional public row for this cluster on the Orama chain.

The row is the operator, the cluster id, the base domain, the public
endpoints, and an optional metadata URI. It does not include node addresses,
tenants, or any cluster secret, and registering it does not join a node.

--node is that chain's REST API. The command reads the account there, builds
a SIGN_MODE_DIRECT transaction, asks the RootWallet agent to sign that one
transaction, and broadcasts it. Without --node it prints the sign document
and does not submit anything. --onion sends the same transaction to a validator
onion service through a Tor SOCKS proxy on this machine instead, on a fresh
circuit, and never falls back to the clearnet: when Tor or the service is
unreachable the command fails and the transaction is not sent.

The fee is an explicit amount of norama. There is no default.
FlagDefaultDescription
--account-number0Account number, when not read from --node
--base-domain—Public base domain [required]
--chain-id—Chain id [required]
--endpoint—Public endpoint (repeatable) [required]
--fee—Fee in norama [required]
--gas0Gas limit [required]
--id—Cluster id [required]
--metadata-uri—HTTPS metadata URI
--node—Chain REST API, for example http://127.0.0.1:31003; the command returns once the transaction is in a block, and fails if the block refuses it
--onion-network—Start a Tor client for this Orama Tor network file (tor-network.json) and submit through it; without --onion a validator onion from the file is picked at random ($ORAMA_ONION_NETWORK)
--onion-socks—Tor SOCKS5 address for --onion, a loopback host:port (default 127.0.0.1:9050, $ORAMA_ONION_SOCKS)
--onion-tortorThe tor binary --onion-network starts
--onion—Submit through this validator onion service (addr.onion[:port]) over Tor instead of --node; never falls back to the clearnet ($ORAMA_CHAIN_ONION)
--operator—Operator account (orama1...) [required]
--pubkey—Compressed secp256k1 pubkey hex; required when the account has not signed before
--sequence0Account sequence, when not read from --node

orama cluster retire-onchain

Retire this cluster's public row on the Orama chain

text
orama cluster retire-onchain [flags]
text
Retire the optional public cluster row. This does not change any node and
does not delete the cluster's namespaces. Without --node the command prints
the sign document and does not submit it.
FlagDefaultDescription
--account-number0Account number, when not read from --node
--chain-id—Chain id [required]
--fee—Fee in norama [required]
--gas0Gas limit [required]
--id—Cluster id [required]
--node—Chain REST API, for example http://127.0.0.1:31003; the command returns once the transaction is in a block, and fails if the block refuses it
--onion-network—Start a Tor client for this Orama Tor network file (tor-network.json) and submit through it; without --onion a validator onion from the file is picked at random ($ORAMA_ONION_NETWORK)
--onion-socks—Tor SOCKS5 address for --onion, a loopback host:port (default 127.0.0.1:9050, $ORAMA_ONION_SOCKS)
--onion-tortorThe tor binary --onion-network starts
--onion—Submit through this validator onion service (addr.onion[:port]) over Tor instead of --node; never falls back to the clearnet ($ORAMA_CHAIN_ONION)
--operator—Operator account (orama1...) [required]
--pubkey—Compressed secp256k1 pubkey hex of the signing account
--sequence0Account sequence, when not read from --node

orama maint cluster

Choose who may create namespaces on this cluster, and its update policy

text
orama maint cluster
text
Who may create a namespace on this cluster, and how many one wallet may own.

A new cluster allows only its operators. A cluster that already had a
namespace besides the seeded default, a node, or an operator when this was
upgraded stays open — any signed-in wallet — until an operator changes it.
The per-wallet cap stays 10 until an operator raises or lowers it.

Changing a setting or the creator list needs the operator grant and a wallet
on the operator list, and is written to the audit trail.

Subcommands: creators, settings

orama maint cluster creators

Wallets that may create namespaces when creation is allowlist

text
orama maint cluster creators
text
The allowlist consulted when namespace creation is allowlist.

An operator is not on it unless added. An empty list lets nobody create a
namespace, and removing the last wallet does not lock operators out.

Subcommands: add, list, remove

orama maint cluster creators add

Let a wallet create namespaces when creation is allowlist

text
orama maint cluster creators add <wallet>

orama maint cluster creators list

List wallets allowed to create namespaces

text
orama maint cluster creators list

orama maint cluster creators remove

Take a wallet off the namespace-creator list

text
orama maint cluster creators remove <wallet>

orama maint cluster settings

Show or change the cluster's settings

text
orama maint cluster settings

Subcommands: set, show

orama maint cluster settings set

Change namespace creation, the per-wallet cap or the update policy

text
orama maint cluster settings set <setting> <value>
text
namespace-creation is operators, allowlist or open.

  operators   only wallets on the operator list
  allowlist   only wallets added with orama maint cluster creators add
  open        any signed-in wallet

max-namespaces-per-wallet is an integer from 1 to 10000. The default is 10.

The cluster's automatic updates (docs/whitepaper/technical-reference/vol1/29-build-signing-and-release.md, "Auto-update"):

  auto-update      off, notify (the default) or auto. notify reports a newer
                   release in 'orama status'; auto installs it, one node at a
                   time, when the cluster is healthy and the hour is in the window
  update-channel   the release channel to follow: stable (the default) or nightly
  update-window    start-end hours UTC when auto may install, for example 1-5;
                   empty for any hour
  release-repo     the https URL of the release repository; empty (the default)
                   means no updates are looked up

orama maint cluster settings show

Show who may create namespaces, the per-wallet cap and the update policy

text
orama maint cluster settings show

orama maint operator

Operate the cluster

text
orama maint operator
text
Commands for the wallets on the cluster's operator list.

Every one of them needs the admin grant and a wallet on that list; a namespace's
own admin key is not enough.

Subcommands: add, list, remove, rotate-secrets, rotate-signing-key

orama maint operator add

Let another wallet operate this cluster

text
orama maint operator add <wallet>

orama maint operator list

List the wallets that operate this cluster

text
orama maint operator list

orama maint operator remove

Take a wallet off this cluster's operator list

text
orama maint operator remove <wallet>

orama maint operator rotate-secrets

Re-encrypt stored secrets, optionally under a new encryption root

text
orama maint operator rotate-secrets [flags]
text
Rewrite function secrets, push tokens, TURN secrets, deployment
environments and agent tokens onto the versioned envelope (enc:v1:<id>:).
A deployment's environment is written as enc:v2:<id>:, sealed to its namespace
and deployment id, so a copy of the ciphertext in another deployment's row does
not open. This is also what turns on bound writes: until it has run, gateways
keep writing deployment environments in the envelope an older gateway reads.

Without --rotate the IKM does not change: leftover plaintext and the legacy
enc: form are rewritten so a captured snapshot of the old format is no longer
the live one, and Decrypt can fail closed.

With --rotate a new encryption root is generated. Existing ciphertext is
re-encrypted under it. A disk that holds only the previous root cannot open
the new rows. IPFS-Cluster and the mesh bearer are not touched.

Do not run this until every gateway is on a binary that can read enc:v2:.
The walker is idempotent; if it is interrupted, run it again.
FlagDefaultDescription
--rotatefalseGenerate a new encryption root and re-encrypt under it

orama maint operator rotate-signing-key

Replace the key this gateway signs tokens with

text
orama maint operator rotate-signing-key
text
Generate a new signing key for the gateway, publish it, and start signing
with it.

Nobody is signed out. The outgoing key keeps verifying the tokens it already
signed until they expire on their own, so both keys are accepted for one
access-token lifetime and then the old one stops.

The key used to be derived from the cluster secret, which meant there was
nothing to rotate to: changing it meant changing the cluster secret, which
invalidates every token in the cluster at once.