Ottie is the only AI agent where every decision has a receipt. A self-evolving agent runtime that learns from tasks, makes every side-effecting action auditable and crash-recoverable, and enforces authorization at compile time — not at 3am in production. One Go binary. 28 skills. Zero dependencies.
Website · One-Click Launch · Demo Videos · 8004scan Profile
No other agent combines these five properties. Most have zero.
| Property | What it means | Closest competitor |
|---|---|---|
| Deterministic replay | Per-turn execution manifest with prompt hash, tool schema hash, and provider request IDs. Any decision can be reconstructed bit-for-bit. | LangGraph checkpoints (coarser, no cryptographic pinning) |
| Write-ahead action ledger | Every side-effecting tool dispatch wrapped in Prepare/Commit/Abort rows. Crash between dispatch and result? Recovery at startup. | None. No agent ships database-style transactional guarantees. |
| Compile-time authorization | Go phantom-typed PrincipalContext[C Capability] — unauthorized wallet writes are rejected by go build, not a runtime check. |
Arcade AI (OAuth, runtime only). Impossible in Python/TS. |
| Self-evolving skills | Learns from tasks, packages as reusable skills, human-consented review before activation. Gets smarter every day — but only with your approval. | Hermes Agent (learning loop, but no ledger/replay/auth triad) |
| Single Go binary | ~24 MB, zero CGO, sub-second startup. No Python, no virtualenv, no Docker required. Air-gapped and edge-deployable. | No complete agent ships as one static binary with 28 skills. |
- Self-evolving skills — learns from tasks, packages approaches as reusable skills with human-consented review; 28 skills across 7 domain categories
- Auditable replay — per-turn execution manifest captures prompt hash, tool schema hash, provider request IDs, and model ID; every LLM call including retries and fallback attempts is recorded
- Crash-proof actions — write-ahead action ledger with Prepare/Commit/Abort for every side-effecting tool; orphaned intents surface at startup for reconciliation
- Compiler-verified safety — phantom-typed
PrincipalContext[C Capability]with Go generics; unauthorized high-privilege tool calls fail atgo build, not in production - 28 skills in 7 categories —
crypto/(wallets, CEX, research),defi/(swap, lending, staking, yield, Lido MCP),identity/(ERC-8004, Self Agent ID),payments/(Tempo, MPP),safety/(ClawWall, prompt injection guard),research/(Polymarket, Farcaster),meta/(skill management) - 14-reason error classifier — typed
FailoverReasonwith recovery hints (ShouldCompress, ShouldFallback, ShouldRotateCredential) driving the fallback chain - 13+ channels — Telegram, Discord, Slack, Signal, WhatsApp, Matrix, QQ, DingTalk, LINE, WeCom, Feishu, IRC
- One binary, zero deps — single Go binary (~24 MB), zero CGO, sub-second startup, air-gapped deployable
- Multi-agent swarm — sub-agent spawning via unified
delegatetool, multi-bot coordination - On-chain verified — ERC-8004 Agent #1988, deployed contracts, real Uniswap swaps on Sepolia
- Privacy layer — Venice AI zero-retention inference, Railgun ZK-SNARK private transfers
| Artifact | Explorer |
|---|---|
| ERC-8004 Agent #1988 | 8004scan.io |
| Uniswap ETH→USDC Swap | sepolia.etherscan.io |
| AgentTreasury Contract | sepolia.etherscan.io |
| ERC-8004 Registration TX | sepolia.etherscan.io |
All 10 track demo videos — each recorded with real Ottie agent calls, step-by-step operations.
| Track | Demo |
|---|---|
| Lido MCP Server | 10 ops: APR, stats, balance, stake, wrap, unwrap, withdraw, governance, vault health |
| Uniswap Swap | Real ETH→USDC swap on Sepolia via Trading API |
| Venice AI Private Agents | Model listing, zero-retention inference, on-chain action |
| Let the Agent Cook | 5-step autonomous: discover → plan → execute → verify → report |
| ERC-8004 Agent Identity | NFT mint, 8004scan verification, reputation registry |
| stETH Agent Treasury | Contract deploy, deposit, yield query, permission controls |
| Vault Monitor + Telegram | APR vs Aave benchmark, alert generation |
| Self Agent ID | ZK proof-of-human registration flow |
| ERC-8183 Agentic Commerce | Job escrow creation, evaluator attestation |
| Open Track | Full capability showcase with live data |
37/37 E2E tests passing: bash demos/test-onchain.sh
git clone https://github.com/jiayaoqijia/ottie.git && cd ottie
make build
./build/ottie onboard
./build/ottie gatewayLido MCP Server (14 tools)
A FastMCP server (mcp-servers/lido-mcp/server.py) implementing the full Lido staking protocol:
| Tool | Type | Description |
|---|---|---|
lido_apr |
read | stETH APR (7-day SMA) from Lido API |
lido_stats |
read | Protocol stats: TVL, holders, market cap |
lido_balance |
read | On-chain stETH balance for any address |
lido_exchange_rate |
read | wstETH/stETH exchange rate (on-chain) |
lido_rewards |
read | Reward history for an address |
lido_withdrawal_status |
read | Withdrawal queue status |
lido_governance_proposals |
read | Snapshot governance proposals |
lido_stake |
write+dry_run | Stake ETH → stETH |
lido_wrap |
write+dry_run | Wrap stETH → wstETH |
lido_unwrap |
write+dry_run | Unwrap wstETH → stETH |
lido_request_withdrawal |
write+dry_run | Request stETH withdrawal |
lido_vote |
write+dry_run | Vote on Snapshot proposals |
lido_vault_health |
read | Compare APR vs Aave benchmark |
lido_alert_check |
read | Evaluate alert conditions |
All write operations support dry_run=true for simulation via eth_call.
AgentTreasury Smart Contract
Deployed Solidity contract (contracts/AgentTreasury.sol) — humans deposit wstETH, agents can only spend accrued yield. Principal is locked.
deposit(amount, agent)— human deposits, authorizes agentqueryYield(depositor)— calculate available yield from exchange rate deltaspendYield(depositor, recipient, amount)— agent spends yield onlywithdrawPrincipal()— depositor-only withdrawalsetAllowedRecipient(address, bool)— whitelist spending targetssetPerTxCap(uint256)— maximum per-transaction cap
Deployed on Sepolia: 0xc4EB945689E0A13832004a44C0A3292a33E2Fec0
Crypto Skills (36 total)
| Layer | Skill | Capabilities | APIs |
|---|---|---|---|
| Market Intelligence | crypto-market-data |
Prices, trending, market cap, Fear & Greed, TVL | CoinGecko, DefiLlama |
crypto-cex |
Order books, funding rates, tickers across 6 exchanges | Binance, Coinbase, Kraken, Bybit, Gate.io, Bitget | |
crypto-research |
Contract verification, perps, governance | Etherscan, Hyperliquid, Snapshot | |
| On-Chain Operations | crypto-wallet |
Balances, holdings, tx history, approvals, ENS | Public RPCs, Etherscan |
defi-swap |
DEX swap quotes, price routing, slippage | Uniswap, ParaSwap, Jupiter, 1inch | |
| Yield & Risk | defi-lending |
Lending rates, APY, health factors | Aave, Morpho, Compound, DefiLlama |
defi-staking |
Liquid staking APR, exchange rates | Lido, Rocket Pool, DefiLlama | |
defi-yield |
Yield farming, APY comparison | DefiLlama, Pendle, Curve | |
| Infrastructure | lido-mcp |
14-tool MCP server for Lido staking | Lido API, On-chain RPCs, Snapshot |
lido-vault-monitor |
Vault position monitoring & alerts | DefiLlama, Lido API, Aave | |
steth-treasury |
Yield-bearing agent budgets, principal-protected | wstETH, Lido | |
| Privacy & Identity | venice-private-ai |
Zero-retention LLM inference | Venice AI API |
privacy-layer |
ZK-SNARK private transfers, egress monitoring | Railgun Protocol | |
self-agent-id |
ZK proof-of-human agent identity, soulbound NFTs | Self Protocol, Celo | |
8004 |
ERC-8004 agent identity, reputation, validation | Agent0 SDK, 8004scan | |
| Payments | mpp |
Machine-to-machine payments via HTTP 402 | MPP Protocol, Tempo |
tempo |
Paid API discovery and requests with auto-payment | Tempo Wallet |
Supported networks: Ethereum, Arbitrum, Optimism, Base, Polygon, BSC, Avalanche, Fantom, Solana
Config lives at ~/.ottie/config.json:
{
"model_list": [
{
"model_name": "claude-sonnet-4.6",
"model": "anthropic/claude-sonnet-4.6",
"api_key": "sk-ant-your-key"
}
],
"agents": {
"defaults": {
"model": "claude-sonnet-4.6"
}
},
"channels": {
"telegram": {
"enabled": true,
"token": "YOUR_BOT_TOKEN",
"allow_from": ["YOUR_USER_ID"]
}
},
"tools": {
"mcp": {
"enabled": true,
"servers": {
"lido-mcp": {
"enabled": true,
"command": "python3",
"args": ["mcp-servers/lido-mcp/server.py"]
}
}
}
}
}| Command | Description |
|---|---|
ottie onboard |
Initialize config & workspace |
ottie agent -m "..." |
One-shot chat |
ottie agent |
Interactive chat |
ottie gateway |
Start gateway (channels + heartbeat) |
ottie status |
Show status |
ottie cron list |
List scheduled jobs |
13+ messaging platforms: Telegram · Discord · Slack · Signal · WhatsApp · Matrix · QQ · DingTalk · LINE · WeCom · Feishu · IRC · Custom Webhooks
Mode A — Sub-Agents (single process): one orchestrator spawns specialized workers internally via sessions_spawn.
Mode B — Multi-Bot Telegram (multiple processes): separate Ottie instances coordinate via shared ProjectBoard in a Telegram group.
{
"agents": {
"list": [
{ "id": "orchestrator", "default": true, "role": "orchestrator",
"subagents": { "allow_agents": ["researcher", "coder"] } },
{ "id": "researcher", "role": "leaf",
"tools_allow": ["web_search", "web_fetch", "read_file"] },
{ "id": "coder", "role": "leaf",
"tools_allow": ["read_file", "write_file", "edit_file", "exec"] }
]
}
}Docker & Build
# Docker
git clone https://github.com/jiayaoqijia/ottie.git && cd ottie
docker compose -f docker/docker-compose.yml --profile gateway up
# Build from source
make build # Current platform
make build-all # All platforms
make test # Run testsBuilt on nanobot, OpenClaw, and PicoClaw. Integrates with CoinGecko · DefiLlama · Uniswap · Lido · Aave · Venice AI · ERC-8004 · Self Protocol · Snapshot · FastMCP and more.
AGPL-3.0 — see LICENSE for details.
