RunwayLadder Status ↓

Fixed income for onchain treasuries · Solana

Income a treasury can put in a budget.

Deposit stablecoins once and get a schedule of fixed amounts on fixed dates — set when you deposit, not a floating APY. When a date arrives, the money comes back to you or rolls to the far end of the schedule, without you signing again.

Where it runs today ↓

Local validator only · not on devnet yet · not audited.

The first four rows of a real schedule
DatePromisedArrivedStatus
09:29:1799,750.01948499,750.019484Rolled forward
09:30:1799,750.03466799,750.034667Rolled forward
09:31:1799,750.04984999,750.049849Rolled forward
09:32:1799,750.06503299,750.065032Rolled forward
A real run on a local validator, 2026-10-05, times in UTC. Every row was rolled forward by the keeper. Dates are a minute apart so two full cycles fit in one run.
The schedule

Two cycles. Nobody signed after the deposit.

400,000 opened across 4 dates in 1 signature. In the run that timed it, the chart updated 0.04 s after confirmation.

Every rung of the rolling schedule across two cycles
RungDatePromisedArrivedStatus
Opened by the treasurer
109:29:1799,750.01948499,750.019484Rolled forward
209:30:1799,750.03466799,750.034667Rolled forward
309:31:1799,750.04984999,750.049849Rolled forward
409:32:1799,750.06503299,750.065032Rolled forward
Cycle 1 — rolled by the keeper
509:33:1799,500.70400599,500.704005Rolled forward
609:34:1799,500.71965499,500.719654Rolled forward
709:35:1799,500.73429499,500.734294Rolled forward
809:36:1799,500.74969199,500.749691Rolled forward
Cycle 2 — rolled by the keeper
909:37:1799,252.012420—Open
1009:38:1799,252.027527—Open
1109:39:1799,252.042382—Open
1209:40:1799,252.057237—Open

Each roll opens a new rung and pays the same 0.25% issue fee as the deposit did — nothing on top — so each cycle promises that much less.

8 rolls by the keeper, 0 signatures from the treasurer after the deposit.

A second schedule, redeemed by its owner

399,000.169032forecast before redemption

399,000.169032received

0difference

Amounts in the deposited token’s units. Up to 11 dates fit in one signature; a 12th breaks the transaction size limit.

When the source pays less

A shortfall is paid in one order, and you see it before it is paid.

  1. 1The protocol buffer — filled by fees and by any yield above the promise.
  2. 2If the buffer is empty, every rung of that date is cut by the same ratio.

Paid less than promised, unmarked, is not a state the program can be in: the rung becomes redeemed with deficit, and the dashboard shows the amount that will actually arrive before you redeem.

The dashboard's rung table. Rung 1 is labelled “Deficit expected” and rung 2 “Deficit · awaiting redemption”; each shows 100,000.00 with “of 100,000.01… promised” beneath it.
The dashboard in network mode, on a local validator.

Simulated rate paths, including the rate halving

400paths

303paid in full

97marked short

0short and unmarked

Simulated — this proves the rule, not how a real market behaves.

Who signs what

Three parties, and what each can and cannot do.

Treasurer

Open the schedule in one signature. Redeem a matured rung. Turn rolling off at any time, without touching rungs already issued.

Be assumed to hold one key — the owner can be a multisig.

Keeper

Run by anyone. Settle matured dates and roll the rungs of schedules set to roll.

Send money anywhere: a roll has no destination parameter — the new rung lands in the same schedule, with the same owner.

Operator

Set the rate of each date. The rate, who set it and when are on screen before you sign.

Be a market price. This is a deliberate point of trust.

A full cycle — open across 4 dates, 4 redemptions

45,000lamports in network fees

$0.011at $250/SOL

Account rent is separate and not returned today: 0.0093 SOL per 4-date schedule, 0.0019 SOL per roll.

Terms

Terms you accept.

  1. 1No early exit. Money is locked until its date. There is no way to get it out sooner today.
  2. 2The rate comes from a set adapter, not from Kamino. The schedule cannot tell them apart; the live source is the next milestone.
  3. 3The operator sets the rate. The program enforces the promise, not that the promise was a fair price.
  4. 4Early dates are thinly protected. The buffer starts with fees only.
  5. 5Rent is not returned yet. Closing a finished schedule to get it back is planned, not built.
  6. 6Not audited. The demo never goes to mainnet.
  7. 7No multisig run yet. The design allows a Squads safe as owner; no run has used one.
Status

Where it runs today.

On a local validator. Every figure on this page comes from runs there, except the simulated rate paths, which say so.

A public devnet link comes with the next milestone.

Dashboard prototype — mock data →

It reads no network and says so in its status bar.