Roaming the web
What you see below is live. A real browser is open on a real page; the crawler's spider is drawn on that page at the mouse, and the mouse goes where the fly's descending neurons send it. The frames are the browser's own screencast, the readouts are the simulator's, and when no frame arrives the crawler is between lives: a page budget was spent, or a new browser is starting on a seed.
Descending neurons in Hz, scaled to 460 Hz. The tick is the stop threshold, — Hz.
- nothing yet
- nowhere yet
The loop
One decision is one pass around this loop. The browser screencasts a 1280×800 frame; the retina samples the 300×210 window around the cursor; the brain runs 60 steps of 0.2 ms, 12 ms of brain time; the four descending neuron types are read as rates; the rates become a mouse move on the real page; and if DNp09 says stop while the fly is slow, the mouse clicks whatever is under it, provided the fences allow it.
- 1pagea real site in headless Chromium, 1280×800
- 2eye892 columns over the 300×210 window at the cursor
- 3brain165,122 LIF neurons, 60 steps × 0.2 ms
- 4descending neuronsDNa02 · DNa01 · MDN · DNp09, as Hz
- 5mousea move on the real page; the spider walks there
- 6stop = clickDNp09 ≥ 330 Hz while slow, if the fences allow
The eye
The dataset assigns 892 retinotopic hex columns to the optic lobe. We put the screenshot on them: a 300×210 window around the cursor is sampled at each column, and the luminance drives the lamina cells that sit directly behind the photoreceptors, L1 for light going up (the ON pathway) and L2 for light going down (OFF). The field below is the ON drive at the columns it was sampled from, as the service reports it.
The brain
The graph is the Janelia FlyEM male CNS release (v1.0, CC-BY): 165,122 neurons and 10,228,000 synapse-weighted edges. Each neuron is a leaky integrate-and-fire unit after Shiu et al. 2024: every synapse moves the postsynaptic cell by 0.275 mV, the clock ticks every 0.2 ms, and a decision is 60 ticks. The wiring is never edited.
Motor readout
A fly does not have a mouse, but it has descending neurons whose rates are known to mean something to its legs. We read four types. DNa02 steers, as the difference between the left and right copies. DNa01 drives forward. MDN, the moonwalker, walks backward. DNp09 stops, and a stop at or above 330 Hz while the fly is slow is the click.
| type | does | read as | live Hz | ref |
|---|---|---|---|---|
| DNa02 | steer | left minus right | — | Rayshubskiy et al. 2020 |
| DNa01 | forward | mean of left and right | — | Janelia FlyEM |
| MDN | backward, "moonwalker" | reverse | — | Bidaye et al. 2014 |
| DNp09 | stop | stop; ≥ 330 Hz while slow is the click | — | Bidaye et al. 2020 |
Gains
The connectome as released does not steer a pointer. To make it steerable we tuned exactly one number per cell type, a gain, for 260 of the cell types, and nothing else. No synapse was added, removed or reweighted; no neuron was moved. The gains live in one file, gains_ui.npz, and the same file drives the roamer and the launch rig.
The fences, and the name
A brain that clicks whatever it stops on needs fences, and they are code, not the fly. The crawler stays inside an allowlist of hosts, obeys each host's robots.txt, refuses a blocklist of URLs, and vetoes any click on something that looks like it commits: buy, sign in, submit, download, agree. A vetoed stop is logged as a stop that did not click, with the reason. The name is simpler than it sounds: every link the fly clicked votes for the words in its text, and the top word is the suggestion. Names reach nothing in the roamer; there is no smell in this build.
- allowlistthe fly stays inside — hosts
- robots.txtread per host, obeyed
- URL blocklista keyword list on every destination
- vetono click on anything that commits
The launch
The launch is the same brain driving the same mouse, this time over the real pump.fun create page on the owner's machine. The fly moves the pointer and types into whatever field it stops on; the rig completes the fields the fly missed and says which ones were its; a person answers the bot check and presses START. The crawler's own wallet signs exactly one transaction, and only if that transaction pays from the crawler wallet, touches pump.fun's program, and simulates within the dev buy plus 0.03 SOL. This site says LIVE only after the service has verified the mint and the create transaction on chain itself.
- sign in with the crawler wallet
- attach the image
- the fly fills the fields it stops on; the rig completes the rest and says which
- the spider walks to Create coin
- pump.fun opens its buy dialog; the dev buy is typed, read back, and must match
- confirm: the dialog's Create coin
- the wallet signs one transaction; the service verifies the mint on chain
| the fly | the rig | a person |
|---|---|---|
| moves the mouse | drives the spider between stages | opens the rig, answers the bot check |
| types the field it stopped on | completes the fields the fly missed, says which | types the real name and ticker |
| enters the dev buy by typing | reads the amount back; it must match | presses START, DRY or LIVE |
| never presses a dialog button | presses the dialog's Create coin on LIVE | owns the wallet key |
Status
Where the work stands, as of this page's last edit. The live items are read from the service; the rest is what has and has not been done.
- doneconnectome + simulator: 165,122 LIF neurons, 10,228,000 edges, 260 tuned gains
- doneroamer live on real pages (—)
- donelaunch rig rehearsed on the real pump.fun create page, without sign-in (DRY)
- not yetsigned-in rehearsal
- not yetlive launch
References
- Shiu et al. 2024, Nature: a Drosophila computational brain model; the leaky integrate-and-fire parameters used here (0.275 mV per synapse, 0.2 ms step).
- Janelia FlyEM, male CNS connectome v1.0 (CC-BY): the 165,122 neurons, the 10,228,000 synapse-weighted edges, the 892 retinotopic column assignments.
- Bidaye et al. 2014 and 2020: MDN, the moonwalker descending neuron, and DNp09, the stop.
- Rayshubskiy et al. 2020: DNa02 and steering.