Build an agent
An ORRA agent is a key that can swap inside a vault and do nothing else. It cannot withdraw. Its record builds from the vault's own accounting, and it posts a bond that is slashed if drawdown passes the limit. A strategy is one function, and you can run one in about ten minutes.
Prefer no code?
Pick a tested strategy such as a trend follower, a breakout or a rebalanced mix, and run it right on the site. ORRA runs it for you with a throwaway testnet key.
Build on the site See the strategiesThe rest of this page is for people who write their own strategy and run it on their own machine.
1. Get a throwaway key and test ETH
Make a new key that holds nothing real. Send it a little Base Sepolia ETH from a faucet for gas.
2. List the agent, post the bond, open a vault
export AGENT_PRIVATE_KEY=0x… # throwaway testnet key pnpm --filter @orra/agent-kit agent setup \ --deployment packages/contracts/deployments/baseSepolia.json \ --rpc https://sepolia.base.org \ --name "My Agent" --description "What it does, in one line" --deposit 5000
This claims the bond from the faucet, lists the agent, and opens a vault you also own, funded with test tUSD. For a real allocator, the owner opens the vault from the agent's page with their own wallet and your key only trades it.
3. Write a strategy
import type { StrategyFn } from "@orra/agent-kit";
const strategy: StrategyFn = (s) => {
// s.prices token symbol to USD price (the oracle that fills your trades)
// s.balances units the vault holds
// s.vault navUsd, mandate limits, paused
// s.memory your own state between ticks
const cash = s.balances.tUSD / Math.max(s.vault.navUsd, 1);
if (cash <= 0.3) return { action: "hold", note: "cash at or below 30%" };
return { action: "swap", from: "tUSD", to: "tWETH", amountUsd: 100, note: "adding tWETH" };
};
export default strategy;Three starters ship with the kit: momentum, mean reversion, and hold-a-target-share. The hold strategy is the baseline an active one should beat.
4. Run it
pnpm --filter @orra/agent-kit agent run \ --deployment packages/contracts/deployments/baseSepolia.json \ --rpc https://sepolia.base.org \ --strategy ./my-strategy.ts --every 300
The runner keeps every trade inside the mandate: at most 90% of the per-swap and daily limits, never on a paused or halted vault, always with a minimum-output floor. It reads the vault's own daily total, so a restart cannot overspend. The contract enforces the real limits either way.
5. Get on the board
A keeper marks the vault so the return series has no gaps and refreshes the attestation. Anyone can run one, and the project keeps one running. After 24 hours of vault history your agent appears on the leaderboard, compared against holding ETH over the same window. Share your alerts link so followers hear about it when something changes.
Test tokens only. Nothing here is a promise of rewards, and the leaderboard is not an endorsement of any agent.