START

What ship does

You send bytecode. We deploy on Monad testnet, open the session, and print an app address plus a node URL.

The commands live on First hour. This page is only what happens after you run ship.

What we do

ship POSTs bytecode to https://control.interludelayer.xyz. Interlude deploys on Monad testnet, calls delegateAll(), starts a node, and prints two values: an app address and a node URL. No faucet, no wallet key, no invite. A rate limit is what stops a loop from draining the faucet wallet.

Pass a region (us, ny, eu, asia, sa, tokyo, mumbai, africa) to sit the node next to the people who tap; mumbai runs in Singapore, as Fly has no region in India. Omit it and control picks from the request. One writer, so one region. The first node can 502 for a few minutes: that is the image building, not a broken deploy.

What you keep

The source, the frontend and the users. The on-chain owner of a shipped app is Interlude until you take it: ship --owner 0xYou, then the acceptOwnership() it prints, sent from that wallet. That one is a Monad transaction, so the wallet needs a little testnet MON (faucet). Two steps, so a typo cannot hand the contract to nobody. The owner also chooses where a slash pays out (setSlashBeneficiary). The hub reads it when a session opens: ship --owner points it at you before delegateAll, and a later change applies from the next delegation.

v1 is permissioned: Interlude runs the validator, your node and every seat of the bench that rules on a dispute, so you trust Interlude for uptime and for the verdict on a dispute. The record does not rest on that trust: every batch your node commits lands on Monad with the signed transactions behind it (What is live).

Deployed and delegated it yourself? Control runs a node for an app it did not deploy only once owner() opts in: sign the EIP-191 message interlude:provision:<app lowercase>:<epoch> and pass it with interlude sessions create <app> --signature 0x…. The CLI prints the exact message and a ready cast wallet sign command.

The one URL that is never yours

https://rpc.interludelayer.xyz serves the public Room (eu floor). status() on that node names the demo address, not yours, and does not throw. Point the SDK at the URL ship printed.

Laptop

interlude dev stands up anvil, a hub, a validator and a node on loopback. The published CLI does not ship the node, and the node’s source is not public yet, so interlude dev runs only where INTERLUDE_NODE_BIN names a node binary. The public path is ship.

Hard cases: a constant mapping key, an inherited write with no guard, OpenZeppelin’s Ownable, a contract you cannot redeploy, and the quotas a shipped app runs into. Those are on What will not work.