Mainnet · v3 live

Lend and borrow onchain. No counterparty, no paperwork.

Over-collateralized lending markets — supply assets to earn yield from borrowers, or borrow against collateral. Rates set algorithmically by utilization; interest accrues every block.

Sepolia testnet open for builders
TVL
$2.4B
Markets
28 assets
Supply APY
up to 8.42%
variable · by utilization
Loans outstanding
$840M
accruing per block
Securing $2.4B onchain across 28 markets
Linnea Forecast Glide Mercury Brightwave Nimbus Halcyon Tideline Lattice
Audited · OpenZeppelin Audited · Spearbit Immunefi bounty · up to $1M Formally verified rate model
The app

One panel. Supply or borrow in two clicks.

Keel Markets
0x4f2a…a821
Supply Borrow
You supply Wallet · 12,500.00
5,000.00
U USDC
≈ $5,000.00
25% 50% Max
Supply APY
4.18%
Pool utilization
71.4%
USDC APY · 30d +0.34%

Est. gas ~0.0011 ETH · interest accrues from the next block

All markets Supply APY
U
USDC
USD Coin
4.18%
$612.4M supplied
Ξ
ETH
Ether
1.92%
$948.1M supplied
฿
wBTC
Wrapped Bitcoin
0.74%
$421.7M supplied
DAI
Dai Stablecoin
4.05%
$203.9M supplied
Borrow position Borrow tab
Collateral · ETH
12.40
≈ $41,168
Borrowing · USDC
18,000
5.61% APY
1.84 HEALTH
Safe

Liquidation occurs if health factor drops below 1.00.

Liq. price
$1,968.40
Max LTV
82.5%
Connect a wallet
MetaMask
Browser extension
Detected
Rainbow
Mobile · QR connect
Coinbase Wallet
Extension · mobile
WalletConnect
300+ wallets
Ledger
Hardware wallet

Keel never holds your keys. Connecting only grants read access until you sign a transaction.

How it works

Supply, earn, borrow, repay — all onchain

Every step is a contract call. No intermediary takes custody; the pool contract holds the assets and the rate model sets the price.

1 → KeelPool

Supply an asset

Deposit USDC, ETH, or another listed asset into its pool. You receive a yield-bearing balance representing your share.

supply(asset, amount)
2 InterestRateModel

It earns yield

Borrowers pay interest into the pool. The rate moves with utilization — more demand, higher yield to suppliers.

rate = f(utilization)
3 → KeelPool

Borrow against it

Use your supplied assets as collateral and borrow another asset, up to that market's loan-to-value limit.

borrow(asset, amount)
4 → KeelPool

Repay & withdraw

Repay anytime — interest accrues per block, never in fixed terms. Withdraw your supply whenever pool liquidity allows.

repay() · withdraw()
Typical action costs ~0.0008–0.0014 ETH in gas · all calls are atomic and revert on failure
Protocol design

Built conservative, by construction

Keel's safety properties are enforced in the contracts, not in policy. Six design choices keep markets solvent.

Over-collateralized only

Every loan is backed by more value than it draws. There is no unsecured credit and no whitelist — collateral is the only requirement.

Per-block interest accrual

Interest compounds every block — roughly every 12 seconds — so balances are always current. No fixed terms, no maturity dates.

Isolated risk markets

Each asset's exposure is ring-fenced. A failure or depeg in one market cannot drain liquidity from the others.

Automated liquidation engine

When a position falls below its health threshold, liquidators repay debt for a fixed bonus — keeping every pool fully solvent.

No lockups

Supplied assets are never frozen. Withdraw the moment pool liquidity allows — there is no notice period and no early-exit fee.

Composable pools

Pools expose an ERC-4626-style interface. Other protocols can route through Keel without integration overhead or special permissions.

For developers

Integrate the pools

The TypeScript SDK wraps every pool action — supply, borrow, repay, and live rate reads — in a typed client. No ABI wrangling, no manual encoding.

  • Typed bindings generated from verified contract ABIs
  • Read APY, utilization, and health factor with one call
  • Works with viem, ethers, and any EIP-1193 provider
integrate.ts
// install: npm i @keel/sdk
import { KeelClient } from '@keel/sdk';

const keel = new KeelClient({
  chain: 'mainnet',
  rpcUrl: process.env.RPC_URL,
});

