7 KiB
7 KiB
Clio - Consolidated TODO
Architecture Overview
┌─────────────────────────────────────────────────────────────────────────┐
│ TARGET ARCHITECTURE │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────────────────────────────────────────┐ │
│ │ Phone │───────▶│ Server (10.0.0.45) │ │
│ │ (Android)│ push │ - Storage hub (recordings) │ │
│ └──────────┘ │ - clio-api (FastAPI) │ │
│ │ - clio-ui (React frontend) │ │
│ ┌──────────┐ │ - Database (highlights, transcripts) │ │
│ │ Pi │───────▶│ - Forgejo (code.hallocks.xyz) │ │
│ │(portable)│ push └──────────────────────────────────────────────┘ │
│ └──────────┘ │ │
│ │ pulls recordings │
│ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Desktop (10.0.0.130) │ │
│ │ - GPU: RTX 3090 │ │
│ │ - clio-ai/transcription (Whisper) │ │
│ │ - clio-ai/real_time (wake word detection) │ │
│ │ - Off at night (non-critical) │ │
│ └──────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Immediate Tasks
Infrastructure Setup
- Import Pi recorder code (systemd setup) → clio-pi/
- Migrate ~100s GB of recordings from Pi to server storage
- Pi: Add sync script to push recordings to server
- Pi: Auto-detect audio device (currently hardcoded to hw:1)
- Set up Forgejo repos for all clio-* projects
- Configure Forgejo Actions for server deployments (10.0.0.45)
- Create backup strategy for viewer, highlights, and database
Deployment Pipeline
- clio-api: Forgejo Actions → deploy to 10.0.0.45
- clio-ui: Forgejo Actions → deploy to 10.0.0.45:/var/www/recordings-viewer
- clio-ai: Manual deploy to desktop (10.0.0.130) - not via Actions
Feature Backlog
High Priority
- QR code for key import (avoid email/typing)
- Server URL configuration in app UI
- Manual sync trigger button
- View sync history/status in app
- Display last successful sync time on phone
- Server status page/dashboard:
- When phone/pi last synced
- Total recordings count
- Recent uploads
- Disk space usage
Wake Word / Voice Recognition (clio-ai)
- Manage wake words in UI (currently hardcoded)
- Centralize voice recognition training data
- Real-time detection improvements (currently sucks even on desktop)
- Future: Real-time detection on phone/pi (low priority)
Audio Analysis & Intelligence
- Speech detection bar in recording detail view
- Sleeping/silence detection for overnight recordings
- Auto voice recognition / speaker identification
- Auto highlight generation (audio-based, not text search)
Viewer UX
- Background audio playback (mini player across views)
- Highlight duration (currently point-only, add end time)
- Auto-scroll timeline to recordings
Medium Priority
- Configurable recording quality (bitrate, sample rate)
- Configurable segment duration (currently 2 hours)
- Delete synced files automatically (with retention)
- Server authentication for upload endpoint
- Server HTTPS with Let's Encrypt (partially done via Caddy)
Low Priority / Nice to Have
- Multiple server destinations
- Compression before encryption
- Resume interrupted uploads
- Docker container for server
Questions to Resolve
Key Rotation
- What happens when server keypair changes?
- Options:
- Keep old private key archived
- Sync all files before rotating
- Store key version in encrypted file header
Manual Decryption
- Document steps to decrypt files copied via USB
- CLI tool needed
Desktop Worker Architecture
- How does desktop pull recordings from server?
- How does it push transcriptions back?
- Queue system needed?
Known Limitations
- No streaming encryption: Entire temp file must complete before encryption
- No partial sync: If upload fails, whole file retries
- Single server: Can only sync to one destination at a time
- No authentication: Relies on encryption for confidentiality
- Desktop off at night: Real-time detection unavailable
Repository Structure
/work/projects/clio/
├── clio-api/ # FastAPI server (recordings, highlights, transcripts)
├── clio-android/ # Android recording app
├── clio-ui/ # React frontend (viewer)
├── clio-ai/ # ML/AI components
│ ├── real_time/ # Wake word detection, voice classifier
│ └── transcription/ # Whisper transcription scripts
├── clio-pi/ # Raspberry Pi recorder
│ ├── bin/ # Recording scripts
│ ├── systemd/ # Service units
│ └── setup.sh # Pi setup script
└── clio-infra/ # Deployment, configs, docs
├── nixos/ # NixOS modules
├── scripts/ # Deploy scripts
└── TODO.md # This file
Hosts
| Host | IP | Role |
|---|---|---|
| Server | 10.0.0.45 | Storage, API, UI, Forgejo |
| Desktop | 10.0.0.130 | GPU transcription, real-time detection |
| Phone | (mobile) | Recording source |
| Pi | (TBD) | Portable recording source |