PTB-VM

Chain programs
like Lego.

Snap independent Solana programs into one atomic transaction. Each call's on-chain result flows straight into the next.

Sui does this natively. Solana couldn't. PTB-VM is the neutral substrate that brings it to the SVM, with a register file, result piping, and a hot-potato gate.

you type 100swap → 150deposit 150

The swap makes 150 on-chain, the deposit receives 150. You never type 150.

How it works

A plan is a stack of bricks.

Each brick is one program call. Snap them in order and the runtime result of one feeds the next, held on-chain in a register file and never round-tripped through your client. The whole stack lands as a single atomic transaction.

Step. One program call. Its return value can be captured.

Register. Carries a runtime value from one step into the next.

Gate. Any obligation you open must be settled, or the whole tx reverts.

A tower of Lego bricks stacked in order.

Sui chains call results natively.
Solana never could.

On Solana, top-level instructions run independently. There is no way to feed one step's runtime output into the next without your own program, so every team hardcodes its own router. PTB-VM does it once, for any program.

Recipes

Pre-built plans. One click.

A recipe is a plan someone already assembled for you. Connect a devnet wallet and run it.

devnet live

Swap → Deposit

Swap an amount through an on-chain rate, then deposit exactly what came out into a vault. You enter 100; the swap produces 150 on-chain; the vault receives 150. You never type 150.

swap → capture result
vault.deposit(result)
composable

Token-2022 transfer → action

Move a Token-2022 asset, fees and hooks intact, as a plan step, then trigger a follow-up against the result. Token-2022 is a first-class brick with zero special-casing.

token2022.transfer_checked
next step on result
obligation gate

Borrow → use → settle

Open an obligation, use the borrowed value across unrelated programs, settle before the transaction ends. If the obligation isn't closed in-plan, the whole tx reverts.

open obligation
use across programs
close, or revert

Who it's for

Build the flow, not the plumbing.

Frontend-only teams

Compose multiple programs in one tx without deploying a router program of your own.

DeFi builders

Pipe a swap's real output into a deposit, atomically, instead of round-tripping the amount through your client.

Token-2022 issuers

Chain transfers with fees and hooks into multi-step flows. Token-2022 composes as a step.

Macro shot of a Lego brick's studs.

Anatomy of a step

Every brick has the same studs.

programthe program this step calls
accountsfixed pubkeys, or a pubkey produced by an earlier step
datathe inner instruction data
captureIntostore this step's u64 return value in register N
dataSplicesoverwrite bytes of data with register N (e.g. an amount)
obligationopen / close the hot-potato counter

The honest limit

This is the achievable subset, not full Sui PTB.

Solana needs every account a transaction touches listed upfront, so the runtime can schedule work in parallel. That rules out Sui's trick of deriving a brand new account mid-transaction and calling into it. PTB-VM pipes what Solana actually lets you pipe: u64 values and PDAs computed from data you already have.

What pipes

A step's u64 return value, and PDAs derived from known seeds. Enough for swap → deposit, borrow → settle, and Token-2022 flows.

What doesn't

Arbitrary runtime accounts a step invents on the fly. Those have to be known before the transaction is sent.

One signature. N programs. One atomic tx.

On-chain

Proven, not promised.

The core mechanic runs on devnet today: a swap's on-chain output piped into a vault deposit, in one transaction, with no router. v1 is a reference implementation. Signer delegation and typed registers are the v2 roadmap.

Devnet
Live today
8 slots
Register file
Native
Token-2022
None
Router needed

The builder

Open the bin.
Start snapping.

Assemble a plan in the 3D builder, or run a pre-built recipe with one click. Connect a devnet wallet and watch a multi-step transaction execute atomically.