Skip to content
Oris Docs

Treasury

LIVE

Treasury is the operator-facing view across every chain, every agent, every wallet. Monitor balances, configure auto-refill, set hierarchical budgets. Non-custodial: Oris reads chain state and routes transfers; your provider signs.

Real-time balances

Eight EVM chains plus Solana and Tron, read through a single endpoint.

balances = client.treasury.get_balances(treasury_id="treasury-main")
for b in balances:
print(b.chain, b.asset, b.amount, b.usd_value)
print(f"Total: {sum(b.usd_value for b in balances)} USD")

Auto-refill

Configure minimum and target balances per wallet. When the balance drops below the minimum, Oris constructs a transfer from the funding source. The provider signs. The transaction broadcasts.

client.treasury.set_refill_policy(
wallet_id=agent.wallet_id,
min_balance=100.00,
target_balance=500.00,
funding_source="treasury-main",
)
# Refills are async + recorded in the activity log
history = client.treasury.refill_history(wallet_id=agent.wallet_id, limit=20)

Hierarchical budgets

A fleet of 200 agents can share a single budget cap with per-agent sub-caps. Policy inheritance: the parent budget enforces the ceiling; children divide it.

Org budget $50,000 / month
└── Procurement team $30,000 / month
├── Agent A $500 / day, $5,000 / month
├── Agent B $500 / day, $5,000 / month
└── Agent C $200 / day, $2,000 / month
└── Research team $20,000 / month
└── ... etc.

A breach at any level blocks the in-flight payment. The hierarchy is recorded with every transaction so the audit log shows which level approved it.

Non-custodial architecture

Oris reads balance
Oris constructs unsigned transaction
Your provider (Turnkey, Fireblocks, Circle) signs
Provider broadcasts
Oris confirms + records

Funds never touch Oris. The signing key never leaves your provider’s TEE.

Where to go next