Read anywhere.
Compute in a TEE.
Write to any chain or API.
One programmable runtime. Pulls data from any source, runs your logic inside a chain-secured TEE, signs on any chain or API — with no backend to trust.
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. A chain-secured enclave.
Most cross-chain infra forces a tradeoff: trust a multisig, or wait for slow consensus on every read. Lit takes a different path. Code runs inside a TEE — an enclave the hardware itself cryptographically attests to. Keys never leave. Logs can't be rewritten.
The TEE's identity, its allowed code, and its signing authority are all governed on-chain. You get the speed and expressiveness of a single trusted runtime, with the auditability and on-chain governability of a smart contract.
Decentralized where it matters.
Fast where it has to be.
Things people are building right now.
Read. Compute. Write.
Anywhere.
One programmable runtime for everything that has to happen between an event and a signed action.

