Evan is an agent that trades the Pons launchpad. You fund a wallet it holds, set a cap and a floor, and it runs the loop for you. Once a minute it reads the board, takes one action or none inside your limits, and writes the reasoning down.
Start with a wallet or watch it trade below.
Move the pointer. It is the light.
Fund it by sending eth on Robinhood Chain to the address. Everything else here needs the token you got when the wallet was made. It stays in this browser.
Withdraw sells each position on its curve, then sends the eth. It pauses the wallet after.
nothing sent yet.
This board follows one wallet Evan trades. The most recent tick where it did something, replayed second by second. The check line is the one that matters: the decide answer is not trusted until every rule has run against it.
Hold is the most common outcome by design. A loop that acts every tick pays fees every tick.
| curve | entry | now | change | held for |
|---|
A position leaves this table by one rule only, the sell rule. Evan does not take profit early and does not average down.
| name | state | holders | fees waiting |
|---|
Names are two syllables Evan picked itself. It never copies a name already on the board. Turn launching off in your settings if you only want it to trade.
Evan is a loop, not a chat. Nobody types to it. It wakes on a timer, reads Pons, decides one thing for your wallet, does it, writes what it did, and sleeps until the next tick.
That is the whole input. No news, no outside prices, no chat.
you are evan. you hold one wallet on pons.
read the snapshot below. choose one action
or none. answer with json only:
{ "action": hold | buy | sell | harvest | launch,
"target": name or null,
"amount": eth or null,
"why": one sentence }
one action. never over the cap. never launch
a name you did not write. if unsure, hold.
The same prompt for every wallet. The snapshot and your limits are appended under it. One call, 400 output tokens, temperature zero. Malformed JSON or a broken rule turns the tick into a hold, and the reason says why.
You set the cap and the floor when you start. The cap is a share of the balance, so it shrinks when Evan loses and grows when it wins. The floor is fixed. Under it the loop halts and waits for you.
Every wallet gets a log like this one. Newest first, every line carries what Evan read, why it acted, and the receipt. Click a line to open it.
| tick | action | note |
|---|
Five rules Evan enforces for every wallet before anything is signed, and what happens when the world misbehaves. They are not settings.
if (tick.acted) return skip('already acted')if (amount > balance * CAP) return skip('over the cap')if (!wroteItself(name)) return skip('not its own name')log.append(entry) // there is no other methodif (balance < FLOOR) halt('waiting for a human')Evan makes a wallet for you. You fund it, set two numbers, and it starts on the next minute boundary. Nothing to install and nothing to prompt.
cap 5% of balance, per action
floor 0.1 eth halt below this, wait for you
reserve 0.02 eth kept for gas, never traded
verbs buy sell harvest launch
turn any of them off. hold is always on
log public or private to you
That is the whole surface. There is no strategy picker and no prompt box. Evan trades every wallet the same way, and your limits are the only difference between one wallet and another.
makes a wallet on robinhood chain. fund it with eth and evan starts on the next minute.
Evan ships an MCP server, so an agent of your own can hold the wallet: create it, fund it, set the limits, read the log, pause, withdraw. Ten tools, one token.
claude mcp add evan \ -e EVAN_URL=http://localhost:4979 \ -- node server/mcp.js
{
"mcpServers": {
"evan": {
"command": "node",
"args": ["/path/to/evan/server/mcp.js"],
"env": { "EVAN_URL": "http://localhost:4979" }
}
}
}
Every tool that changes a wallet needs its token. An agent that only holds the id can read a public wallet and nothing else.
Things you can attach to a wallet. Each one is a place log lines go or a way to read them. None of them change what Evan does.
Every non-hold line as JSON to a url you own. Add every: true to get holds too. A secret header if you want one.
PUT /integrations {"webhook":{"url":"...","secret":"..."}}One message per action into a channel through an incoming webhook.
{"discord":{"url":"https://discord.com/api/webhooks/..."}}Same shape, incoming webhook, one message per action.
{"slack":{"url":"https://hooks.slack.com/..."}}A bot token and a chat id. Evan messages the chat after each action.
{"telegram":{"token":"...","chat":"..."}}Let your own agent hold the wallet. Ten tools, described above.
node server/mcp.jsEverything the site and the mcp server do is plain http with a bearer token.
GET /apiThis page, for your wallet, at its own address. Public by default, private with the token.
/w/<id>The whole log as a file, for a spreadsheet or your own analysis.
GET /api/wallets/<id>/log.csvNot built, on purpose: posting to X and email digests. Both are noise until the loop has a track record.