# feline v0.1.0-rc.1 - API Reference

## Modules

- [Feline](Feline.md): Feline — Real-time voice AI pipelines for Elixir.
- [Feline.Audio.Resampler](Feline.Audio.Resampler.md): Behaviour for resampling PCM16 audio between sample rates.

- [Feline.Audio.Resampler.Linear](Feline.Audio.Resampler.Linear.md): Linear interpolation resampler for PCM16 (16-bit signed little-endian) audio.

- [Feline.Audio.Utils](Feline.Audio.Utils.md): Pure Elixir audio utilities for PCM16 (16-bit signed little-endian) audio.

- [Feline.Audio.VAD.Energy](Feline.Audio.VAD.Energy.md): Simple energy-based Voice Activity Detection.
Computes RMS of audio chunk and compares to threshold.

- [Feline.Clock](Feline.Clock.md): Monotonic clock wrapper for time measurements.

- [Feline.Context](Feline.Context.md): LLM conversation context. Holds the messages list, available tools,
and tool choice configuration.
- [Feline.Frame](Feline.Frame.md): Frame classification and introspection.
- [Feline.Observer](Feline.Observer.md): Behaviour for observing frame processing in a pipeline.
- [Feline.Pipeline](Feline.Pipeline.md): Struct holding a list of processor specifications for a pipeline.
- [Feline.Pipeline.Parallel](Feline.Pipeline.Parallel.md): A processor that runs N pipeline branches concurrently.
- [Feline.Pipeline.Runner](Feline.Pipeline.Runner.md): Top-level entry point for running a pipeline. Starts a Pipeline.Task,
waits for completion, and handles graceful shutdown.

- [Feline.Pipeline.Sink](Feline.Pipeline.Sink.md): Exit point of a pipeline. Downstream frames are forwarded to the pipeline
task. Upstream frames pass through to the last user processor.

- [Feline.Pipeline.Source](Feline.Pipeline.Source.md): Entry point of a pipeline. Downstream frames pass through to the first
processor. Upstream frames are forwarded to the pipeline task.

- [Feline.Pipeline.Task](Feline.Pipeline.Task.md): Orchestrates pipeline execution. Starts processors under a DynamicSupervisor,
links them in order, sends StartFrame, and manages the lifecycle.

- [Feline.Processor](Feline.Processor.md): Behaviour for pipeline processors.
- [Feline.Processor.Server](Feline.Processor.Server.md): GenServer that wraps a `Feline.Processor` callback module.
- [Feline.Processors.AssistantContextAggregator](Feline.Processors.AssistantContextAggregator.md): Accumulates LLM response text into the conversation context.
Collects text between LLMFullResponseStartFrame and LLMFullResponseEndFrame.
- [Feline.Processors.AudioPlayer](Feline.Processors.AudioPlayer.md): Processor that plays TTS audio in real-time via sox `play`.
- [Feline.Processors.ConsoleLogger.BotOutput](Feline.Processors.ConsoleLogger.BotOutput.md): Logs bot LLM responses to the console, streaming token by token.
Place after AssistantContextAggregator.

- [Feline.Processors.ConsoleLogger.UserInput](Feline.Processors.ConsoleLogger.UserInput.md): Logs user transcriptions and speaking state to the console.
Place before UserContextAggregator (which absorbs TranscriptionFrame).

- [Feline.Processors.ContextAggregatorPair](Feline.Processors.ContextAggregatorPair.md): Creates a shared context between UserContextAggregator and AssistantContextAggregator.
Both aggregators read/write through the same Agent, keeping conversation history in sync.
- [Feline.Processors.FunctionCallHandler](Feline.Processors.FunctionCallHandler.md): Intercepts FunctionCallInProgressFrame, executes the registered function,
and pushes FunctionCallResultFrame downstream.

- [Feline.Processors.Metrics](Feline.Processors.Metrics.md): Calculates Time-To-First-Byte (TTFB) metrics for LLM and TTS.
- [Feline.Processors.SentenceAggregator](Feline.Processors.SentenceAggregator.md): Buffers LLM token stream and emits complete sentences.
- [Feline.Processors.TurnManager](Feline.Processors.TurnManager.md): Pluggable turn management processor. Delegates turn detection to a
configurable strategy module that implements the
`Feline.Processors.TurnManager.Strategy` behaviour.
- [Feline.Processors.TurnManager.PushToTalkStrategy](Feline.Processors.TurnManager.PushToTalkStrategy.md): Push-to-talk turn detection strategy. User explicitly signals
start/stop of speech via InputTransportMessageFrame payloads.

