Three steps, about a minute.
Registration happens in Telegram, not here. The bot hands you a one-time code; this page trades that code for a session, so you can manage wallets in a browser as well as in the chat. Both doors lead to the same list.
Open the bot on Telegram. It is the only place an agent registration exists.
Send /start, then /link. It replies with an eight-character
code. Good for fifteen minutes, and it works once.
Paste that code below. That registers this browser. After it, add wallets here or send
/watch 0x… in the chat — same list either way.
Signing out wipes the session token held in this browser. Your registration and your wallets survive — they belong to the Telegram chat, not to this tab — and you can always manage them from the chat instead. Running your own watcher?
Or skip the sign-up entirely.
The agent is not a service you have to trust. The whole watcher is in this repository, it has no dependency on anything Assay runs, and pointing the console above at your own copy takes four steps.
Get a bot token. Message @BotFather
on Telegram, send /newbot, and keep what it gives you.
Run the watcher. In the repo: cd agent, npm install,
copy .env.example to .env, fill in the token, then npm start.
It needs Node 22.5 or newer and a Claude API key.
Let this page reach it. The API binds to 127.0.0.1 and only accepts a browser
whose origin matches ASSAY_SITE_URL. Set that to wherever you are serving this page from,
or the request will be refused before it arrives.
Point the console at it. Show the watcher address field,
enter where yours is listening, then register with /link exactly as above.
Full setup, cost, and the parts that are not covered by tests: agent/README.md in the repository.
The bench sees nothing. A watcher has to.
This one costs you privacy, and you should know before you use it. The bench runs entirely in your browser: you paste a hash, your browser reads the chain, and Assay never learns what you looked at. A watcher cannot work that way. To send you a message about a wallet, a server has to hold the link between your Telegram account and the addresses you asked it to watch.
That pair is exactly the join the bench refuses to make. It sits in a SQLite file called assay-agent.db on the machine you are running — which is the reason the agent is self-hosted rather than offered as a service. Treat that file the way you treat a secret.
Two smaller things worth saying plainly. Chain data is public, so the agent will watch any address you give it, not only ones you control — the code proves you own the chat, never the wallet. And the prose in each notice is written by a language model from figures the watcher computed; the numbers are copied, never generated, and every notice carries a permalink that re-runs the assay in front of you.
The whitepaper has not caught up yet. Section 04 still says there is no backend and no account system. That stays true of the bench and stops being true the moment you run an agent.