Psychologist avatar — voice-first chat, OpenAI-compatible TTS/STT, Rhubarb lip-sync, and FAQ-guided replies
Installation · Development · Build · Verify releases · Changelog
Persona AI is an open-source research demo: a supportive psychologist-style assistant with a 3D VRM/GLB avatar, Rhubarb lip-sync, and OpenAI-compatible chat / TTS / STT. A FastAPI backend loads a small FAQ corpus as a high-priority conversational roadmap (short clarifying questions), synthesizes speech, and derives mouth cues from the audio. The Tauri desktop app bundles the same stack and starts the Python sidecar automatically on launch. The UI opens in voice conversation first.
Disclaimer: This is a research / demo assistant. It does not diagnose or replace professional mental-health care. Configure the emergency contact number in
apps/backend/.env.
Current version: 1.3.3
- Voice-first UI — full-screen voice sanctuary on launch; switch to chat anytime
- Bilingual UI — Persian and English with locale-locked system prompts
- OpenAI-compatible TTS / STT — HTTP speech synthesis and transcription
- Rhubarb lip-sync — mouth cues from the WAV (A–H / X → VRM / GLB morphs)
- VRM / GLB avatar — Three.js +
@pixiv/three-vrm; named catalog (Kira,Lucien) - FAQ roadmap —
data/faq_dataset.jsonsteers short, question-led replies (no vector RAG) - Safety layer — high-risk detection and escalation replies
- Desktop app — Tauri + PyInstaller sidecar (Windows NSIS; Linux/macOS via CI releases)
- Themeable UI — themes, voice picker, and face-age controls
Animated preview: assets/media/preview.gif. Full installers: GitHub Releases.
| Requirement | Notes |
|---|---|
| Python 3.10–3.12 | Recommended; 3.14 may break pydantic wheels |
| Node.js 20+ | Desktop build only |
| Rust | Desktop build only |
| LLM API | Ollama, vLLM, GapGPT, or any OpenAI-compatible chat endpoint |
| TTS / STT API | OpenAI-compatible speech endpoints (often the same provider as chat) |
git clone https://github.com/Satan2049/persona-ai.git
cd persona-ai/apps/backend
python -m venv .venvWindows: .venv\Scripts\activate · Linux/macOS: source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # Windows: copy .env.example .envEdit apps/backend/.env — set MODEL_* and optionally TTS_* / STT_*. Then from the repo root:
scripts\start-backend.bat # Windows
./scripts/start-backend.ps1 # PowerShell
Open http://127.0.0.1:8000/ · Health check: http://127.0.0.1:8000/health
Download the latest installer from GitHub Releases.
On first launch the app:
- Starts the bundled
persona-backendsidecar on a local port - Waits for
/health, then loads the UI in voice mode - Shows setup tips if the LLM or TTS API is misconfigured
Verify downloads with docs/TRUST.md.
persona-ai/
├── apps/
│ ├── backend/ # FastAPI, TTS, STT, Rhubarb, FAQ guidance
│ └── desktop/ # Tauri + sidecar packaging
├── assets/ # Icons, media (screenshots/GIF), avatars source, default.env
├── data/ # FAQ corpus
├── docs/ # Architecture, trust, voice, release notes, data layout
├── scripts/ # Dev and release helpers
└── ui/ # Static avatar + voice UI
| Task | Command |
|---|---|
| Start API (dev) | scripts/start-backend.bat |
| Sync UI → desktop | .\scripts\sync-desktop-ui.ps1 |
| Desktop dev | npm run sidecar:build then npm run desktop:dev |
| Ensure Rhubarb | npm run rhubarb:ensure |
| Backend docs | apps/backend/README.md |
| Desktop docs | apps/desktop/README.md |
| Changelog | CHANGELOG.md |
| Release notes (1.3.3) | docs/release-notes-1.3.3.md |
Not in git: API keys, generated apps/audio/ cache, downloaded tools/rhubarb/.
Windows:
npm run sidecar:buildLinux / macOS:
chmod +x scripts/build-sidecar.sh
./scripts/build-sidecar.shnpm install
.\scripts\sync-desktop-ui.ps1
npm run sidecar:build
npm run desktop:build- Windows:
apps/desktop/src-tauri/target/release/bundle/nsis/ - Linux / macOS: GitHub Actions uploads AppImage/deb/DMG (+
SHA256-*.txt) onv*tags
.\scripts\generate-sha256.ps1 -ReleaseDir "dist\release"See docs/TRUST.md and docs/release-notes-1.3.3.md.
| Layer | Technology |
|---|---|
| Frontend | HTML, CSS, vanilla JavaScript (ui/) |
| Avatar | Three.js + @pixiv/three-vrm (VRM / GLB) |
| API | FastAPI + Uvicorn |
| Style context | FAQ JSON roadmap (static prompt injection) |
| TTS / STT | OpenAI-compatible HTTP |
| Lip sync | Rhubarb Lip Sync |
| LLM | OpenAI-compatible HTTP |
| Desktop | Tauri 2 + PyInstaller sidecar |
- docs/architecture/overview.md — system overview
- docs/voice-conversation.md — voice-first flow
- docs/desktop-data-layout.md — install / AppData layout
- docs/TRUST.md — verify release hashes
- docs/release-notes-1.3.3.md — v1.3.3 release notes
- assets/avatars/README.md — replace avatars
- assets/media/README.md — screenshots / preview GIF
MIT — see LICENSE.