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)
- Pimlico — legacy 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
- Client
- Server
Create
client/.env.local: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
- Visit
http://localhost:3000 - Sign in with Google (embedded wallet) or connect a wallet — then pick a profile during onboarding
- A Safe multisig is deployed on BNB Chain (the agent pays gas)
- Navigate to Send → enter a recipient and amount
- Confirm → the SafeTx is queued and visible at app.safe.global at 1/2
- Check server logs for the risk score and verdict
- APPROVE: the agent confirms and relays — txHash appears in the UI
- REVIEW: check Telegram for the interactive approve/reject message (or override with your backup key in the Safe app)
Troubleshooting
Transaction stuck in queue
Transaction stuck in queue
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.No Telegram notification
No Telegram notification
Verify
TELEGRAM_BOT_TOKEN is set in server/.env and the bot has been started in your Telegram chat.Safe not deploying
Safe not deploying
Confirm BNB Chain RPC is reachable and the agent EOA has enough BNB to pay deployment gas.
Balance not showing
Balance not showing
ZERION_API_KEY may be missing from server/.env. Portfolio data requires a valid Zerion API key.