Skip to main content
This guide covers installing Lasso for local development, Docker deployment, and production use.

Prerequisites

Lasso requires:
  • Elixir 1.17+
  • Erlang/OTP 26+
  • Node.js 18+ (for asset compilation)

Check installed versions

Install Elixir and Erlang

If you don’t have Elixir installed:
See the official Elixir installation guide for more platforms and version managers like asdf.

Install Node.js

For asset compilation:
1

Clone the repository

2

Install Elixir dependencies

This downloads all required Elixir packages defined in mix.exs.
3

Start the Phoenix server

The application will start at http://localhost:4000.You should see output like:
4

Verify it's working

Open your browser to:
  • Dashboard: http://localhost:4000/dashboard
  • Test RPC endpoint: http://localhost:4000/rpc/ethereum
Or test via curl:
The default profile (config/profiles/default.yml) includes free public providers. No API keys required to start.

Docker installation

Using the convenience script

The fastest way to run Lasso with Docker:
This script:
  1. Checks Docker is installed and running
  2. Builds the Docker image
  3. Generates a SECRET_KEY_BASE (if not set)
  4. Starts the container at http://localhost:4000

Manual Docker build and run

For more control:
1

Build the image

The Dockerfile uses a multi-stage build:
  • Builder stage: Compiles Elixir app, builds assets, creates release
  • Runtime stage: Minimal image with only release artifacts
2

Generate a secret key

3

Run the container

The application will be available at http://localhost:4000.

Docker Compose (production)

For production deployments with custom profiles:
docker-compose.yml
Run with:

Configuration

Profiles

Profiles define chains, providers, and routing policies. They live in config/profiles/*.yml. The default profile (config/profiles/default.yml) is included and ready to use:

Environment variables

Profiles support ${ENV_VAR} substitution for API keys:
Set the variable before starting:
Unresolved ${ENV_VAR} placeholders will crash at startup. This is intentional to prevent misconfigurations.

Create a custom profile

Create config/profiles/production.yml:
Access it via:
See the Configuration guide for complete profile reference.

Multi-node deployment (clustering)

For geo-distributed deployments with aggregated observability:
1

Enable DNS-based discovery

Set the DNS query for node discovery:
Your DNS should return all Lasso node IPs.
2

Set unique node IDs

Each node needs a unique identifier (typically a region name):Node 1 (US East):
Node 2 (EU West):
3

Verify cluster formation

Check the dashboard at http://localhost:4000/dashboard. You should see all nodes listed with their regions.Or check via IEx:
Clustering is optional. A single node works great standalone. Clustering aggregates metrics for observability—it doesn’t impact routing decisions.
Each node:
  • Makes independent routing decisions based on local latency measurements
  • Shares observability data with the cluster
  • Allows regional drill-down in the dashboard
See Deployment for production cluster setup.

Troubleshooting

Port already in use

If port 4000 is already in use, set a different port:
Or in config/runtime.exs:

Mix not found

If mix is not in your PATH after installing Elixir:

Compilation errors

Clear dependencies and rebuild:

Docker build failures

Ensure you have enough disk space and memory:

Profile not loading

Check for YAML syntax errors:
Or check Lasso logs on startup for profile parsing errors.

Next steps

Quickstart

Make your first RPC request through Lasso

Configuration

Customize profiles, providers, and routing strategies

Deployment

Production deployment with clustering

Architecture

Learn how Lasso works under the hood