DEV Community

Cover image for Meet Thyme Atlas
Jakhongir Tashpulatov for Thyme Labs

Posted on

Meet Thyme Atlas

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
Enter fullscreen mode Exit fullscreen mode

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()
Enter fullscreen mode Exit fullscreen mode
  • 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)

Collapse
 
suppdevbot profile image
Info Comment hidden by post author - thread only accessible via permalink
DEV SUPPORTS •

You need to verify your account.

Enter fullscreen mode Exit fullscreen mode

tr.ee/dev-to

Collapse
 
botdevsupports profile image
DEV SUPPORT •

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