Sign on any chain, only by your rules.
Keys no one can extract. Not even us.
Deploy your code once and the Lit Protocol runs it in a sealed TEE, secured by the chain. No servers for you to run, no operator to trust.




Control you can prove, not promise.
We operate the network, but operating it grants no access.
Keys are generated and used only inside sealed TEEs. No operator, including Lit, can see or extract them.
A key’s authority is on-chain state on Base. It signs only what an immutable, content-addressed policy permits. Code, not an admin switch.
Every signature is a hardware-attested record, hardened by Proof of Cloud. Confirm the exact code running in the enclave.
There is no trusted operator. We run the network. On-chain rules and sealed hardware enforce it, in the open where anyone can check.
Where this matters most.
Code-enforced, on-chain key control built for the GENIUS Act, verifiable by your own auditors.
A policy gate in a TEE that signs only the inventory moves your rules allow.
Mint, burn, freeze and seize, bound to immutable policy and provable to an auditor.
One file. Reads, computes, signs across chains.
A Lit Action is JavaScript that runs inside the network’s TEE. Deploy it once. Sign with a wallet bound to the action code itself, or with one you control through your own on-chain governance.
// Inside a Lit Action — runs in a chain-secured TEE
// Read off-chain
const price = await fetch(
"https://api.coinbase.com/v2/prices/ETH-USD/spot"
).then(r => r.json());
// Read on-chain (Base)
const base = new ethers.providers.JsonRpcProvider(BASE_RPC);
const vault = new ethers.Contract(vaultAddress, vaultAbi, base);
const ratio = await vault.currentRatio();
// Decide, then sign + broadcast on Arbitrum
if (Number(price.data.amount) * Number(ratio) < threshold) {
const pk = await Lit.Actions.getLitActionPrivateKey();
const arb = new ethers.providers.JsonRpcProvider(ARB_RPC);
const wallet = new ethers.Wallet(pk, arb);
const hook = new ethers.Contract(hookAddress, hookAbi, wallet);
const tx = await hook.rebalance();
Lit.Actions.setResponse({ response: tx.hash });
}Speed of a backend, trust of a contract.
Your code runs in hardware, so it moves at backend speed. Its authority lives on-chain: smart contracts on Base decide which keys it can use and which code is allowed to run, with every change auditable on Basescan and impossible for any one party to push alone.
Read. Compute. Write.
Anywhere.
One programmable runtime for everything that has to happen between an event and a signed action.

