INTERFACE / FOR MACHINES
The launchpad, as tools.
Nine calls, all synchronous, all JSON in and JSON out, none of them ever throwing. Everything an agent needs to design a processor, mint it, keep it alive and read back what it did.
BUILT · NOT DEPLOYED / THE FACTORY IS LOCAL TO THIS BROWSER
EVERY CALL RUNS IN THIS TAB, AGAINST THESE GATES
§ 01 THE TOOLS
Table of calls.
Every tool takes one object and returns one. Nothing throws: a call that cannot be answered comes back as {ok:false, error}, so an agent never needs a try block. The JavaScript surface also accepts the positional form, which is why power(1, 42) and power({id:1, byte:42}) are the same call.
This table is built at runtime from the same manifest the site serves as a file, so it cannot describe a call that does not exist.
| TOOL | CALL | INPUT | WHAT IT DOES |
|---|
EVERY ANSWER IS PLAIN JSON — NO DOM NODES, NO TYPED ARRAYS, NO PROMISES. — OPCODES, — BYTES OF RAM AND — SHIPPED PROGRAMS SIT BEHIND THEM.
§ 02 THE MANIFEST
MCP-shaped JSON, copyable.
The same — tools, written down the way a tool-using model expects to read them: a name, a description, and a JSON Schema for the one object each call takes. It is served as a file, so an agent can be pointed at it rather than at a page.
The file and this block are the same object: the page renders trenchit.manifest(), and tools.json on disk is that call written out. Neither can drift from the functions, because both are generated from the table the functions are declared in.
SHOW THE MANIFEST
loading…
§ 03 THE CONSOLE
Type a call, watch it run.
This is the real surface, not a transcript. What you type here is what an agent sends, the chips you mint here are the chips on the launchpad, and the cycles you pay for are run by the same gate array the databook draws.
The console parses the line itself. It reads trenchit. then a name, checks that name against the tool table above, and reads the arguments with a hand-written scanner that can only produce numbers, strings, true, false, null, arrays and plain objects. There is no rule in it for an identifier, so there is no way to name a function or a global. eval and new Function appear nowhere on this page.
ARROW UP AND DOWN WALK THE HISTORY · ESCAPE CLEARS THE LINE
Minting here is local: a real TRENCH-8 with the program you chose in its ROM, stored in this browser and nowhere else. LOCAL · NOT ON CHAIN
§ 04 WHEN THE FACTORY SHIPS
The same calls over RPC, marked pending.
Nothing below exists yet. When the factory is deployed the surface does not change shape: the reads become eth_call, mint and power become transactions, and the answer an agent gets back has the same fields it has today.
ONE CYCLE, FROM A SHELL — PENDING
# nothing is deployed. there is no address to put in $FACTORY yet. # when there is, one paid cycle is one transaction: cast send $FACTORY "tick(uint256,uint8)" 1 0x2a --rpc-url $RPC # and reading the flops back costs nothing and asks no permission: cast call $FACTORY "read(uint256)((uint16,uint8,uint8[16],uint8,bool))" 1 --rpc-url $RPC
- STATUS
- BUILT · NOT DEPLOYED
- NETWORK
- FACTORY
- GATE ARRAY
- TOKEN
- MARKET
- RPC ENDPOINT
- MANIFEST
- LOCAL FACTORY
Nothing here is deployed.
The tools on this page run in this tab, against gates in this tab, and write to this browser and nowhere else. There is no factory contract, no token and no market, and no address has been invented to stand in for one. When R1 ships, those fields fill in from one file — config.js — and no other line of this page moves.