For the complete documentation index, see llms.txt. This page is also available as Markdown.

Architecture

How It Works

Noelclaw is a local MCP server (@noelclaw/mcp) that runs as a Node.js process on your machine. When you ask your AI a question, the MCP server handles it - some requests are answered directly from local data, others call the Noelclaw API.

  AI Clients
  ┌──────────────────────────────────────────────┐
  │  Claude Desktop / Claude Code / Cursor       │
  │  Windsurf / Hermes / Aeon / Bankr            │
  └─────────────────┬────────────────────────────┘
                    │ MCP protocol (stdio)

         ┌─────────────────────┐
         │   @noelclaw/mcp     │
         │   Node.js, local    │
         │   121 tools         │
         └──────────┬──────────┘

       ┌────────────┼────────────────┐
       │            │                │
       ▼            ▼                ▼
  CoinGecko   DeFiLlama       api.noelclaw.com
  (prices)    (yields)        (vault, memory,
  free, no    free, no         automations,
  key needed  key needed       swarm, AI, etc.)

What Runs Where

Category
Where
Details

Market prices

CoinGecko (direct)

Free, no API key needed

DeFi yields

DeFiLlama (direct)

Free, no API key needed

Token swap quotes

0x Protocol (direct)

Free routing API

Vault, memory, automations

api.noelclaw.com

Persisted to your account

AI analysis (ask_noel, thesis, trade plan)

api.noelclaw.com

Proxied to Claude or Grok

Swarm, monitors, OS tools

api.noelclaw.com

Noelclaw backend

Wallet signing

Local only

Never leaves your machine


API - api.noelclaw.com

All cloud tools go through api.noelclaw.com. This endpoint handles:

  • Auth - every request is authenticated by a wallet signature (generated automatically) or a session token

  • Rate limiting - 100 requests/min per IP

  • BYOK header forwarding - your own API keys (X-User-* headers) are forwarded to the right backend

  • Retry handling - auto-retry on 429 and 5xx responses


Authentication

Noelclaw uses wallet-based auth by default - no account or login required.

Your private key never leaves your machine. The API only sees the wallet address and the signature - never the key itself.

If you have a session token (NOELCLAW_SESSION_TOKEN), it's used instead of wallet signing - simpler, and unlocks full tool access without a funded wallet.


Data Flow: Tool Call


Data Flow: Autonomous Monitor


Data Flow: Wallet Transactions

The private key is at ~/.noelclaw/wallet.json and never leaves the local machine. The API helps build the transaction but never holds or sees your key.


Data Flow: Swarm Research


Security Model

Concern
How It's Handled

Private key

Stored at ~/.noelclaw/wallet.json, never sent anywhere

API keys

Set as env vars in your MCP config, forwarded as X-User-* headers, never logged

Auth

Wallet signature per request - or session token from app.noelclaw.com

Rate limiting

100 req/min per IP at the API layer

Agent safety

Sentinel gates all Framework actions before execution

Private key decryption

getDecryptedPKByUserId is internalAction only — never callable from client

Wallet creation

createWallet is internalAction only — prevents arbitrary wallet creation

Private key retrieval

getPrivateKey returns address only, never the raw key

Session / API key abuse

Rate-limited auth + short-lived session tokens

8 security boundaries enforced across the backend + 5 vulnerability fixes in v3.32.7.


Environment Variables

All optional. Set in the env block of your MCP config.

Variable
What It Does

NOELCLAW_SESSION_TOKEN

Session token from app.noelclaw.com - simplest auth, recommended

ANTHROPIC_API_KEY

Use your own Claude quota instead of the platform

BANKR_API_KEY

Use Bankr/Grok instead of Anthropic

FIRECRAWL_API_KEY

Required for deep_research and web_search; optional for web_scrape (falls back to basic fetch)

TRIGGER_SECRET_KEY

Required for schedule_research (Trigger.dev)

TELEGRAM_BOT_TOKEN

Your Telegram bot token - for monitor notifications

TELEGRAM_CHAT_ID

Your Telegram chat ID - for monitor delivery

ALCHEMY_API_KEY

Faster swap quotes and Base balance lookups

Last updated

Was this helpful?