尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证An AI agent with its own crypto wallet that spies on famous wallets 👀
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Ask what anyone is doing on-chain. The agent pays for the answer with its own wallet.
Live app: https://harakiri-one.vercel.app
Wallet activity is public, but reading it is not. Block explorers show raw hex, hundreds of spam airdrops and decoded events nobody understands. Good transaction data sits behind API keys and subscriptions. Harakiri turns "what is this wallet up to?" into a plain-English answer: the agent pays for the data itself (per request, over x402, no API key or account) and reports the newest, biggest and weirdest moves, with a link for every claim.
vitalik or nick.eth; it finds the address.| Provider | Model | Notes |
|---|---|---|
Groq (OpenAI-compatible API, openai SDK 7.25.0) | openai/gpt-oss-120b | Default. Tool calling. |
You can swap in any Groq model that supports tool use with GROQ_MODEL in .env. There is no in-app model switcher.
| Tool | Cost | What it does |
|---|---|---|
resolve_name | Free | ENS name to address. |
get_wallet_activity | 0.02 test USDC (x402) | Newest 40 transactions for an address on a chosen chain, via GoldRush. |
get_my_wallet | Free | The agent's own address and ETH/USDC balance. |
The details are in The tools.
| Layer | What | Version |
|---|---|---|
| Runtime | Node.js | 20+ (built on 24.19.0) |
| Framework | Next.js (App Router, API routes) | 16.4.0 |
| UI | React / React DOM | 19.3.0 |
| Styling | Tailwind CSS, shadcn/ui, Base UI | 4.3.3 / 4.21.5 / 1.9.0 |
| Markdown replies | react-markdown, remark-gfm | 10.1.0 / 4.0.1 |
| Icons | lucide-react | 1.57.0 |
| LLM client | openai (pointed at Groq) | 7.25.0 |
| Wallet / chain | viem | 2.57.6 |
| Payments | @x402/core, @x402/fetch, @x402/evm | 2.28.0 |
| Data | GoldRush transactions_v3 over x402 | - |
| Language | TypeScript | 5.9.3 |
"What's vitalik doing on-chain?"
vitalik to vitalik.eth and then to 0xd8dA…6045 (free ENS lookup).You pay with test USDC on Base Sepolia, but the data is real mainnet activity (Ethereum, Base, Arbitrum, Optimism, Polygon).
Built on the agentmaxxin template (Next.js + a viem wallet), running on Groq through its OpenAI-compatible API.
npm install
Create .env in the project root:
GROQ_API_KEY=your_key_here
npm run dev
Open http://localhost:3000.
.agent-wallet.json.0 ETH · 10 USDC.Don't use a well-known test key (such as Hardhat/Anvil's
0xac0974…/0xf39F…6266) inWALLET_PRIVATE_KEY. Those accounts are EIP-7702-delegated to sweeper contracts on public testnets, and GoldRush rejects their payments withinvalid_exact_evm_signature. Use a fresh wallet.
| Prompt | What happens |
|---|---|
What's vitalik doing on-chain? | resolve_name → get_wallet_activity on eth-mainnet → gossip and a sus-o-meter. |
Anything sus in jessepollak.eth's Base activity? | Same flow, but on base-mainnet. |
What's in your wallet? | Shows the agent's address and its ETH and USDC balance. |
Each answer comes with a dossier card showing the fetched transactions: in/out counts, tokens, and colored IN / OUT / TAGGED pills (TAGGED means someone else's tx that only airdropped to the address). Each row links to the explorer. The reply ends with a 10-segment sus-o-meter.
Any ENS name or 0x address works. Name the chain in your prompt to switch from Ethereum. Click a tool entry above a reply to see the raw inputs, the trimmed transactions, and the payment (with a Basescan link when GoldRush returns a settlement tx).
About "sus": the transactions are real; the sus-o-meter is the AI's opinion. The persona is told never to claim intent or accuse anyone, and to point out spam tokens airdropped to famous wallets, which make up most of the "weird" activity.
An ENS name resolving does not mean the celebrity owns it. Anyone could have registered modi.eth or srk.eth. As of 2026-10-14:
vitalik.eth, parishilton.eth, markcuban.eth, loganpaul.eth, barmstrong.eth (Brian Armstrong), cozomomedici.eth (Snoop Dogg), garyvee.eth, balajis.eth, stani.eth, haydenadams.eth.elonmusk.eth, modi.eth, waqarzaka.eth, trump.eth, donaldtrump.eth, realdonaldtrump.eth, salmankhan.eth, shahrukhkhan.eth, srk.eth. Don't present their activity as the celebrity's.elon.eth, narendramodi.eth, snoopdogg.eth, jimmyfallon.eth, cz.eth.Tip: say "what's Snoop Dogg doing? his ENS is cozomomedici.eth". The agent won't guess the alias on its own.
| Tool | Cost | What it does |
|---|---|---|
resolve_name | Free | ENS name → address, via a public Ethereum RPC. Falls back to a few hardcoded names (vitalik, nick, sassal, jessepollak, punk6529) so the demo never fails on resolution. |
get_wallet_activity | 0.02 USDC | GoldRush transactions_v3 (tier=medium) over x402. Returns the newest 40 transactions, trimmed to time, direction (in / out / involved = someone else's tx that only airdropped to this address), value, USD value, decoded event, up to 3 token transfers (ones touching the address first), and an explorer link. The agent cites those links, and the payment's Basescan link shows under the tool call. |
get_my_wallet | Free | The agent's own address and balance. |
The loop lives in agent/agent.ts.
openai SDK, baseURL: https://api.groq.com/openai/v1).tool_calls, the matching run functions are executed and each result goes back as a role: "tool" message with its tool_call_id.x402Fetch in agent/wallet.ts speaks the real protocol, using the official @x402/fetch and @x402/evm packages:
402 with a PAYMENT-REQUIRED header (price, USDC contract, recipient, network eip155:84532).transferWithAuthorization for exactly that amount.| Path | Description |
|---|---|
agent/tools.ts | The tools, including resolve_name and get_wallet_activity. |
agent/agent.ts | The agent loop and the gossip-detective persona (SYSTEM_PROMPT). |
agent/wallet.ts | The agent wallet, the ETH and USDC balance, and real x402 payments (x402Fetch). |
app/page.tsx | The page: setup steps, tools list, and chat (saved in the browser until you click Clear). |
components/gossip.tsx | The dossier card, markdown replies and the sus-o-meter. |
components/swing-chain.tsx | The swinging 3D chain hanging off the logo. |
app/api/agent/route.ts | The server endpoint that runs the agent. |
app/api/wallet/route.ts | The server endpoint that creates and reads the agent wallet. |
components/ui/ | Interface components from shadcn/ui. You do not need to edit these. |
.env | Your API key and optional settings. |
.agent-wallet.json | The agent wallet, created when you click Create wallet. Never share this file. |
All settings live in the .env file.
| Variable | Required | Description |
|---|---|---|
GROQ_API_KEY | Yes | Your Groq API key. |
GROQ_MODEL | No | The Groq model to use. Defaults to openai/gpt-oss-120b. It must support tool use. llama-3.3-70b-versatile is no longer offered. |
WALLET_PRIVATE_KEY | No | Use an existing wallet instead of the Create wallet button. A private key starting with 0x. When set, it takes priority over .agent-wallet.json. |
Restart npm run dev after changing any value in .env.
Clicking Create wallet generates a new private key and saves it to .agent-wallet.json. The file is listed in .gitignore, so it is never committed.
Once the wallet exists, the Setup panel shows:
To start again with a new wallet, stop the server, delete .agent-wallet.json, restart, and click Create wallet again.
To use a wallet you already have, set WALLET_PRIVATE_KEY in .env instead.
Security note: Only ever use this wallet for testing. Never send real funds to it. Private keys in
.agent-wallet.jsonand.envare stored as plain text.
| Problem | Solution |
|---|---|
The page says to add GROQ_API_KEY | Add your key to .env and restart npm run dev. |
| A tool fails with "no wallet yet" | Click Create wallet in the Setup panel, then ask again. |
402 ... invalid_exact_evm_signature | The wallet is EIP-7702-delegated, which usually means it's a public test key. Remove WALLET_PRIVATE_KEY from .env, delete .agent-wallet.json, restart, and click Create wallet. |
402 with no error, or a balance error | The wallet needs Base Sepolia USDC from faucet.circle.com. |
| "does not resolve to an address" | That ENS name has no address set. Pass a 0x address instead. |
| Port 3000 is already in use | Run npm run dev -- -p 3001 and open that port instead. |
| A model error appears in the chat | Check that your API key is valid, or set a different model in GROQ_MODEL. |
413 Request too large ... tokens per minute | Groq's free tier caps tokens per minute. Lower MAX_TOOL_CHARS in agent/agent.ts, or upgrade the Groq tier. |
429 errors | Rate limited. The SDK retries automatically with exponential backoff (up to 5 times, honoring retry-after). If it still fails, wait a minute. |
MIT