Skip to content
mowro

Docs

The meter account

A program account at ["meter", owner, agent]. It holds the SOL itself; the balance is its lamports above rent. It stores the cap, the window, the start of the current window, what was spent in it, totals, the cut flag, the coin mint and a 24-byte label.

Draws

The agent key signs draw(lamports, memo) with the accounts meter (writable), agent (signer) and to (writable). It is refused when the wire is cut, when spent-in-window plus lamports goes over the cap, or when the meter does not hold that much. The agent key pays the transaction fee from its own balance.

Receipts

Every instruction emits an Anchor event: Opened, ToppedUp, Drew, CapSet, CutSet, Withdrawn, Launched, Collected, Sealed, Closed. The site decodes them from the logs of the meter's latest 40 transactions and keeps only events logged by the Mowro program itself about that meter. Fees pushed onto a meter by calling pump.fun's own collect instruction directly leave no Collected event. Nothing is stored anywhere else.

Sealing

The owner calls seal once; it creates the account ["seal", meter], and no instruction removes it. From then on withdraw and close are refused, and set_cap accepts only a cap that is not higher and a window that is not shorter. Draws work as before.

What the agent key cannot do

Raise the cap, change the window, cut or turn on the wire, withdraw, launch. If the key leaks, it can take what is left of the current window, then one cap per window, until the owner cuts the wire.

The coin

A meter can launch one pump.fun coin with itself as the creator. While the coin trades on the bonding curve, its creator fees collect in pump.fun's creator vault and collect_curve moves them onto the meter. After it graduates, PumpSwap pays them in wrapped SOL; collect_amm collects them into the meter's WSOL account and the meter signs to close it, so they land as SOL. Anyone can call either one, and both emit Collected. A meter that launched a coin cannot be closed: it stays the coin's creator.

Agent side

Install @solana/web3.js, then run node draw.js <meter> <to> <sol> "memo". It reads the agent keypair from ./agent.json unless MOWRO_AGENT points elsewhere, and uses the public mainnet RPC unless MOWRO_RPC is set. The agent key pays its own transaction fees, so keep about 0.01 SOL on it. On success it prints JSON with the signature; on failure it prints the program's error to stderr and exits with code 2. Download draw.js

Honest limits

The owner is a single key and, until the meter is sealed, can raise the cap or withdraw everything. The program is still upgradeable by its deploy key. Windows are fixed and checked against the chain clock. A meter holds SOL only. Receipts are as public as the chain, which is the point.