Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Deploy Prebuilt Adapters on Railway – Absinthe Docs
Skip to content

Deploy Prebuilt Adapters on Railway

Total time: ~20-30 minutes (assuming you have accounts set up)


Time Breakdown

PhaseTimeWhat You'll Do
1. Gather Credentials~10 minGet API keys and RPC URL
2. Generate Config~5 minFill form, select trackables, generate
3. Deploy on Railway~5 minSet env vars, click deploy
4. Verify~5 minCheck logs and dashboard

Why Railway?

Railway is the recommended deployment platform for Absinthe adapters because:

  • One-Click Deployment: Use pre-configured templates for instant setup
  • Automatic Scaling: Railway handles infrastructure automatically
  • Easy Environment Variables: Simple UI for managing secrets
  • Built-in Logging: Monitor your adapter in real-time
  • Cost-Effective: Pay only for what you use
  • No DevOps Required: Focus on your adapter config, not infrastructure

Phase 1: Gather Credentials (~10 min)

Before you start, collect these four items. If you already have them, skip to Phase 2.

1.1 Absinthe API Key (~2 min)

⚠️ IMPORTANT: Get your API key from the CMO request query that has been shared with you.

The API key will be provided in the integration brief link shared by your CMO. This link contains all the necessary campaign context and API credentials.

If you need to access it directly:

  1. Visit app.absinthe.network and log in
  2. Go to your organization → Campaigns
  3. Select your campaign → API Key Access
  4. Copy your API key

1.2 RPC URL (~3 min)

You need an RPC endpoint for your blockchain. Sign up for one if you don't have it:

ChainProviders
EthereumAlchemy, Infura, QuickNode
BaseAlchemy, QuickNode
ArbitrumAlchemy, Infura
PolygonAlchemy, Infura

Your RPC URL will look like:

https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY

1.3 CoinGecko API Key (~3 min)

Required for price feed functionality:

  1. Go to coingecko.com/api/pricing
  2. Sign up for a Pro account
  3. Copy your API key

1.4 Railway Account (~2 min)

  1. Sign up at railway.app
  2. Connect your GitHub account (optional but recommended)

Checkpoint: You should now have:

  • Absinthe API Key
  • RPC URL
  • CoinGecko API Key
  • Railway account

Phase 2: Generate Config (~5 min)

2.1 Open the Config Generator

Go to: Config Generator

2.2 Select Your Adapter Type

Choose the adapter that matches your protocol:

AdapterUse For
ERC20 HoldingsTrack token balances
Uniswap V2AMM with fungible LP tokens (swaps + LP positions)
Uniswap V3AMM with NFT positions (swaps)

2.3 Fill in the Required Fields

  • Contract/Pool address: Your protocol's main contract
  • Chain: Select the blockchain
  • From Block: Auto-detected for most chains, or enter manually

2.4 Select Trackables

After filling in the required fields, you'll be prompted to select which activities you want to track:

Available trackables by adapter:
  • ERC20 Holdings: Token Holdings
  • Uniswap V2: Swap Trackable, LP Trackable
  • Uniswap V3: Swap Trackable

Select the trackables you want to monitor. All trackables are selected by default, but you can uncheck any you don't need.

2.5 Generate the Configuration

Click "Generate Config" → Copy the INDEXER_CONFIG (base64 encoded)


Checkpoint: You should now have:

  • INDEXER_CONFIG value copied

Phase 3: Deploy on Railway (~5 min)

3.1 Open Railway Template

Click: Railway Template

Railway template

3.2 Set Environment Variables

Add these four required environment variables:

VariableValueWhere You Got It
INDEXER_CONFIG(paste your base64 config)Config Generator (Phase 2)
RPC_URL(your RPC endpoint)Alchemy/Infura (Phase 1)
ABSINTHE_API_KEY(your API key)Absinthe Dashboard (Phase 1)
COINGECKO_API_KEY(your CoinGecko key)CoinGecko (Phase 1)

3.3 Deploy

Click "Deploy" in Railway.

Railway will:

  1. Build a Docker container (~2-3 min)
  2. Inject your environment variables
  3. Start the adapter

Checkpoint: Deployment started. Proceed to Phase 4.


Phase 4: Verify (~5 min)

