Skip to main content
Get Amp querying blockchain data in under 5 minutes using solo mode with zero configuration.

Prerequisites

  • Linux or macOS (Windows via WSL2)
  • Internet connection for downloading data
  • ~2GB free disk space for initial setup

Quick Start

1

Install Amp

Install Amp using the official version manager ampup:
curl --proto '=https' --tlsv1.2 -sSf https://ampup.sh/install | sh
Restart your terminal or run:
source ~/.zshenv  # or ~/.bashrc for bash
Verify the installation:
ampd --version
2

Start Amp in solo mode

Solo mode runs all components (server, worker, controller) in a single process with auto-managed PostgreSQL:
ampd solo
Solo mode automatically creates and manages a PostgreSQL instance in .amp/metadb/ — no manual database setup required!
You should see output indicating the services are starting:
Starting Amp in solo mode...
PostgreSQL started at .amp/metadb/
Server listening on http://0.0.0.0:1603 (JSON Lines)
Server listening on http://0.0.0.0:1602 (Arrow Flight)
Admin API listening on http://0.0.0.0:1610
3

Register an EVM RPC dataset

Open a new terminal and register a dataset to extract Ethereum mainnet data:
ampctl datasets register \
  --namespace "quickstart" \
  --name "eth_mainnet" \
  --version "v1" \
  --type "evm-rpc" \
  --network "ethereum-mainnet"
This creates a dataset definition but doesn’t start extraction yet. You need to deploy it next.
4

Deploy the extraction job

Deploy the dataset to start extracting blockchain data:
ampctl datasets deploy \
  --namespace "quickstart" \
  --name "eth_mainnet" \
  --version "v1" \
  --start-block 18000000 \
  --end-block 18001000
This extracts blocks 18,000,000 through 18,001,000 (1,000 blocks). Check job progress:
ampctl jobs list
Wait for the job status to show Completed (usually takes 1-2 minutes for 1,000 blocks).
5

Query the data

Once extraction completes, query your data via the JSON Lines endpoint:
curl -X POST http://localhost:1603 \
  --data 'SELECT number, timestamp, hash FROM "quickstart/eth_mainnet".blocks LIMIT 5'
You should see JSON Lines output with blockchain data:
{"number":18000000,"timestamp":1696291295,"hash":"0x123..."}
{"number":18000001,"timestamp":1696291307,"hash":"0x456..."}
Try more complex queries:
# Get recent transactions
curl -X POST http://localhost:1603 \
  --data 'SELECT block_number, "from", "to", value 
          FROM "quickstart/eth_mainnet".transactions 
          LIMIT 10'

# Query logs
curl -X POST http://localhost:1603 \
  --data 'SELECT block_number, address, topics 
          FROM "quickstart/eth_mainnet".logs 
          WHERE block_number >= 18000000 
          LIMIT 10'

Query via Arrow Flight (Python)

For high-performance queries, use the Arrow Flight endpoint:
import pyarrow.flight as flight

# Connect to Arrow Flight server
client = flight.FlightClient("grpc://localhost:1602")

# Execute query
query = 'SELECT * FROM "quickstart/eth_mainnet".blocks LIMIT 10'
flight_info = client.get_flight_info(
    flight.FlightDescriptor.for_command(query)
)

# Read results
reader = client.do_get(flight_info.endpoints[0].ticket)
table = reader.read_all()

print(table.to_pandas())

Available Tables

Each dataset provides three tables:
TableDescriptionColumns
blocksBlock headersnumber, hash, parent_hash, timestamp, gas_used, gas_limit, …
transactionsTransactionsblock_number, hash, from, to, value, gas, input, …
logsEvent logsblock_number, transaction_hash, address, topics, data, …

Built-in User-Defined Functions

Amp includes EVM-specific UDFs for common operations:
-- Decode hex strings to integers
SELECT evm_decode_hex('0x1234') as decoded;

-- Convert between units (wei to ether)
SELECT shift_units(value, -18) as value_eth 
FROM "quickstart/eth_mainnet".transactions;

-- Extract event topics
SELECT evm_topic(topics, 0) as event_signature
FROM "quickstart/eth_mainnet".logs;

Next Steps

Core Concepts

Learn about Amp’s architecture and data flow

SQL Guide

Master SQL querying in Amp

Data Sources

Connect to Firehose, Solana, and more

Production Deployment

Deploy Amp in production

Troubleshooting

Symptom: ampd solo exits with PostgreSQL errorsSolution: Remove the existing PostgreSQL directory and try again:
rm -rf .amp/metadb/
ampd solo
Symptom: Queries run but return empty resultsSolution: Check that the extraction job completed:
ampctl jobs list
Wait for the status to show Completed before querying.
Symptom: curl: (7) Failed to connect to localhost port 1603Solution: Ensure ampd solo is running in another terminal. Check the logs to confirm the server started successfully.

Clean Up

To stop Amp and clean up:
# Stop ampd (Ctrl+C in the terminal running ampd solo)

# Remove all data (optional)
rm -rf .amp/

Build docs developers (and LLMs) love