Flowcat feature-flag matrix

Every provider, transport, and exporter is a single Cargo feature, dep:-gated so the default build pulls none of their client dependencies. This file enumerates every feature across the four crates; it is derived from the Cargo.tomls and is the exhaustive companion to the README's summary table and PROVIDERS.md.

(D) = distinct client (own wire protocol). (W) = thin wrapper over a (D) family client (base_url + auth + default-model change). See CONTRIBUTING.md.


flowcat-coredefault = ["sip", "recorder"]

FeatureDefaultPullsWhat it gates
sipnative SIP user-agent (REGISTER/INVITE/ACK/BYE)
recordercall recorder-as-processor (WAV via hound)
vad-ortort, ndarraySilero VAD + Smart-Turn ONNX impls
filter-rnnoisennnoiselesspure-Rust RNNoise noise-suppression filter

The trait seams (Transport/Stt/Tts/Llm/RealtimeLlm/Vad/Turn/FrameSerializer/ Brain/SessionSource), the Gemini Live client, codec/resample, and the SIP/RTP/SDP stack are always present; only the heavy ONNX/RNNoise bodies are gated.

flowcat-servicesdefault = []

Nothing is on by default. Umbrellas: stt-all, tts-all, llm-all, realtime-all, obs-all.

Realtime / speech-to-speech (7 incl. core Gemini)

FeatureTagPulls
realtime-openai(D)tokio-tungstenite, tokio, base64
realtime-azure(W) over openai
realtime-grok(W) over openai
realtime-inworld(W) over openai
realtime-ultravox(D)tokio-tungstenite, tokio
realtime-novasonic(D)tokio, base64

Gemini Live is the 7th realtime impl and lives in flowcat-core (re-exported as flowcat_core::GeminiLive); it has no flowcat-services feature.

STT (20)

FeatureTagTransport
stt-deepgram(D)WS (ref impl)
stt-assemblyai(D)WS
stt-gladia(D)WS
stt-soniox(D)WS
stt-speechmatics(D)WS
stt-cartesia(D)WS
stt-azure(D)WS
stt-gradium(D)WS
stt-elevenlabs(D)segmented HTTP
stt-sarvam(D)REST
stt-mistral(D)REST
stt-openai(D)Whisper-HTTP base
stt-groq / stt-fal / stt-speaches / stt-xai(W) over openaiWhisper-HTTP
stt-google(D)gRPC (tonic)
stt-nvidia(D)gRPC / Riva (tonic)
stt-aws-transcribe(D)SigV4 WS (hmac/sha2)
stt-whisper-local(D)local (whisper-rs; C build, needs cmake)

TTS (29)

FeatureTagTransport
tts-cartesia(D)WS (ref impl)
tts-elevenlabs / tts-deepgram / tts-rime / tts-asyncai / tts-gradium / tts-soniox / tts-resemble(D)WS
tts-openai(D)HTTP base
tts-groq / tts-xai(W) over openaiOpenAI-TTS-HTTP
tts-azure(D)SSML WS/HTTP
tts-sarvam / tts-mistral / tts-hume / tts-inworld / tts-minimax / tts-camb / tts-speechmatics(D)HTTP
tts-fish / tts-lmnt / tts-neuphonic / tts-smallest(D)interruptible HTTP
tts-kokoro / tts-piper / tts-xtts(D)local/model HTTP
tts-google / tts-nvidia(D)gRPC (tonic)
tts-aws-polly(D)SigV4 (hmac/sha2)

LLM (23)

FeatureTag
llm-openai(D) — chat-completions SSE, ref impl
llm-openai-responses(D) — Responses API
llm-anthropic(D) — Messages API
llm-google(D) — Gemini generateContent
llm-aws-bedrock(D) — SigV4 event-stream (hmac/sha2)
llm-groq, llm-together, llm-fireworks, llm-openrouter, llm-perplexity, llm-deepseek, llm-cerebras, llm-sambanova, llm-nebius, llm-novita, llm-qwen, llm-grok, llm-nvidia-nim, llm-ollama, llm-sarvam, llm-mistral, llm-azure, llm-speaches(W) over llm-openai (base_url + auth) — 18 wrappers

Observability + MCP

FeaturePulls
obs-otelopentelemetry
obs-sentryreqwest
obs-langfusereqwest
mcpreqwest — MCP-as-processor client

Brain adapters

FeaturePulls
brain-httpreqwest, tokio/rt-multi-threadRemoteBrain: drives conversation policy from an HTTP service (e.g. a Python webhook). See examples/python-remote-brain.

flowcat-transportsdefault = []

FeaturePulls
webrtc-str0mstr0m, audiopus, tokio, tokio-util
wstokio-tungstenite, tokio, tokio-util
dailyreqwest
livekit— (stub)
localaudiopus, tokio (local mic/speaker)

flowcat-telephonydefault = ["plivo"]

Serializers are dependency-free flags (pure framing).

FeatureDefault
plivo
twilio, telnyx, exotel, vonage, genesys, asterisk, cloudonix, vobiz
dtmf-inband— (in-band Goertzel DTMF; RFC2833 is always available)

flowcat-agentdefault = ["brain"]

A declarative, graph-based agent: define an agent as a node/edge graph_spec (JSON/YAML) instead of hand-writing an AgentBrain. DeclarativeBrain is a ready-to-use flowcat_core::AgentBrain over the graph engine.

FeaturePulls
brainflowcat-core — the DeclarativeBrain AgentBrain adapter (default on)

With default-features = false the pure graph engine (parse / validate / {{var}} interpolation) builds with no flowcat-core dependency.


Toolchain caveats

  • gRPC (stt-google/stt-nvidia/tts-google/tts-nvidia) compiles .protos via tonic-build → needs protoc on PATH.
  • stt-whisper-local bundles whisper.cpp → needs cmake + a C/C++ toolchain. The Rust stub compiles; the dep's C build is the gate.

Everything else is rustls-only reqwest / tokio-tungstenite — no system OpenSSL, no AWS SDK (the AWS providers hand-roll SigV4 over hmac/sha2).