// open the USDC pool
const pool = await keel.pool('USDC');

// supply 5,000 USDC
await pool.supply({ asset: 'USDC', amount: 5_000n });

// borrow against ETH collateral
await pool.borrow({ asset: 'USDC', amount: 1_800n });

// read the live supply APY
const apy = await pool.getApy();
console.log(apy.supply); // 0.0418
Onchain · live
$2.4B
Total value locked
$14.8B
Cumulative volume
408,212
Lenders & borrowers
18,408
Liquidations handled
Indexed at block 21,840,662 · updates every block
Security

Reviewed line by line

Keel's contracts have been independently audited, the interest-rate model formally verified, and every deployment published onchain. Reports are public before any code reaches mainnet.

OpenZeppelin
Full protocol audit
Feb 2026
Spearbit
Liquidation engine audit
Dec 2025
Immunefi
Bug bounty · live
up to $1M

Formal verification

The interest-rate model is machine-checked: its solvency invariants hold for every possible utilization input.

Verified onchain

Every contract's source is verified on Etherscan. The bytecode you interact with matches the audited code.

Non-custodial

No admin can move user funds. Assets sit in pool contracts; only the depositor's signature can withdraw them.

Honest risk note

Deposits are not risk-free. Smart-contract bugs and the liquidation mechanism can both cause loss — assess the risk before supplying.

Every contract verified onchain
Governance

Markets decided in the open

Which assets list, and the risk parameters attached to them, are decided by KEEL token holders. A proposal is discussed on the governance forum, then settled by an onchain vote.

The KEEL token is the voting mechanism for these parameters and nothing more — it carries no claim on protocol revenue and is not a promise of return. Governance sets the rules; the contracts enforce them.

Loan-to-value
Per-asset borrow ceiling
Liq. threshold
Where positions become unsafe
Supply / borrow caps
Maximum market size
Rate curve
Utilization-to-APY shape
KIP-47 · Onchain proposal Voting live

List wstETH market — set LTV to 78%

Add a wstETH lending market with a 78% loan-to-value, an 82% liquidation threshold, and a $120M supply cap.

For 81.6% · 12.4M KEEL
Against 13.1% · 2.0M KEEL
Abstain 5.3% · 0.8M KEEL
Quorum
Reached
Ends in
2d 06h
Voters
1,904
Executes via KeelGovernor 0x9a3f…9D04
FAQ

Questions, answered plainly

What's the risk — can I lose my deposit?

Yes — supplying to Keel is not risk-free. The two main risks are smart-contract risk (a bug in a contract, despite audits and formal verification) and mechanism risk (in extreme volatility, liquidations may not fully cover a position). Pools are isolated so a problem in one market does not spread, but you should only supply what you can afford to have at risk.

How does liquidation work, and at what threshold?

Each position has a health factor — the ratio of collateral value (weighted by the liquidation threshold) to borrowed value. When it falls below 1.00, the position is eligible for liquidation. Anyone can act as a liquidator: they repay part of the debt and receive collateral plus a fixed bonus in return. This keeps the pool solvent. Liquidation thresholds are set per asset by governance — typically a few percent above the maximum borrow LTV.

Are interest rates fixed or variable?

Variable. The InterestRateModel sets a rate from the pool's utilization — the share of supplied liquidity currently borrowed. As utilization rises, both the borrow rate and the supply yield increase, which draws in more suppliers and discourages further borrowing. Because it recalculates every block, the APY you see is a live reading, not a quoted term.

Who can change the risk parameters?

Only KEEL token holders, through onchain governance. Changes to loan-to-value ratios, liquidation thresholds, supply and borrow caps, or the rate curve must pass a vote that meets quorum, then execute through the KeelGovernor contract. No individual or team can change a parameter unilaterally, and every executed change is recorded onchain.

What audits has the protocol had?

The v3 contracts were audited by OpenZeppelin in February 2026 (full protocol scope) and by Spearbit in December 2025 (focused on the liquidation engine). The interest-rate model has also undergone formal verification. An Immunefi bug bounty of up to $1M runs continuously, and all audit reports are published in the documentation before code is deployed to mainnet.

Mainnet · v3 live

Put your assets to work. Or borrow against them.

Open a position in under a minute. Non-custodial, over-collateralized, and verifiable onchain.

Every contract verified onchain