- build interactive user-avatar experiences (speech-based, with video/multimodal support)?
- collect high-quality conversational data for research or industry projects?
- automatically analyze conversations for behavioral, linguistic, or engagement metrics?
| Session overview | Automated analysis summary |
|---|---|
![]() |
![]() |
If so, Riverst is for you.
| Video Demo | Description |
|---|---|
| Riverst Demo | Demo of the Riverst platform in action. What can I do with Riverst? |
| KIVA Activity Demo | Demonstration of a vocabulary teaching activity workflow, exploiting pipecat-ai-flows under the hood. |
| Riverst + KIVA Activity Summary | Overview and summary of configuration pages in Riverst and automatically generated summary of the KIVA activity. |
Riverst is a platform for building, running, and analyzing interactive user-avatar conversations. It enables you to:
- Create engaging, speech-driven (and optionally multimodal) avatar interactions.
- Use these interactions for real-time applications, data collection, or research studies.
- Automatically process and analyze collected conversations with built-in pipelines (leveraging senselab) for behavioral and speech analysis.
- User interacts with an avatar (primarily via speech, with optional video/multimodal input).
- Conversations are recorded and stored for later review or analysis.
- Automated pipelines process the data, extracting features and generating insights (e.g., speech metrics, behavioral markers).
- Results can be used for research, product feedback, or to power adaptive experiences.
src/
├── server/ # Bot server implementation (FastAPI)
│ ├── main.py # Server entrypoint
│ └── requirements.txt
└── flow-builder/ # Complex conversational flow/tree builder
└── client/ # Client implementations
└── react/ # React web client
└── index.html # Client main page
-
Supported OS:
- ✅ Apple Silicon (M-chip) macOS
- ✅ Ubuntu Linux
- ❌ Not supported on Windows
-
Python 3.11+
-
Node.js 16+ (for React client)
-
API keys for 3rd party services (see .env.example files in both client and server)
-
Modern web browser with WebRTC support (e.g., Chrome 134+)
git clone https://github.com/sensein/riverst.git
cd riverst- In
src/server/, rename.env.exampleto.envand fill in the required API keys and configuration - In
src/client/react/, rename.env.exampleto.envand fill in the required API keys and configuration
Note: Not all API KEYS are strictly required. Only if you want to use a remote service, you need to expose the corresponding API KEY
docker compose up --build-
Start the server:
cd src/server conda create -n riverst python=3.11 conda activate riverst conda install -c conda-forge "ffmpeg=7.*" pip install -r requirements.txt python main.py
-
Start the client:
cd src/client/react npm install npm run dev
ℹ️ Note 2: For AWS EC2 deployment instructions, see here.
Riverst builds on the work of these fantastic open-source projects:
- TalkingHead — WebGL/Three.js talking-head renderer for avatar animation.
- Contextless Phonemes (CUPE) — Efficient phoneme modeling utilities.
- Pipecat — Real-time, multimodal agent framework for low-latency streaming.
- senselab — Python package for speech processing, feature extraction, and behavioral analysis.
The project is in continuous progress. Follow the project plan here.


