Escapement

Crank monitoring & execution · Solana

Solana doesn’t tick. Something has to.

There is no scheduler and no timer on-chain. Every liquidation, epoch update and cache refresh is an off-chain bot somebody hopes is still running. Escapement watches those cranks, opens an incident the moment one stops — and, when you ask it to, runs them itself.

Watch-only by default · No keys, no program change

Figure 1 — a lever escapement: balance wheel, pallet fork and escape wheel 15 T
Fig. 1 — lever escapement, 18 000 beats/h

es·cape·ment / ɪˈskeɪpmənt / n. — the part of a watch that lets stored force through one counted beat at a time. It doesn’t wind the spring; it makes the spring keep time.

01 — the balance

It meters.

The balance swings and divides time into equal beats. The spring holds the force; the balance decides the pace.

Work happens on schedule — not when somebody remembers.

02 — the pallet fork

It locks.

Between beats the fork locks the train dead. All that stored force sits and waits for permission to move.

Watch-only by default. Nothing signs until you flip one field.

03 — the escape wheel

It counts.

Each release advances the wheel exactly one tooth. Every beat is discrete, recorded, accountable.

Every run publishes a receipt. Every miss opens an incident.

Solana has plenty of stored force — bots, keepers, incentives.
Escapement makes the work happen on schedule, counts every beat, and tells you the moment one goes missing.

Tabula I

When the crank stops, it’s an outage.

Solana programs execute only when a transaction invokes them, so everything that must happen on time is an off-chain bot — usually on the team's own box. One point of failure, an on-call rotation, an RPC bill, and a class of outage nobody gets credit for preventing. When it dies quietly, the first thing that tells you is a user complaint.

  1. E-01 Price / cache refresh Stale past its bound, the program rejects every user transaction. To your users, the venue is simply down.
  2. E-02 Stake pool epoch update One missed run and every deposit and withdrawal fails until it lands.
  3. E-03 Event queue drain Matching stops quietly. Fills strand — and traders notice before you do.
  4. E-04 Liquidation sweep Positions cross underwater and sit there. The bad debt is permanent and socialised.
  5. E-05 Vault rebalance Liquidity drifts out of range and earns nothing — while looking fully deployed.
  6. E-06 Automation escrow The balance runs dry and jobs drop out of the queue with no error at all.
Tabula II

“But the keepers are already incentived.”

Liquidation bonuses, crank rewards, bounties — an incentive proves a keeper market can exist. It does not prove the work is covered. And when it isn’t, the loss lands on the protocol, not on the keeper who stayed home.

¶a

Markets skip both tails.

Work whose reward doesn’t clear fees goes unserved — and so does work too big or too risky for the market to stomach. Both tails are yours to keep.

¶b

Failure is correlated.

Keepers are needed most at the exact moment RPCs degrade, fees spike and blockspace is contested. That is when volunteer infrastructure quits.

¶c

Some work needs capital.

Repaying a borrow takes inventory, not just compute. The fleet thins to a few well-capitalised players — and their appetite, not your risk, decides coverage.

¶d

Nobody is accountable.

An anonymous keeper has no SLA, no pager, and no reason to warn you. You find out from your own bad-debt figure.

Same green dashboard. Two different worlds.

“All served” only says the work got done. It doesn’t say who did it — and that is the difference between redundancy and a single point of failure wearing a green light.

work outstanding: 0 ALL SERVED
world A

A deep keeper market is doing the work. Any one of them can vanish and nothing changes. Green means insured.

work outstanding: 0 ALL SERVED
world B

One anonymous bot is doing the work. The day it stops is the day you learn it existed. Green means lucky.

Escapement tells the two apart by measuring. Work that was outstanding and gone by the next look was served by somebody else — that share is tracked per protocol, over time. Work that stays outstanding is nobody’s, and it opens an incident.

Tabula III

One object. One field.

Watch and Execute are the same object with one field different. Flip it, and Escapement’s managed fleet runs and funds the crank — same schedule, same incidents, same alerts, no rebuild. Try the switch.

