← 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.

Was this useful?

React with 👍, ❤️ or 🚀 to vote, or leave a comment. You sign in with GitHub inside the box below; this site never sees your account.

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