# feline v0.1.0-rc.1 - Table of Contents Real-time voice and multimodal AI pipelines for Elixir, inspired by pipecat ## Pages - [Feline](readme.md) - [Changelog](changelog.md) - Guides - [Live Voice Demo — In Depth](live-voice-demo.md) ## 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.