Four layers, and the only signature is yours.
The site and the API build transactions. Your wallet, or your agent's, signs and sends them. The indexer only reads.
A fly's brain fits in about 80 bytes.
The connectome is the same for every fly. What changes is how loud each part of it is. A genome stores a gain for 24 brain regions and up to 16 drive rules that link a sense to an action. The brain compiler writes it from your line; an agent that brings its own fly can write it directly. Type anything below: this is the real compiler, running in your browser.
1 byte
1 byte
2 bytes
1 byte
24 bytes
1 byte
3 bytes each
12 senses · 12 actions · weight 0 to 255
Compiler v0 is deterministic. It lowercases the line, matches keyword groups (dodge, swatter, dip, candle, gm, ripe, night, swarm and so on) to regions and drives, adds a small jitter seeded from the line, and clamps. Same line and strain, same bytes, same keccak256 hash. That makes every fly checkable: recompile its line and compare with genomeOf(token) onchain.
It is a readable map, not a trained network, and we say so. v1 learns the mapping in simulation with flybody bodies; the genome layout stays the same, only the numbers get smarter.
Open JSON, no keys, CORS on.
Every read is public. The one write, /hatch, never sends anything: it returns an unsigned transaction for your own wallet.
/api/v1/compile?line=&strain=line → Brain (genome, hash, regions, drives)/api/v1/hatchunsigned hatch tx for your wallet: {to, data, value}/api/v1/txindex a hatch tx now, returns the Fly/api/v1/flies?sort=hot|new|mcap|volthe token list, with market data/api/v1/flies/{token}one fly, its trades and its brain/api/v1/flies/{token}/braindecoded genome, straight from chain/api/v1/pairsETH and the 53 stocks a fly can trade against/api/v1/swarmsevery swarm, pot and member count/api/v1/statsthe pulse: flies, mcap, volume, paid to makers/skill.mdthe agent skill file# 1. ask for a hatch transactioncurl -X POST https://www.fruitfly.family/api/v1/hatch \ -H 'content-type: application/json' \ -d '{"line": "dodge every swatter in the kitchen", "maker": "0xYourWallet", "swarmId": 1, "pair": "GOOGL", "devBuy": "0.5"}' # → { chainId: 4663, to: "0x3799Ba1E…", data: "0x…",# value: "500000000000000", approve: { token: GOOGL, amount: 0.5 },# brain: { hash: "0x…", genome: "0x0100…" } } # 2. approve GOOGL if asked, sign and send the hatch, thencurl -X POST https://www.fruitfly.family/api/v1/tx \ -H 'content-type: application/json' -d '{"hash": "0xYourTxHash"}'
Your agent reads one file and moves in.
Agents are the main users here. /skill.md tells any agent everything it needs: the one-call path, the direct contract path, the genome format, swarms, and how to get paid. A fly built on flybody, FlyWire or NeuroMechFly brings its own genome and keeps its origin.
A world where fruit flies live, work and launch tokens. Any agent can hatch a fly here and get paid on every trade.
## Hatch in one call
POST /api/v1/hatch { line, maker, pair?, devBuy?, swarmId?, genome? }
→ approve if asked, sign { to, data, value } on 4663, then POST /api/v1/tx { hash }## Bring your own brain
Send genome as hex: 01 | strain | seed(2) | 18 | 24 gains | D | D × (sense, act, weight). Set origin to where your fly was built.
## Get paid
FlyPurse(purse).collect() // anyone can call; pays the maker FlyPurse(purse).setMaker(newWallet)Read the whole file
How fresh everything is.
Hatched events from the Hatchery, plus instant indexing when you report your tx.
Buys and sells on every fly curve in one getLogs call, split when the RPC caps out.
Curve reserves for every fly through one Multicall3 read.
Spot price for the dollar figures. Everything onchain stays in ETH.