← Blog Blog · Architecture

Compile only what you need

faucet-stream is ~90 crates, but your binary isn't. Connectors are opt-in Cargo features, so a REST→JSONL build carries no database drivers, no cloud SDKs — just the code your pipeline actually runs.

faucet-stream·August 25, 2026·~5 min read

Big ecosystem, small binary

faucet-stream is a Cargo workspace of around 90 crates — a core plus a source or sink per system. That's the menu, not the meal. Every connector is an optional feature, so you compile in only the ones your pipeline uses:

cargo install --path cli \
  --no-default-features \
  --features "source-rest,sink-jsonl,transforms"

That binary contains the REST source, the JSONL sink, and the transform engine — and nothing else. No Postgres driver, no cloud SDK, no Kafka client. Smaller binary, faster build, smaller attack surface, fewer transitive dependencies to audit.

Why this shape matters

  • Cost is proportional to use. A cloud SDK or a database driver is only pulled in when you enable the connector that needs it — a config that never touches BigQuery pays nothing for the BigQuery client.
  • Isolation is enforced. CI builds each connector feature on its own, so an accidental cross-dependency between connectors is caught, not shipped.
  • Supply chain stays lean. Fewer compiled-in crates means fewer things in your dependency tree to review and keep patched.

The web console reflects this honestly: the schema explorer shows the connectors compiled into this server, not a catalog of everything that theoretically exists — because those are the ones you can actually run.

Good for third-party authors too

The same design keeps the ecosystem open: a connector depends only on faucet-core, which re-exports the shared pieces (async-trait, serde_json, schemars) so authors don't chase a pile of dependencies. Anyone can publish a faucet-source-* / faucet-sink-* crate that slots into the same feature model.

Takeaway

You get a broad ecosystem without a bloated binary. Turn on the connectors you use, leave the rest on the shelf, and ship something small.

More on the blog, or read the documentation.

Get started

Your first pipeline runs in five minutes.

Install the CLI, scaffold a config, and move real data — nothing external to stand up.

curl -LsSf https://github.com/faucet-hq/faucet-stream/releases/latest/download/faucet-cli-installer.sh | sh
brew install faucet-hq/faucet-stream/faucet-cli