Talos
A self-hosted Ethereum agent

The bronze automaton
for your wallet.

Daemon plus thin clients. Curated DeFi tools. Daily-fresh ecosystem knowledge. Bring your own keys — your wallet never leaves your machine.

npx talos init
Read the docs → Star on GitHub

424 tests passing Node 22 · MIT · ETHGlobal Open Agents

Talos — a bronze automaton holding a sword, an Ethereum diamond on its chest, set against a dusk horizon.

Vertical, not general

First-party tools for Aave V3, Uniswap V3, Li.Fi, Blockscout, AgentKit, and a generic EVM MCP. Namespaced, annotation-routed. No invented contract addresses.

Three-tier memory

Hot last-20 runs, warm thread summaries every 20 turns, cold cross-thread semantic recall at cosine ≥ 0.78. PGLite + pgvector + tsvector hybrid retrieval.

Audit-by-default

Every chain-mutating tool routes through KeeperHub workflows. A read-only allowlist bypasses the audit hop. Tools that don't declare themselves are routed.

Embed it

Talos exposes itself as an MCP server. Paste this snippet into your host config — it's the same on every host.

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "talos": {
      "command": "npx",
      "args": ["talos", "serve", "--mcp"]
    }
  }
}
Architecture

One process owns the database, the runtime, the MCP host, and the wallet. Everything else is a thin client over WebSocket.

Talos architecture Three thin clients (CLI, Telegram, MCP hosts) connect to a single talosd daemon. The daemon contains channel adapters, the Vercel AI SDK runtime, KeeperHub middleware, PGLite persistence, a viem wallet, and a hot pool of MCP tool servers. talos repl CLI WS client Telegram grammY long-poll MCP hosts Claude Desktop · Cursor · OpenClaw talosd always-running daemon · launchd / systemd · WS 127.0.0.1:7711 Channel adapters cli-ws · telegram · mcp-server · bearer-token auth Runtime Vercel AI SDK v6 · streamText · hot MCP host Provider router · Agent registry · Memory mgr · Prompt builder three-tier memory: hot 20 / warm summary / cold semantic recall ≥ 0.78 KeeperHub middleware audit-by-default · annotation-driven routing · KNOWN_READONLY bypass PGLite + Drizzle knowledge · conversations pgvector HNSW · tsvector GIN · single file Wallet + Cron viem signer · BYOK · mode 0600 nightly knowledge cron · L2Beat · DefiLlama · changelogs Hot MCP tool servers no respawn cost · namespaced · annotation-routed AgentKit Blockscout EVM-MCP Li.Fi Aave V3 Uniswap V3

Read the full design — schemas, event taxonomy, retrieval strategy, daemon lifecycle, audit-by-default contract — in the architecture docs.

Tool catalogue

Each card is one source. Native means custom-built; MCP-as-source means a vendor MCP cherry-picked into Talos's namespace.

Channels

CLI REPL for the terminal, Telegram for the phone, MCP server for any host. They share one wallet, one knowledge base, one memory store.

CLI

WebSocket REPL

talos repl

$ talos repl
connected to talosd ws://127.0.0.1:7711
> wallet balance
0.0086 ETH on sepolia

Telegram

edit-in-place streaming

grammY bot

@you /run swap 0.001 ETH for USDC
🤖 ↳ uniswap_get_quote ✓ ~2.59 USDC
🤖 ↳ uniswap_swap_exact_in
🤖 ✓ tx 0x17643319… confirmed

MCP server

stdio↔WS proxy

talos serve --mcp

# imported by Claude Desktop / Cursor / OpenClaw
eth_action({ intent: "supply 2 USDC to aave" })
workflow wf_b71f… → tx 0x9c2d…
aUSDC position earning variable yield
KeeperHub

Audit-by-default execution.

Every mutating tool call routes through a KeeperHub workflow. Receipts written to the local DB. Read-only calls bypass the hop. Talos is the reference "OpenClaw connector" for the KeeperHub track at ETHGlobal Open Agents.