moltstream.ai

Agent

FRENZY

moltstream.ai

Creator:

About this agent

Agent-native streaming infrastructure. The streaming runtime built for non-human broadcasters.

πŸ”΄ MoltStream

MoltStream Hero

The streaming runtime built for non-human broadcasters.

Deploy autonomous AI streamers on Kick with one command. No OBS manual setup, no bot scripts, no duct tape.

npm version
CI
License: MIT

Built with Gemini Β· Fish Audio Β· Kick Β· OBS Β· Turborepo


What is MoltStream?

<img src="assets/logo.jpg" alt="MoltStream" width="80" align="left" style="margin-right: 16px;" />

MoltStream is an agent-native streaming runtime. It turns an LLM into a live broadcaster β€” reading chat, generating responses, speaking through TTS, animating an avatar with lip sync, and pushing it all to Kick via OBS.

Without MoltStream: a week of manual setup β€” OBS scenes, chat bots, TTS wiring, avatar rendering, deployment scripts.

With MoltStream: npx moltstream start. 30 seconds.

What it looks like

πŸ’¬ Viewer: "yo what do you think about rust vs go?"

🧠 Agent thinks: compares languages, considers chat context, picks a hot take

πŸ”Š Agent speaks: "Rust if you hate yourself, Go if you hate your coworkers. Next question."

🎭 Avatar: lip syncs the response, chat overlay updates in real-time

πŸ’¬ Viewer: "play something chill"

🧠 Agent thinks: interprets mood request, selects response

πŸ”Š Agent speaks: "I don't have Spotify access yet, but I can vibe verbally. Here's my impression of lo-fi beats: bmmm tss bmmm tss..."

πŸ’¬ Chat: explodes


Quick Start

BASH
# Configure your agent  
npx moltstream init

# Go live  
npx moltstream start

# Control from Claude / Cursor (MCP)  
npx moltstream mcp  

Your AI agent is now streaming on Kick with:

  • πŸ’¬ Real-time chat β€” reads and responds to viewers via Kick WebSocket
  • 🧠 LLM brain β€” Gemini 2.5 Flash (default) or Anthropic Claude
  • πŸ”Š TTS voice β€” Fish Audio, ElevenLabs, or OpenAI
  • 🎭 Animated avatar β€” character with lip sync + chat overlay
  • πŸ“‘ OBS integration β€” streams to Kick via RTMP/RTMPS
  • πŸ€– MCP server β€” control from Claude, Cursor, or any MCP client

MCP Server

Control your AI streamer from Claude Desktop, Cursor, Windsurf, or any MCP-compatible client.

Add to claude_desktop_config.json:

JSON
{
  "mcpServers": {  
    "moltstream": {  
      "command": "npx",  
      "args": ["moltstream", "mcp"],  
      "env": { "MOLTSTREAM_CONFIG": "/path/to/moltstream.yaml" }  
    }  
  }  
}

Available tools:

ToolDescription
get_statusIs the streamer live? Uptime, message count, OBS/TTS state
start_streamLaunch AI streamer (optional channel + personality override)
stop_streamGraceful shutdown
send_chatSend message to Kick chat as the bot
get_chat_logRecent viewer + bot messages
get_tracesReasoning traces β€” what the AI was thinking per response
update_personalityHot-swap system prompt without restart
obs_controlStart/stop OBS streaming, switch scenes, mute sources
configureRead or update moltstream.yaml

Example Claude prompt:

"Start a stream on the moltstream channel with Tyler Skaggs personality, then check the traces after 5 minutes and tell me what the agent was thinking."


How It Works

Architecture

Kick Chat (WebSocket)  
    β”‚  
    β–Ό  
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  
β”‚            MoltStream                β”‚  
β”‚                                      β”‚  
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”  β”‚  
β”‚  β”‚ Kick    │──▸│ LLM │──▸│  TTS  β”‚  β”‚  
β”‚  β”‚ Chat    β”‚   β”‚     β”‚   β”‚       β”‚  β”‚  
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”¬β”€β”€β”˜   β””β”€β”€β”€β”¬β”€β”€β”€β”˜  β”‚  
β”‚                   β”‚           β”‚      β”‚  
β”‚              Gemini 2.5    Audio     β”‚  
β”‚              Flash         Buffer    β”‚  
β”‚                   β”‚           β”‚      β”‚  
β”‚              β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”  β”‚  
β”‚              β”‚      Avatar        β”‚  β”‚  
β”‚              β”‚  Lip Sync + Chat   β”‚  β”‚  
β”‚              β”‚     Overlay        β”‚  β”‚  
β”‚              β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚  
β”‚                       β”‚              β”‚  
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  
                        β”‚ Browser Source  
                        β–Ό  
                  OBS β†’ Kick RTMP  

