.005 · Manual
The console, in seven steps.
A working reference. From wallet connection to agent hand-off. What to do, why it matters, what the chain verifies.
Sequence
Authorise the console
Connect a Solana wallet. The wallet you use here becomes the authority of the reserve. Only it can deploy, configure, withdraw, or rotate quorum.
Deploy the reserve
From the overview, deploy the reserve. The program creates a PDA on Solana that holds capital and account state. Done in a single transaction.
Open lanes
Each agent gets its own lane. Name, agent identifier, USDC budget. Open as many as you need; they are isolated from one another.
Set governance
Per-lane: max-per-tx, daily cap, hours window. All stored as on-chain account data, all enforced atomically.
Curate the roster
Add the addresses lanes are allowed to pay. The program rejects every other destination. The agent literally cannot send funds elsewhere.
Fund the reserve
Move USDC into the reserve. Lanes draw from this pool against their budgets, and replenish themselves as configured.
Hand it to the agent
Give the agent runtime its program ID, lane address, and RPC. The agent calls execute_payment. Every rule is verified by the chain before settlement.
Glossary
Reserve
A program-derived address on Solana that holds USDC and enforces every rule. Controlled by the wallet that deployed it. No private key exists for the address itself.
Lane
A partition inside the reserve assigned to one agent. Has its own balance, ledger, governance, and roster. Lanes cannot reach each other.
Governance
Account data attached to a lane: max-per-tx, daily cap, hours, lifetime ceiling. Verified atomically before any settlement.
Roster
Per-lane allowlist of recipients. Anything off-list is rejected by the program. Even if the agent is fully compromised.
Why on-chain
Rules enforced by a server require trust in that server. On-chain rules survive any operator failure. They run on the Solana runtime, not your infrastructure.
Fees
Eliro charges 0%. The only cost is Solana transaction fees. Fractions of a cent. The protocol takes nothing from your settlement.
Agent · sample integration
How an agent calls the reserve to settle a payment. This runs on the agent runtime. Not in this console.
import { Connection, PublicKey, Transaction } from "@solana/web3.js";
const PROGRAM = new PublicKey("your-program-id");
const LANE = new PublicKey("agent-lane-pda");
const TO = new PublicKey("approved-counterparty");
const ix = buildExecutePayment({
reserve: RESERVE_PDA,
lane: LANE,
recipient: TO,
amount: 5_000_000, // 5 USDC, 6 decimals
});
const tx = new Transaction().add(ix);
tx.sign(agentKeypair);
await connection.sendTransaction(tx);
// pass → settles atomically.
// fail → reverts atomically. Nothing moves.