Installation

Get Interlace up and running in your environment.

Requirements

  • Python 3.12 or higher

Install

The package is published to PyPI as interlaced; it installs the interlace command.

pip install interlaced          # or, isolated on PATH: uv tool install interlaced

That gives you the interlace CLI — the starting point, since interlace init scaffolds a project before one exists. The daemon (HTTP API, scheduler, web UI) is the service extra: pip install 'interlaced[service]'. Writing Python models that import interlace? Add it to your project instead — uv add interlaced (inside a uv project). Interlace requires Python 3.12+.

Extras

ExtraAdds
serviceinterlace serve — HTTP API, scheduler, and web UI
adbcPostgres as an execution engine (Arrow-native transfer)
postgrespsycopg driver
sourcesREST source client (auth, pagination, retry) for pulling APIs into the warehouse
polarsPolars interop
pandaspandas interop
allservice + adbc + postgres + polars + sources

Verify Installation

interlace --version

You should see the version, e.g. interlace 2.0.0.

Initialize a Project

interlace init my-project
cd my-project

This scaffolds a working project from the default quickstart template — a small SQL → Python → SQL chain that runs with no external data:

my-project/
├── interlace.yaml          # Project configuration
├── README.md
└── models/
    ├── raw_events.sql      # A seed model (inline VALUES)
    ├── enriched_events.py  # A Python model over Arrow (adds derived columns)
    └── event_summary.sql   # A rollup with data-quality checks

Other starters ship too — interlace init --list shows them, and --template picks one:

interlace init --list                        # quickstart, events, github, postgres
interlace init my-stream --template events   # durable @stream ingestion + live rollups
interlace init my-shop --template github     # pull GitHub issues via the REST source client
interlace init my-db --template postgres     # incrementally pull from a Postgres source

Source templates need the sources (or postgres) extra; interlace init --list shows what each requires.

The generated interlace.yaml points the warehouse at a local DuckLake:

name: my-project
default_dialect: duckdb
database: ducklake:.interlace/warehouse.ducklake

The .interlace/ directory (warehouse data, state database, stream log) is created on first use — add it to .gitignore.

Next Steps

Now that Interlace is installed, create your first model.