If your app shows onchain data like balances, positions, trade history or vault TVL, you've probably either scanned blocks yourself or run a Graph Node. Both mean babysitting infrastructure instead of shipping features.
Thyme Atlas hosts your subgraphs. You deploy with the Graph CLI you already use, Atlas indexes your contracts on managed Graph Nodes, and you query decoded events and entity state over GraphQL. There's no node to run and no instance to size.
Atlas is part of thyme/labs, in the same workspace as our RPC (Gate) and onchain automation (Flow).
Keep the Graph CLI, change the node
Your subgraph.yaml, schema and mappings stay as they are. Atlas accepts the same build and IPFS upload that graph-cli already produces.
1. Create a subgraph
Name it in the console. It lives in a project, with the same members and billing as the rest of your workspace.
2. Create a deploy key
Deploy keys belong to the project. The secret is shown once, and revoking a key stops new deploys within seconds.
3. Run graph deploy
graph codegen && graph build
graph deploy my-subgraph \
--node https://deploy.atlas.thymelabs.io/ \
--ipfs https://ipfs.atlas.thymelabs.io/api/v0 \
--deploy-key "$ATLAS_DEPLOY_KEY" \
--headers "{\"Authorization\":\"Bearer $ATLAS_DEPLOY_KEY\"}" \
--version-label v1
That uploads the build, creates a release and starts indexing.
One endpoint, keys you control
Every subgraph gets an HTTPS GraphQL endpoint. It works with Graph Client, Apollo, urql or plain fetch. Send a query key as a bearer token:
const res = await fetch(process.env.ATLAS_QUERY_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${process.env.ATLAS_QUERY_KEY}`,
},
body: JSON.stringify({ query: '{ vaults(first: 5) { id tvl } }' }),
})
const { data } = await res.json()
- You can scope a query key to a whole project or to a single subgraph.
- Revoked keys stop working within seconds.
- Every release has a GraphiQL playground, so you can test queries before you write code.
Ship the next version without downtime
Re-indexing usually means downtime or juggling two endpoints. In Atlas, each deploy is an immutable release that indexes alongside production:
- You can follow indexing progress, health and errors for each release.
- Once the new release has caught up, promote it. Your production endpoint switches to it.
- If something looks wrong, roll back to the previous release in seconds.
Your app keeps querying the same URL the whole time.
Supported networks
Atlas indexes these chains from nodes we run ourselves. In subgraph.yaml, set the network to the name Graph Node expects:
| Network |
network: value |
Chain ID |
|---|---|---|
| Ethereum | mainnet |
1 |
| Ethereum Sepolia | sepolia |
11155111 |
| Polygon | matic |
137 |
| Polygon Amoy | polygon-amoy |
80002 |
| Optimism | optimism |
10 |
| BNB Smart Chain | bsc |
56 |
| Unichain Sepolia | unichain-testnet |
1301 |
Need another chain? Email support@thymelabs.io and tell us which one.
Indexing a large protocol or need dedicated capacity? Talk to us about enterprise.
Try it
Deploy a subgraph: https://atlas.thymelabs.io
Bring the subgraph, and we'll run the node. Got a subgraph you'd like to move over? Tell us in the comments. 👇
Top comments (7)
tr.ee/dev-to
hello
Some comments may only be visible to logged-in visitors. Sign in to view all comments. Some comments have been hidden by the post's author - find out more