Sergei e695b08561 Reduce STT restart delay from 800ms to 300ms
Makes voice conversation feel much more responsive.
The 800ms delay was overkill - 300ms is sufficient for TTS audio to release.
2026-01-28 20:01:13 -08:00
2026-01-27 16:28:23 -08:00
2026-01-27 16:28:23 -08:00

WellNuo Lite

Voice AI companion for elderly care monitoring.


Quick Start

npm install
expo-sim 8081  # Запуск на симуляторе

App Store Build & Submit

Credentials

Parameter Value
Bundle ID com.wellnuo.BluetoothScanner
Apple Team ID UHLZD54ULZ
ASC App ID 6756594148
ASC API Key ID GA9C2GRPHS
ASC Issuer ID dcac5647-0710-4764-affd-2d3270bf49d4
API Key File AuthKey_GA9C2GRPHS.p8

Build iOS for TestFlight

./build-ios.sh production

Или вручную:

export EXPO_APPLE_TEAM_ID="UHLZD54ULZ"
export EXPO_APPLE_TEAM_TYPE="INDIVIDUAL"
export EXPO_ASC_KEY_ID="GA9C2GRPHS"
export EXPO_ASC_ISSUER_ID="dcac5647-0710-4764-affd-2d3270bf49d4"
export EXPO_ASC_API_KEY_PATH="$(pwd)/AuthKey_GA9C2GRPHS.p8"

npx eas-cli build --platform ios --profile production

Submit to TestFlight

После завершения сборки:

eas submit --platform ios --latest

Check Build Status

eas build:list --platform ios --limit 5

Julia AI Voice Agent

Architecture

Mobile App (LiveKit SDK)
        ↓
    LiveKit Cloud
        ↓
    Julia AI Agent (CA_zKZCpX36ZT5C)
        ├── STT: Deepgram Nova-2
        ├── LLM: OpenAI GPT-4o
        └── TTS: Deepgram Aura Asteria

Quick Reference

Item Value
Agent ID CA_zKZCpX36ZT5C
Agent Name julia-ai
LiveKit Cloud live-kit-demo-70txlh6a.livekit.cloud
Token Server URL https://wellnuo.smartlaunchhub.com/julia/token

Project Structure

julia-agent/
├── julia-ai/                   # LiveKit Agent (Python)
│   ├── src/agent.py           # Main agent code
│   ├── livekit.toml           # Agent deployment config
│   ├── .env.local             # API keys (OPENAI, DEEPGRAM)
│   ├── pyproject.toml         # Python dependencies
│   └── Dockerfile             # Deployment container
└── token-server/               # Token Server (Node.js)
    ├── server.js              # Express server
    └── .env                   # LiveKit credentials

How It Works

  1. Mobile app requests token from Token Server
  2. Token Server generates JWT with room + agent config
  3. Mobile app connects to LiveKit Cloud with token
  4. LiveKit Cloud spawns Julia AI agent in the room
  5. Agent handles voice conversation using STT → LLM → TTS pipeline

Editing Agent Behavior

Agent configuration is in julia-agent/julia-ai/src/agent.py:

Change AI personality (system prompt):

# In build_system_prompt() function - line 77
return f"""You are Julia, a compassionate AI care assistant...

Change voice model:

# Line 186 - TTS model
tts=deepgram.TTS(model="aura-asteria-en"),  # Female voice
# Options: aura-asteria-en, aura-luna-en, aura-stella-en

Change LLM model:

# Line 181-184 - LLM model
llm=openai.LLM(
    model="gpt-4o",  # or "gpt-4o-mini" for faster/cheaper
    api_key=os.getenv("OPENAI_API_KEY"),
),

Change STT model:

# Line 179 - Speech-to-text
stt=deepgram.STT(model="nova-2"),  # Most accurate

Change initial greeting:

# Line 212-214 - First message when user connects
await session.generate_reply(
    instructions="Greet the user warmly as Julia..."
)

Deploy Agent Changes

cd julia-agent/julia-ai

# Install LiveKit CLI (if not installed)
brew install livekit/tap/lk

# Deploy to LiveKit Cloud
lk agent deploy

The agent will be rebuilt and deployed automatically. Takes ~2-3 minutes.

Token Server

Generates LiveKit tokens for mobile app connections.

Location: root@91.98.205.156:/var/www/julia-token-server/ PM2 process: julia-token-server URL: https://wellnuo.smartlaunchhub.com/julia/token

API:

POST /token
Body: { "userId": "user-123" }
Response: { "token": "...", "roomName": "...", "wsUrl": "wss://..." }

Update token server:

# Copy changes to server
scp julia-agent/token-server/server.js root@91.98.205.156:/var/www/julia-token-server/

# Restart
ssh root@91.98.205.156 "pm2 restart julia-token-server"

Environment Variables

Agent (.env.local):

OPENAI_API_KEY=sk-...
DEEPGRAM_API_KEY=...
LIVEKIT_URL=wss://live-kit-demo-70txlh6a.livekit.cloud
LIVEKIT_API_KEY=...
LIVEKIT_API_SECRET=...

Token Server (.env):

LIVEKIT_API_KEY=APIEivUcPW3WSrV
LIVEKIT_API_SECRET=...
PORT=3001

Testing Locally

cd julia-agent/julia-ai

# Install dependencies
uv sync

# Download required models (first time)
uv run python src/agent.py download-files

# Test in console
uv run python src/agent.py console

# Run for frontend connection
uv run python src/agent.py dev

LiveKit Dashboard

Monitor agent sessions and logs: https://cloud.livekit.io


Project Structure

WellNuoLite/
├── app/                    # Expo Router screens
│   ├── (auth)/            # Auth flow screens
│   └── (tabs)/            # Main app tabs
├── components/            # Reusable components
├── services/              # API, navigation
├── contexts/              # React contexts
├── julia-agent/           # LiveKit AI agent
│   └── julia-ai/
│       └── src/agent.py   # Main agent code
├── AuthKey_GA9C2GRPHS.p8  # ASC API Key
├── build-ios.sh           # iOS build script
├── eas.json               # EAS configuration
└── app.json               # Expo configuration

Resource URL
App Store Connect https://appstoreconnect.apple.com
EAS Dashboard https://expo.dev/accounts/serter20692/projects/WellNuo
LiveKit Dashboard https://cloud.livekit.io
Privacy Policy https://wellnuo.smartlaunchhub.com/privacy.html
Support https://wellnuo.smartlaunchhub.com/support.html

Full App Store Instructions

See: /Users/sergei/Desktop/WellNuo/INSTRUCTIONS_APP_STORE.md

Contains:

  • Screenshots requirements
  • App Store texts (copy-paste ready)
  • Privacy labels
  • Review notes
  • Checklist before submission
Description
No description provided
Readme 2.7 MiB
Languages
TypeScript 84.8%
JavaScript 7.2%
Python 6.7%
Dockerfile 1%
Shell 0.3%