Skip to main content
Filament is a data replication engine written in Go. It supports full loads, incremental replication, and change data capture (CDC). As data moves through the engine, Filament verifies Arrow batches at the sink handoff and, where the sink supports it, checks the exact serialized payload. You can run Filament as a standalone binary or embed it in a Go application. Connectors, the data store, and the event bus are interfaces with swappable implementations. Runs that carry resumable progress (incremental and checkpointed full reads) pick up from their last durable checkpoint instead of starting over. The requirements and recovery behavior are covered in Runs and recovery.

Welcome to Filament

How it’s put together

The runner executes each data movement from extraction through the final sink write. The API server and control plane decide when and where that runner starts. On Kubernetes, that work is split across three processes:
  • The server owns connections, pipelines, and run requests
  • The control plane schedules and dispatches
  • Each run executes as its own worker Job
For smaller deployments, runs can execute in the control plane, the standalone binary, or a Go process that embeds Filament. Postgres stores run state and NATS JetStream carries progress events when the components run separately. Read Architecture to follow a batch through those components.

Where to go next

Quickstart

Get infra, the control plane, API server, and UI running locally.

Architecture

Follow a batch through the runner and see how run progress is stored.

Connectors

See what Filament can read from and write to today.

Installation

Standalone binary, Go library, or Kubernetes via Helm.

Join the Slack community

Ask questions, report what breaks, and hear about releases before they land.
Filament is pre-1.0. APIs, including the interfaces documented here, may still change.