Filament is pluggable data replication with checkpointing, batching, and integrity events.
It moves data from sources to sinks using full, incremental, or change data capture replication. Filament keeps progress durable as data moves, verifies batches on both sides of a write, and safely pauses or resumes runs from their checkpoints.
Sources, sinks, state storage, and event transport are replaceable interfaces. Run Filament as a service with its API and web UI, deploy it to your own infrastructure, or embed the engine in a Go application.
curl -fsSL https://getgalaxy.io/filament/install | shOn macOS via Homebrew
brew install galaxy-io/tap/filamentPrebuilt binaries for Linux and macOS are on the releases page.
To run Filament locally, install Go, Docker, just, Node.js, and pnpm. On macOS, the repository's Brewfile installs the toolchain:
For Podman users, set CONTAINER_ENGINE=podman to use Podman with the commands below. See engine configuration.
Start PostgreSQL and NATS, then run Filament:
Open http://localhost:5173 to use the web UI.
When you are finished, stop the local infrastructure with:
Kubernetes with Helm is the recommended way to run Filament in production. See the Kubernetes deployment guide for installation instructions and the Helm chart README for all supported values.
For a simpler hosted deployment without Kubernetes, deploy with 1 click:
Read the Railway, Render, and DigitalOcean guides for the deployed resources, runtime behavior, and production checklist.
Warning
The DigitalOcean deployment uses filament/standalone, an all-in-one image that includes the control-plane, server, and SQLite datastore.
A Filament pipeline connects a source to a sink and defines how selected resources should be replicated. During a run, Filament extracts records into bounded batches, writes and verifies each batch, and advances durable checkpoints only after successful work.
The runtime is event-driven: the server accepts pipeline and run requests, the control plane schedules and dispatches work, and workers execute individual runs. PostgreSQL stores durable state and NATS JetStream carries lifecycle events between components.
Filament is written in Go, with a React and TypeScript web UI. Contributions to the engine, connectors, UI, deployment tooling, tests, and documentation are welcome.
See CONTRIBUTING.md for repository setup, code generation, tests, and pull request guidance.