filament CLI.
You move generated rows from the Sample
source to the stdout sink, which
prints every record as JSON. Then you save the same route as a pipeline, run it
again with history, define it in YAML, and open it in the web app.
The local CLI keeps its state in SQLite and runs an in-process event bus, so it
needs no Postgres, NATS, Docker, or cloud account.
1. Install the CLI
2. Move data with one command
An inline run moves data without saving anything:- One JSON line per record. The Sample source emits three rows per resource by default.
_filament_run_idand_filament_run_started_at. Filament adds these to every row it writes, in every sink, so you can trace a row back to its run.- The
#receipt line. The sink reports what it wrote for each resource, with record and byte counts.
stdout supports only
replace and append writes. Without
--write-mode replace, the run uses the default upsert and fails with
sink "stdout" does not support write policy "upsert".3. Save a source, a sink, and a pipeline
Saved connections and pipelines keep run history, checkpoints, and settings in local state.--source-rows is a pipeline-level setting, so you can run
the same source with different settings in different pipelines:
4. Run it and check history
5. Define pipelines in YAML
The local context also reads pipelines from~/.config/filament/filament.yaml
(filament config path prints the exact path). Settings that belong to the
pipeline, like rows, go on the pipeline’s source node:
6. Open the web app
http://127.0.0.1:8080 to see your pipelines on the canvas, run them, add
a schedule, and inspect each run. Stop it with filament down.
Next steps
Swap the Sample source and stdout sink for real systems. The commands stay the same; only the connector and its fields change.PostgreSQL to ClickHouse
Runs on the local CLI. Snapshot, then incremental upserts.
PostgreSQL to Snowflake
Change data capture with merged inserts, updates, and deletes.
Replication modes
How full, incremental, and CDC reads pair with write policies.
CLI reference
Every command, flag, context, and output option.
FAQ
Do I need Docker or a database to try Filament?
No. The local context runs Filament in process with SQLite and an in-process event bus. You need a datastore and an event bus only when you deploy Filament as a shared service.Can I run change data capture on the local CLI?
No. CDC pipelines need the PostgreSQL datastore, so they run on a deployed Filament server. Full and incremental pipelines run locally.Is Filament free?
Yes. Filament is open source under the Apache 2.0 license. The engine and every connector are on GitHub.Where does the local CLI keep its state?
Infilament.db next to filament.yaml. filament status prints both paths.