# StreamCore

An open-source realtime media server in Go that handles the WebRTC transport, barge-in, and streaming speech-to-text, LLM, and text-to-speech pipeline behind a voice agent, so a developer keeps their own prompts, tools, and models while StreamCore owns the latency-sensitive path.

StreamCore is the media infrastructure layer between a user and an AI voice agent: it owns WebRTC transport, adaptive turn-taking, interruption handling, streaming speech-to-text, LLM, and text-to-speech pipelines, NAT traversal, session state, and realtime events, across browsers, phones, telephony, and embedded devices, without owning the agent's prompts, tools, models, or business logic.

Its built-in STUN and TURN support works over UDP and TCP without an external server, and a network handover or NAT rebind recovers through an ICE restart on the same session rather than dropping the call. It supports SIP telephony and ESP32-based embedded devices in addition to browser and phone clients, and includes multi-language SDKs and a plugin system.

It runs as a single Go binary, requiring only API keys for a speech-to-text, LLM, and text-to-speech provider, or fully locally using Ollama and a local text-to-speech model with no external keys.

Website: https://github.com/streamcoreai/streamcore-server
