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