escapement.hclWATCH-ONLY
automation "liquidation-backstop" {  target    = "your-lending-market"  condition = health_factor < 1.0  staleness = 300s  # checked even if triggers die  mode      = "watch"}

Nothing signs until you flip this. Execution is run and funded by Escapement — and every send is re-read, re-evaluated and simulated first.

It reads.

  • Reads public account state — no keys, no program change, no audit.
  • Records every observation; you get history, not a red light.
  • Ranks the watchlist: how close each account is, on one scale.
  • Opens an incident the moment the work stops happening.

Needs nothing from you — no keys, no capital. Live in hours.

Tabula IV

Complications.

What a movement does beyond telling time. What a watcher does beyond a red light.

N° 1

The watchlist

Every check knows how far away the line is, not just which side you’re on — ranked on one scale across every crank you run. The positions drifting toward liquidation and the escrow running dry queue up in the same list, before anything crosses.

N° 2

Receipts

Every run publishes why it acted, the numbers behind the decision, and — when it executed — the signature, slot, compute units and fee. Auditable down to the transaction.

N° 3

Read from the programs

Conditions, permission checks and traps are derived from what the deployed program actually enforces — not from documentation that may have drifted. If the chain would reject it, Escapement already knew.

N° 4

Monitoring only, or automated

You choose the mode. Monitoring only never signs — alerts, watchlist and incidents, full stop. Automation is a second, deliberate choice: Escapement runs the crank for you, and every send is re-read, re-evaluated and simulated before it lands.

Tabula V

Built for 3:12 AM.

An incident opens after consecutive failures, at most one per automation, and resolves itself. Alerts that page a human were designed for the hour when a human least wants one.

Only real pages.

A flaky read never wakes anyone. An incident opens when work is genuinely not happening — and it resolves itself the moment it is again.

It fixes, not just reports.

With automation on, Escapement doesn’t page you to run the crank. It runs the crank. Most incidents are over before anyone is awake.

Receipts by morning.

What failed, when it was caught, what was done and what it cost — already in the thread when you sit down with coffee.

Tabula VI

What an integrator needs to know, in sixty seconds.

No integration is step zero.

  1. 0:00

    Nothing to integrate.

    The instructions that matter are permissionless, so watching is reading public state. No program change, no redeploy, no audit, no governance vote — and no conversation required before it starts.

  2. 0:15

    A public status page, per protocol.

    Health, what got done in the last day and by whom, what it cost, and which accounts are approaching a threshold. Linkable in an incident channel, readable by your users.

  3. 0:30

    Push, not polling.

    Webhook or Slack the moment an incident opens and again when it resolves. Signed, retried, delivered at least once.

  4. 0:45

    Watch-only by default.

    Watching never signs and holds no keys. Automation — run and funded by Escapement — is a separate, deliberate switch you may never flip.

Tabula VII

Asked, answered.

The first-call questions, in the order they come up on the first call.

Q-01 Do you need our keys?

No. Monitoring reads public account state and never signs anything. If you turn on automation, the transactions are signed and funded by Escapement’s own managed fleet — you never hand over a key, and there is nothing of yours to custody.

Q-02 Do we have to integrate anything?

No. The instructions that matter are permissionless, so watching is reading public state: no program change, no redeploy, no audit, no governance vote. Alerts arrive by Slack or webhook, and the status page is linkable the moment watching starts.

Q-03 We already run our own bot. Does this replace it?

Keep it — that’s the point. Escapement is built to come second: it measures what your existing bot and the open market actually cover, and takes only the work that falls through. If your bot never misses, all you get is the proof.

Q-04 What happens when a check itself can’t run?

“We could not tell” is reported as its own status, never collapsed into “your crank is late” — a degraded RPC and a dead crank are different problems. And because triggers can die silently, every check carries a staleness bound: the look happens on schedule even when nothing fires it.

Q-05 How fast can we be live?

Monitoring: hours — there is nothing to integrate. Automation: days, most of it deciding thresholds and ceilings with you rather than engineering.

Q-06 What does it cost?

Monitoring starts free, automation tiers scale with cadence and complexity — see the pricing sheet, or talk to us about bespoke work.

See the tariff →

Where it fits

Built to come second.

Keep your bot. Keep the incentives. Keep the keepers you already trust. Escapement doesn’t race the flow that serves your protocol today — it sits behind it, measures what that flow actually covers, and takes only the work that falls through. Being first to a bounty is a trading business. Being there when nobody else is — that’s ours.

Start watching. It reads; it doesn’t sign.

Tabula VIII

Tell us what has to happen on time.

A crank, a keeper, a queue that must never back up — describe it and we’ll tell you what watching it looks like, usually the same day.

Or write to us directly: hello@escapement.dev