尚未偵測到更新。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