Self-hosted platform for AI-powered conversational interviews.
Voice and text. Any model provider. Your infrastructure, your data.
Website · Docs · FAQ · About · License
OASIS lets you run conversational AI interviews from your own infrastructure. Define a study, configure an agent with a system prompt and model, share a link with participants. Transcripts are stored in your database. You control the data, the models, and the pipeline.
Built because existing tools for conversational AI aren't designed for research. Things like follow-up probing, semi-structured interview guides, participant tracking, and study-level organization are afterthoughts in commercial platforms. OASIS puts them front and center.
OASIS launched in March 2026. It works, but it's a young project. If something breaks, open an issue.
1. Setup a Study
demo1-fast.mp4
2. Create and Configure an Agent
demo2-fast.mp4
3. Collect and Manage Data
demo3-fast.mp4
- Voice + text interviews. Real-time speech (STT > LLM > TTS) or clean text chat with customizable avatars.
- Voice-to-voice. Stream audio directly to multimodal models (OpenAI Realtime, Gemini Live) for lower latency.
- Semi-structured mode. Define question guides with follow-up probes and transition logic. The agent follows a structured backbone while keeping conversation natural.
- Multi-provider. OpenAI, Google Gemini, Scaleway, Azure, GCP Vertex, or any LiteLLM-compatible provider. Custom model IDs supported.
- Self-hosted STT/TTS. OpenAI Whisper, Deepgram, ElevenLabs, Cartesia, Scaleway, or bring your own OpenAI-compatible server.
- Knowledge base (RAG). Upload documents, OASIS chunks and embeds them with pgvector. Agents can retrieve relevant context during interviews. Embeddings work with OpenAI or any self-hosted server.
- Engagement metrics & adaptive behavior. Per-turn engagement scoring for voice and text (lexical, latency, energy signals), plus an opt-in rule-based policy that can offer breaks, soften questions, or adjust speaking pace — shadow mode by default, every action audited.
- Research-first. Study-level organization, participant identifiers (random/predefined/self-reported), diarized transcripts, session analytics, data export.
- Phone interviews (beta). Twilio Media Streams for incoming calls.
- Self-hosted. Everything in Docker. No data leaves your infra unless you point at external APIs. Optional dashboard auth.
See the FAQ for questions about self-hosting, HPC clusters, European cloud providers, and running with fully open-source models.
Five Docker containers on one internal network:
| Container | Stack | Role |
|---|---|---|
| Caddy | Caddy 2 | Reverse proxy, auto HTTPS |
| Frontend | React, Tailwind, Nginx | Dashboard + interview widget |
| Backend | FastAPI, Pipecat, LiteLLM | WebSocket transport, AI pipeline, REST API |
| PostgreSQL | pgvector/pg16 | Configs, transcripts, participant data, embeddings |
| Redis | Redis 7 | Sessions, real-time pub/sub, API key overrides |
┌──────────────────────────────────────────────────────────┐
│ Caddy (ports 80/443) │
│ ┌──────────┬──────────┐ │
│ │ Frontend │ Backend │ │
│ │ (React) │ (FastAPI)│ │
│ └────┬─────┴────┬─────┘ │
│ │ │ │
│ ┌────┴────┐ ┌───┴───┐ │
│ │PostgreSQL│ │ Redis │ │
│ └─────────┘ └───────┘ │
└──────────────────────────────────────────────────────────┘
How the pieces fit together, including the three interview pipelines and where models run (cloud providers or your own hardware):
All three interview pipelines live in the backend. Modular voice and text chat share the same engagement and adaptive processors; voice-to-voice trades that flexibility for the lowest latency.
OASIS can score participant engagement on every turn (word count, hedging, response latency, voiced energy) and — optionally — adapt the agent with a rule-based, fully audited policy. It ships in a non-acting shadow mode by default, so you can review what the policy would do before letting it touch a real interview.
Details and the exact default texts: docs/ENGAGEMENT_METRICS.md
and docs/ADAPTIVE_BEHAVIOR.md.
You need Docker and an OpenAI API key. That's the minimum to run a complete text or voice interview end-to-end. Other providers are optional and can be added later.
git clone https://github.com/oasis-surveys/oasis-platform.git
cd oasis-platform
cp .env.example .envOpen .env and set two values:
OPENAI_API_KEY=sk-...
SECRET_KEY=some-random-secretThat's enough to start. With just an OpenAI key you get text chat, voice (Whisper STT + GPT-4o-mini-tts), and voice-to-voice (gpt-realtime). Add DEEPGRAM_API_KEY, ELEVENLABS_API_KEY, GOOGLE_API_KEY, etc. later if you want those providers.
docker compose up -dOpen http://localhost. The dashboard is there.
- Click New Study, give it a name.
- Click From Template and pick one of the four research templates (semi-structured qualitative, cognitive interview pretest, open-ended survey follow-up, or telephone survey).
- The agent is Active by default. Copy the share link from the agent page.
- Open the link in a new tab to take the interview yourself, or send it to participants.
Transcripts appear live under the session in the dashboard. Export to CSV/JSON when you're done.
Local testing works? Put OASIS on the internet so participants can actually take interviews. The repo ships a one-command installer that takes a fresh Ubuntu 24.04 VM and turns it into a working OASIS install with HTTPS, a firewall, and auto-security-updates in about 8 minutes. Hetzner Cloud in the EU costs around €5/mo.
ssh root@your-server-ip
curl -fsSL https://raw.githubusercontent.com/oasis-surveys/oasis-platform/main/scripts/install.sh | bashStep-by-step guide (Hetzner signup, DNS, the SSH part): docs/DEPLOYMENT.md. It is genuinely step-by-step. Follow it in order and you will not get stuck.
If you are a research group and you want help with deployment, OASIS runs a pilot program. Email me and I will help you get set up.
See .env.example for every option (Google, Scaleway, Azure, GCP Vertex, self-hosted STT/TTS, RAG embeddings, Twilio, dashboard auth) and the FAQ for self-hosting on HPC and European cloud guidance.
oasis/
├── backend/
│ ├── app/
│ │ ├── api/ # REST + WebSocket endpoints
│ │ ├── models/ # SQLAlchemy ORM models
│ │ ├── schemas/ # Pydantic request/response schemas
│ │ ├── pipeline/ # Pipecat pipeline runner
│ │ ├── knowledge/ # RAG: chunking, embedding, retrieval
│ │ ├── config.py # Environment settings
│ │ └── main.py # FastAPI entry point
│ ├── alembic/ # DB migrations
│ ├── tests/
│ └── Dockerfile
├── frontend/
│ ├── src/
│ │ ├── pages/ # Dashboard + interview widget
│ │ ├── components/ # Shared UI
│ │ ├── contexts/ # React contexts
│ │ └── lib/ # API client, utils
│ └── Dockerfile
├── docker/
│ └── Caddyfile
├── docker-compose.yml
└── .env.example
All external calls are mocked. No API keys needed to run tests.
# Backend
cd backend && pip install -r requirements.txt && pytest tests/ -v --cov=app
# Frontend
cd frontend && npm install && npx vitest runCI runs on every push + weekly scheduled run.
Commercial conversational AI platforms are built for support and sales. Research needs different things:
- Methodological control. Semi-structured guides, probing logic, participant tracking built in, not bolted on.
- Transparency. Reviewers should know what system, models, and data storage you used.
- Affordability. Academic budgets aren't enterprise budgets. Self-hosting with pay-as-you-go API keys is often the only option.
- Data sovereignty. Especially in Europe, running your own infrastructure is often a compliance requirement.
Contributions welcome. Read CONTRIBUTING.md first.
- Bug reports
- Feature requests
- Questions: max.lang@stx.ox.ac.uk
OASIS is licensed under the GNU Affero General Public License v3 (AGPL-3.0).
You're free to use, modify, and distribute OASIS for any purpose, including funded academic research. If you deploy a modified version as a network service, you must make your changes available under the same license. That's the deal.
See the full LICENSE file for details and the FAQ for a plain-English explanation. If you use OASIS in your research, a citation would be appreciated (see below).
@software{lang2026oasis,
author = {Lang, Max M.},
title = {{OASIS}: Open Agentic Survey Interview System},
year = {2026},
url = {https://github.com/oasis-surveys/oasis-platform},
note = {Self-hosted platform for AI-powered conversational interviews},
doi = {10.5281/zenodo.19041570}
}