Liquidation defense that knows when not to act.

A keeper that executes onchain through KeeperHub, prices every rescue against the loss it would actually prevent, and attests the decision to Ethereum mainnet. Holds included, because a keeper that only records its successes is not an audit trail.

4/4
landed under gas underpricing, against 0/4 for a naive baseline
$0
capital used. Mainnet contract deployed on sponsored gas
50
autonomous workflow runs, firing every 50 blocks
4
decisions attested on Ethereum mainnet
This is a static snapshot, taken 2026-08-12 18:33 UTC. It does not update. The live dashboard is a local server (npm run dashboard): it reads a KeeperHub API key, so it cannot be served publicly without handing that key to the browser. Every row below links to a block explorer, where the record is live and verifiable independently of this page.

Landing the transaction is the hard part.

Spotting a position in danger is easy. Getting the rescue mined at 3am during a gas spike is not. So we measured it: identical workloads, same unusable gas price, KeeperHub against plain ethers.js.

ScenarioKeeperHubethers (blind gas limit)ethers (default)
Gas underpricing (0.05 gwei vs ~0.98 market)4/4 landed0/4, all stuckno data
Congestion (4 concurrent from one wallet)4/4 landed1/42/4
Revertall refusedall refusedall refused

Sepolia, 2026-08-02, four trials per cell. One cell reads "no data" rather than 0% because those trials failed on our own network, and charging that to a backend would measure our connection instead of the thing under test. Revert shows no difference and is reported as such rather than dressed up. Method and raw data.

The position, and what the agent decided.

Health factor

1.1200
ARMED

Position

collateral$857.65
debt$574.32
liq. threshold75%

Keeper ammunition

USDC1025.00
LINK86.6600
spent for the position

Economics

P(liquidation)0.74%
expected loss$0.11
rescue cost$1.23
HF 1.120 → ARMED. P(liquidation) 0.74% over next 24h, loss if it happens $14.36, expected loss $0.11. Cheapest rescue ADD_COLLATERAL at $1.23. Ratio 0.1× vs 3× margin: holding, gas not justified yet.

Every decision, on Ethereum mainnet.

Holds are attested as well as rescues. The declined rescues are the interesting judgment calls, and a log that omits them proves nothing.

WhenActionHFExpected loss Rescue costAttestationRemediation
2026-08-04 12:28 UTC HOLD 1.1200 $0.10 $1.24 0xc9d6540b… none, held
2026-08-04 12:26 UTC HOLD 1.3314 $0.26 $0.00 0xcf9fff66… none, held
2026-08-04 12:24 UTC HOLD 1.3314 $0.26 $0.00 0xf6059979… none, held
2026-08-02 12:04 UTC ADD_COLLATERAL 1.0400 $4.74 $1.18 0x2d60efde… 0xc89edff9…

Contract 0x06D8C09B5dbb9f9Bb96B7B20a351cdC5e16644D3, deployed through a CREATE3 factory on sponsored gas (deployment). Storage-free by design, so an attestation costs only the base transaction plus log data.

The watcher, still firing.

A KeeperHub workflow owns the CRITICAL tier server-side, so the position stays defended whether or not anything of ours is running. Showing the 6 most recent of 50.

StartedTriggerStatusStepsTransactions
2026-08-12 18:29 UTC block success 3 none, condition false
2026-08-12 18:18 UTC block success 3 none, condition false
2026-08-12 18:08 UTC block success 3 none, condition false
2026-08-12 17:58 UTC block success 3 none, condition false
2026-08-12 17:48 UTC block success 3 none, condition false
2026-08-12 17:38 UTC block success 3 none, condition false

Most runs do nothing, which is the correct outcome: the condition evaluates false and the workflow stops after three nodes without broadcasting anything.

Read it, or run it.

The whole thing is one repository: the risk model, the chaos harness, the workflows, and a starter template that lands your first KeeperHub transaction with nothing but an API key.