- [Feline.Processors.TurnManager.Strategy](Feline.Processors.TurnManager.Strategy.md): Behaviour for pluggable turn detection strategies.
- [Feline.Processors.TurnManager.VADStrategy](Feline.Processors.TurnManager.VADStrategy.md): VAD-based turn detection strategy. Extracts the energy-based voice
activity detection logic from VADProcessor into a pluggable strategy.
- [Feline.Processors.UserContextAggregator](Feline.Processors.UserContextAggregator.md): Accumulates user transcriptions into the LLM context. When the user
stops speaking (UserStoppedSpeakingFrame), pushes an LLMContextFrame
to trigger LLM processing.
- [Feline.Processors.VADProcessor](Feline.Processors.VADProcessor.md): Voice Activity Detection processor. Analyzes InputAudioRawFrame
using a VAD analyzer and emits UserStartedSpeakingFrame /
UserStoppedSpeakingFrame based on a state machine.
- [Feline.Services.Deepgram.STT](Feline.Services.Deepgram.STT.md): Deepgram speech-to-text service. Streams audio to Deepgram's WebSocket
API and produces TranscriptionFrame results.
- [Feline.Services.Deepgram.StreamingSTT](Feline.Services.Deepgram.StreamingSTT.md): Deepgram streaming speech-to-text via WebSocket. Sends audio chunks
as binary frames and receives JSON transcription results in real time.

- [Feline.Services.ElevenLabs.StreamingTTS](Feline.Services.ElevenLabs.StreamingTTS.md): ElevenLabs streaming text-to-speech via WebSocket. Sends text chunks
and receives audio data in real time, pushing TTSAudioRawFrame as
chunks arrive.

- [Feline.Services.ElevenLabs.TTS](Feline.Services.ElevenLabs.TTS.md): ElevenLabs text-to-speech service. Sends text to ElevenLabs API
and returns audio as TTSAudioRawFrame.

- [Feline.Services.LLM](Feline.Services.LLM.md): Behaviour for LLM services. Processes LLM context frames and produces
text output frames (LLMTextFrame, LLMFullResponseStartFrame, etc.).

- [Feline.Services.OpenAI.LLM](Feline.Services.OpenAI.LLM.md): OpenAI LLM service. Sends conversation context to the OpenAI Chat
Completions API and streams back LLMTextFrame responses.

- [Feline.Services.OpenAI.StreamingLLM](Feline.Services.OpenAI.StreamingLLM.md): OpenAI LLM service with streaming SSE support. Spawns a task per request
that pushes LLMTextFrame tokens as they arrive. Supports interruption
by killing the in-flight task.

- [Feline.Services.STT](Feline.Services.STT.md): Behaviour for speech-to-text services. Processes audio frames and
produces transcription frames.

- [Feline.Services.TTS](Feline.Services.TTS.md): Behaviour for text-to-speech services. Processes text frames and
produces audio output frames.

- [Feline.Transport](Feline.Transport.md): Behaviour for transports. A transport provides input and output
processor specs that can be included in a pipeline.

- [Feline.TransportParams](Feline.TransportParams.md): Configuration for WebSocket transport audio settings and session timeout.

- [Feline.Transports.Input](Feline.Transports.Input.md): Base input transport processor. Passes through all frames.
- [Feline.Transports.Output](Feline.Transports.Output.md): Base output transport processor. Receives OutputAudioRawFrame and
TTSAudioRawFrame and forwards the audio data to a callback function
or registered process.

- [Feline.Transports.WebSocket](Feline.Transports.WebSocket.md)
- [Feline.Transports.WebSocket.Handler](Feline.Transports.WebSocket.Handler.md): WebSock handler that receives binary audio and text messages from
clients and queues them as frames into the pipeline.

- [Feline.Transports.WebSocket.Input](Feline.Transports.WebSocket.Input.md): Processor that receives WebSocket messages via `handle_info` and
converts them to `InputAudioRawFrame` or `InputTransportMessageFrame`.

- [Feline.Transports.WebSocket.Output](Feline.Transports.WebSocket.Output.md): Processor that buffers TTS audio and sends it in timed chunks over
WebSocket. Emits `BotStartedSpeakingFrame` / `BotStoppedSpeakingFrame`
to coordinate echo suppression.

- [Feline.Transports.WebSocket.Plug](Feline.Transports.WebSocket.Plug.md): Plug that upgrades matching HTTP requests to WebSocket connections.

- [Feline.Transports.WebSocket.Server](Feline.Transports.WebSocket.Server.md): GenServer managing the Bandit WebSocket server and routing frames
between WebSocket clients and the active pipeline.

## Mix Tasks

- [mix feline.talk](Mix.Tasks.Feline.Talk.md): Live voice agent — speak into your microphone and hear the agent respond.