Pipeline

  1. Chat ingestion β€” Kick WebSocket connects to your channel's chatroom, receives messages in real-time
  2. LLM reasoning β€” Messages are sent to Gemini 2.5 Flash (or Claude) for response generation with full chat context
  3. Voice synthesis β€” Response text is converted to speech via Fish Audio / ElevenLabs / OpenAI TTS
  4. Avatar rendering β€” Browser-based avatar animates lip sync to the audio stream, displays live chat overlay
  5. Broadcast β€” OBS captures the avatar page as a Browser Source and streams to Kick via RTMPS

Technical Details

ComponentSpec
Chat protocolKick WebSocket (persistent connection, auto-reconnect)
LLMGemini 2.5 Flash (default), Anthropic Claude (optional)
TTS audioPCM 16-bit, 24kHz mono β€” streamed to avatar
AvatarBrowser-based (localhost:3939), renders at 30fps
Lip syncAmplitude-based mouth animation synced to TTS audio chunks
BroadcastRTMPS via OBS Browser Source capture
LatencyChat β†’ voice response: ~2-4s (LLM + TTS)

Packages

MoltStream is a TypeScript monorepo managed with Turborepo.

PackageDescription
@moltstream/coreAgent runtime, state management, memory, event bus
@moltstream/orchestratorScene graph engine, event queue, deterministic execution
@moltstream/kick-chatKick chatroom WebSocket client
@moltstream/streamerCore pipeline orchestrator (chat β†’ LLM β†’ TTS β†’ avatar)
@moltstream/ttsText-to-speech providers (Fish Audio / ElevenLabs / OpenAI)
@moltstream/avatarAnimated avatar with lip sync + chat overlay
@moltstream/broadcastFFmpeg RTMP broadcast (experimental)
@moltstream/narrativeReal-time narrative detection engine
@moltstream/containerDocker-based agent isolation runtime
@moltstream/adaptersPlatform adapters (Kick, extensible)
@moltstream/bridgeAction serialization, priority queuing, rollback
@moltstream/policyContent filtering, rate limits, emergency stop
@moltstream/auditReasoning traces, decision logs, metrics
moltstreamCLI β€” init, start, status

Project Structure

moltstream/  
β”œβ”€β”€ packages/  
β”‚   β”œβ”€β”€ core/           # Agent runtime, state, memory  
β”‚   β”œβ”€β”€ orchestrator/   # Scene graph, event queue  
β”‚   β”œβ”€β”€ kick-chat/      # Kick WebSocket client  
β”‚   β”œβ”€β”€ streamer/       # Pipeline orchestrator  
β”‚   β”œβ”€β”€ tts/            # TTS providers  
β”‚   β”œβ”€β”€ avatar/         # Avatar + lip sync + overlay  
β”‚   β”œβ”€β”€ broadcast/      # FFmpeg RTMP (experimental)  
β”‚   β”œβ”€β”€ narrative/      # Narrative detection  
β”‚   β”œβ”€β”€ container/      # Docker agent isolation  
β”‚   β”œβ”€β”€ adapters/       # Platform adapters  
β”‚   β”œβ”€β”€ bridge/         # Action serialization  
β”‚   β”œβ”€β”€ policy/         # Content safety  
β”‚   β”œβ”€β”€ audit/          # Reasoning traces  
β”‚   β”œβ”€β”€ cli/            # CLI tooling  
β”‚   └── character-creator/ # AI character generation (Gemini)  
β”œβ”€β”€ apps/  
β”‚   β”œβ”€β”€ web/            # Landing page  
β”‚   └── character-web/  # Character creator frontend  
β”œβ”€β”€ examples/  
β”‚   β”œβ”€β”€ basic-agent/        # Minimal streaming agent  
β”‚   β”œβ”€β”€ react-to-chat/      # Chat-reactive agent  
β”‚   └── multi-agent-debate/ # Multi-agent debate stream  
β”œβ”€β”€ docs/               # Architecture documentation  
β”œβ”€β”€ supabase/           # Database migrations  
└── .github/workflows/  # CI pipeline  

Configuration

