Changelog
Follow @goldskyio on Twitter to stay updated on everything we ship.
Build durable onchain products, fast

Goldsky has always been the fastest way to read blockchain data. Today we're launching the other half: Compose, a new product for writing durable onchain operations in TypeScript.
Build oracles, keepers, cross-chain automation, payment flows, prediction market resolution, or anything else that moves data and money between offchain and onchain. You write the logic. Compose handles wallets, gas, retries, state, and tracing so you can ship in days instead of months.
One line of code, one wallet, 100+ chains
No key management. No funding scripts. No balance monitors. Call evm.wallet() and you get a persistent smart wallet with gas sponsoring on by default, backed by Goldsky Edge RPC across every major EVM chain.
const wallet = await evm.wallet({ name: 'my-wallet' })
Under the hood it's EIP-7702 + ERC-4337, billed monthly in fiat. Bring your own EOA if you prefer.
Transactions that don't double-send or silently fail
Compose tasks run in sandboxed, durable execution environments. If a task crashes mid-run, it picks up where it left off. Every external call is deterministically cached within a run, so completed steps replay their result instead of re-executing. For anything involving money, this is the difference between sleeping through the night and getting paged at 3am.
retry_config:
max_attempts: 3
initial_interval_ms: 1000
backoff_factor: 2
Retry policies are configurable at both the individual call level and the task level.
Trigger tasks from anywhere
Cron schedules, HTTP endpoints, or live onchain events. Mix and match on a single task. Onchain triggers fire the moment a matching log is emitted:
triggers:
- type: 'onchain_event'
network: 'base'
contract: '0xb74de3F91e04d0920ff26Ac28956272E8d67404D'
events:
- 'Transfer(address,address,uint256)'
Every execution, fully traced
Every external call your task makes is logged with inputs, outputs, and timing. When someone asks what your system did at 2:47am last Tuesday, you open the dashboard, step through the trace, and show them. Five-minute answer instead of a three-day archaeology project. For compliance-sensitive workflows, these traces are your audit artifact.
Built-in state that scales with you
Tasks get a document store out of the box. SQLite locally, isolated Postgres when deployed. Same API, same code:
const prices = await collection<Price>('prices', [
{ path: 'symbol', type: 'text' },
{ path: 'ts', type: 'numeric' },
])
await prices.insertOne({ symbol: 'BTC', usd: 67234, ts: Date.now() })
Same code: local and cloud
Your task code doesn't change between environments. Develop locally against forked mainnet state with goldsky compose start --fork-chains, then deploy to cloud with goldsky compose deploy.
Get started today
Three commands to your first Compose app:
curl https://goldsky.com | sh
goldsky compose install
goldsky compose init
Explore the quickstart, build a Bitcoin oracle, copy-trade Polymarket whales, or dive into the full docs. Migrating from Gelato? There's a migration guide for that.