4.1 Check Railway Logs

  1. Go to your project in Railway
  2. Click on the deployment
  3. View logs
Look for these success messages:
  • ✅ "Indexer started"
  • ✅ "Processing block X"
  • ✅ "Connected to RPC"

Railway logs

4.2 Monitor Indexer Status

Once you see the indexer running successfully in Railway logs, monitor it for 2-5 minutes to ensure it's processing blocks without errors.

Once verified:
  • ✅ Indexer is running green (no errors in logs)
  • ✅ Processing blocks continuously
  • ✅ Connected to RPC successfully

You can now inform your CMO to check the adapter directly in the app-dashboard. The CMO will verify that events are being received and the adapter is visible in the campaign.

4.3 Initial Sync


Checkpoint: You should see:

  • Railway logs show "Indexer started"
  • No errors in logs
  • Indexer running green for 2-5 minutes
  • CMO notified to verify in app-dashboard

You're Done!

Your adapter is now:

  • Monitoring new blocks in real-time
  • Processing events as they occur
  • Sending data to Absinthe continuously

Next step: Once you've verified the indexer is running green for 2-5 minutes, inform your CMO to check the adapter in the app-dashboard. The CMO will handle the final verification and point distribution configuration.


Troubleshooting

If something went wrong, find your symptom below.

Quick Diagnosis

SymptomLikely CauseFix Time
Adapter not startingMissing env vars~2 min
"Invalid API Key" errorWrong API key source~2 min
"RPC Connection Failed"Bad RPC URL~5 min
"Contract Not Found"Wrong address or chain~2 min
No data in AbsintheAdapter not synced yetWait 5-10 min
Slow syncLarge block rangeWait (can be hours)

"Invalid API Key" Error (~2 min fix)

Cause: Using wrong API key

Fix:
  1. Check the CMO request query link that was shared with you for the correct API key
  2. If needed, go to app.absinthe.network
  3. Navigate to your campaign → API Key Access
  4. Copy the API key
  5. Update ABSINTHE_API_KEY in Railway
  6. Redeploy

"RPC Connection Failed" (~5 min fix)

Cause: Invalid or expired RPC URL

Fix:
  1. Verify your RPC URL includes your provider's API key
  2. Check your RPC provider account is active (not rate-limited)
  3. Test the RPC URL in your browser or with curl
  4. Try a different provider if needed
Test your RPC:
curl -X POST YOUR_RPC_URL \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

"Contract Not Found" (~2 min fix)

Cause: Wrong contract address or chain mismatch

Fix:
  1. Verify the contract address is correct (check on block explorer)
  2. Ensure you selected the correct chain in the config generator
  3. Confirm the contract exists on that chain

"fromBlock Not Found" (~2 min fix)

Cause: Chain doesn't support automatic block lookup

Fix:
  1. Find the contract creation block on a block explorer (e.g., Etherscan)
  2. Re-generate config with manual fromBlock value
  3. Update INDEXER_CONFIG in Railway
  4. Redeploy

Adapter Crashes After Deploy (~5-10 min fix)

Cause: Various — check logs for specifics

Fix:
  1. Go to Railway → your deployment → Logs
  2. Look for the specific error message
  3. Common fixes:
    • Missing env var → Add it and redeploy
    • Invalid config → Re-generate config
    • RPC rate limit → Upgrade RPC plan or use different provider

Quick Reference

Environment Variables Checklist

# All four are required
INDEXER_CONFIG=<base64_encoded_config>  # From config generator
RPC_URL=<your_rpc_endpoint>             # From Alchemy/Infura/QuickNode
ABSINTHE_API_KEY=<your_api_key>         # From app.absinthe.network
COINGECKO_API_KEY=<your_cg_key>         # From coingecko.com

Useful Links

ResourceLink
Config Generatorauto-adapter-forge.vercel.app
Railway Templaterailway.com/new/template/zonal-gentleness
Absinthe Dashboardapp.absinthe.network
CoinGecko APIcoingecko.com/api/pricing

Summary

PhaseTimeStatus
1. Gather Credentials~10 min
2. Generate Config~5 min
3. Deploy on Railway~5 min
4. Verify~5 min
Total~20-30 min

Once verified, return to the Absinthe App to configure point distribution rules.