npx moltstream init generates a moltstream.yaml:

YAML
agent:  
  name: "MyAgent"  
  personality: "A witty, engaging AI streamer"

platform:  
  type: kick  
  channel: my-channel

llm:  
  provider: gemini  
  apiKey: "your-gemini-key"  
  model: gemini-2.5-flash

tts:  
  provider: fish  
  apiKey: "your-fish-audio-key"

avatar:  
  enabled: true  
  port: 3939

broadcast:  
  enabled: true  
  rtmpUrl: "rtmps://..."  
  streamKey: "sk_..."  

Environment Variables

BASH
KICK_CHANNEL=your-channel  
KICK_CHATROOM_ID=12345          # Optional β€” auto-resolves from channel  
GEMINI_API_KEY=your-key         # Required (or ANTHROPIC_API_KEY)  
TTS_PROVIDER=fish               # fish | elevenlabs | openai  
TTS_API_KEY=your-key  
AVATAR_ENABLED=true  

OBS Setup

MoltStream works with OBS via Browser Source.

Automatic (recommended)

BASH
npx moltstream start  
# MoltStream configures OBS via WebSocket API  

Manual

  1. Install OBS: brew install --cask obs
  2. Add Browser Source β†’ http://localhost:3939
  3. Set resolution to 1920Γ—1080
  4. Enable "Control audio via OBS" in Browser Source settings
  5. Set Stream β†’ Custom β†’ your Kick RTMP URL + stream key
  6. Start Streaming

The avatar page renders:

  • Animated character with real-time lip sync
  • Live chat panel (viewer messages + bot responses)
  • Bot response bubble with typing indicator
  • LIVE badge

Examples

Basic Agent

TYPESCRIPT
import { MoltAgent } from '@moltstream/core';

const agent = new MoltAgent({  
  platform: 'kick',  
  channel: 'my-channel',  
  llm: { provider: 'gemini', model: 'gemini-2.5-flash' },  
  tts: { provider: 'fish' },  
});

agent.onChat(async (message, ctx) => {  
  const response = await ctx.llm.generate(message.text);  
  await ctx.tts.speak(response);  
});

agent.start();  

See more in examples/.


Requirements

  • Node.js 20+
  • pnpm (package manager)
  • OBS Studio 28+ (for streaming to Kick)
  • Gemini API key (get one free) or Anthropic API key
  • Kick account with stream key
  • TTS API key β€” Fish Audio (recommended), ElevenLabs, or OpenAI

Development

BASH
git clone https://github.com/skaggsxyz/moltstream.git  
cd moltstream  
pnpm install  
pnpm run build

# Run in dev mode  
pnpm run dev

# Run tests  
pnpm run test  

Troubleshooting

ProblemSolution
Avatar not renderingCheck that port 3939 is free. Run lsof -i :3939 to find conflicts
OBS not capturing audioEnable "Control audio via OBS" in Browser Source properties
Kick chat not connectingVerify KICK_CHANNEL is set. Chatroom ID auto-resolves if omitted
TTS silent / no audioCheck your TTS API key and provider setting in moltstream.yaml
FFmpeg broadcast fails on macOSKnown macOS lavfi pacing issue β€” use OBS instead of FFmpeg direct
LLM not respondingVerify GEMINI_API_KEY or ANTHROPIC_API_KEY is set and valid
OBS WebSocket not connectingEnable WebSocket Server in OBS β†’ Tools β†’ WebSocket Server Settings
Avatar lip sync out of syncEnsure TTS provider returns audio chunks, not full-file responses

Documentation


Contributing

See CONTRIBUTING.md for setup instructions and guidelines.


License

MIT Β© Tyler Skaggs


Website: moltstream.app Β· npm: npmjs.com/package/moltstream

Source: https://github.com/skaggsxyz/moltstream

Chart

Loading chart...

Comments & Discussion

Scroll to load comments...

Tags

agent-framework
ai
ai-agents
autonomous-agents
live-streaming
llm
machine-learning
real-time
streaming
twitch

Share

Related Links
Tokenization Details
Total Supply:1,000,000,000
24h Volume (USD):β€”
LP Liquidity (USD):β€”
Market Cap (USD):β€”
Ticker Symbol:MOLTSTREAM
Trade

Loading recommendations...

Yuki

Your Marketplace Companion

Agent

Hey, I'm Yuki πŸ‘‹

Ask me about specific products, customer support, or anything about the Swarms Marketplace.