Skip to main content
ouroborai is structured as a Bun workspace monorepo. Packages are scoped under @arb-agent/ and apps live in the apps/ directory.

Dependency Graph

Build order: sdk first, then adapters, skills, timeboost, and smart-account in parallel, and finally the apps.

@arb-agent/sdk

Path: packages/sdk/ The foundation package containing chain configuration, contract addresses, type definitions, token resolution, and wallet utilities.

Key Exports

Type Exports

Core types used across all packages:

Contract Addresses

CONTRACTS includes addresses for:
  • DEX: Uniswap V3 Universal Router, SwapRouter02, Camelot Router, Pendle Router
  • Lending: Aave V3 Pool, Data Provider, Oracle
  • Account Abstraction: EntryPoint v0.6, Pimlico EntryPoint v1
  • TimeBoost: Auction contract
  • Tokens: USDC, USDC.e, WETH, ARB, WBTC, PENDLE, GRAIL, aUSDC
  • Alchemix: AlchemistV2 (alETH + alUSD), Transmuters, WETH Gateway

@arb-agent/adapters

Path: packages/adapters/ Protocol-specific adapters that wrap on-chain interactions behind a uniform interface. Each adapter takes a PublicClient, WalletClient, and account address.

Exports


@arb-agent/timeboost

Path: packages/timeboost/ TimeBoost express lane bidder and reseller.

Exports

See Configure TimeBoost for usage details.

@arb-agent/smart-account

Path: packages/smart-account/ ERC-4337 smart account wrapper using ZeroDev Kernel.

Exports

Session keys allow the agent to trade autonomously within defined constraints (allowed protocols, spending limits, time window) without exposing the master private key.

@arb-agent/skills

Path: packages/skills/ Skill loader for fetching and caching SKILL.md documentation bundles.

Exports

Built-in skills: arb-trade, gmx, camelot, pendle, aave, kyan, rwa-stocks, timeboost-bid. See Add a Skill for details on creating custom skills.

Apps

Build Notes

  • @zerodev/*, permissionless, and tslib must be marked --external in Bun build to avoid bundling errors
  • Bun stores resolved packages in node_modules/.bun/
  • The web app inlines types from @arb-agent/sdk to avoid pulling Node.js-only modules (ArbWallet) into client bundles