Skip to main content

Prerequisites

You’ll also need accounts for:
  • Privy — embedded wallets, Google OAuth, and wallet login
  • Safe API key — Safe Transaction Service access (proposal mirroring + sync)
  • Telegram bot token — for review notifications
  • Zerion — portfolio data (optional)
  • Pimlicolegacy accounts only (pre-refactor 4337 rows and treasury payouts)
The agent EOA relays every execution and deploys Safes — it must hold BNB for gas. The AGENT_MIN_BNB threshold (default 0.05) triggers a low-balance alert.

Install

This is a pnpm workspace. Run from the root:

Configure Environment

Create client/.env.local:
See scripts/.env.example and server/.env.example for full templates.

Run Locally

1

Start the server

2

Start the client

3

Set up the NanoBot/Hermes agent

Verify It Works

  1. Visit http://localhost:3000
  2. Sign in with Google (embedded wallet) or connect a wallet — then pick a profile during onboarding
  3. A Safe multisig is deployed on BNB Chain (the agent pays gas)
  4. Navigate to Send → enter a recipient and amount
  5. Confirm → the SafeTx is queued and visible at app.safe.global at 1/2
  6. Check server logs for the risk score and verdict
  7. APPROVE: the agent confirms and relays — txHash appears in the UI
  8. REVIEW: check Telegram for the interactive approve/reject message (or override with your backup key in the Safe app)

Troubleshooting

Verify AGENT_PRIVATE_KEY is set and the agent EOA holds BNB — it relays every execution. If the proposal isn’t visible in app.safe.global, check SAFE_API_KEY.
Verify TELEGRAM_BOT_TOKEN is set in server/.env and the bot has been started in your Telegram chat.
Confirm BNB Chain RPC is reachable and the agent EOA has enough BNB to pay deployment gas.
ZERION_API_KEY may be missing from server/.env. Portfolio data requires a valid Zerion API key.