Opencluely now has a real backend wired into the floating bar instead of placeholder data.
src/backend/contracts/: typed session, provider, transcript, note, and screen context modelssrc/backend/providers/: Groq STT, Gemini Live STT, local faster-whisper STT, assist, vision, and provider selectionsrc/backend/services/: rolling transcript store, local notes engine, and screen capturesrc/backend/session/: Qt-safe session orchestrator, prompt composition, and persistencesrc/backend/audio_capture/: Windows-first microphone, loopback, and mixed capture pipelinesrc/ui/floating_bar.py: real controller/view integration for Chat, Transcript, Notes, top actions, and options
- STT
auto: Groq Whisper Turbo -> Gemini Live -> local faster-whisper - Assist
auto: Gemini -> Groq -> local degraded summary mode - Screen analysis: Gemini first, Groq vision fallback, clear degraded state if neither is available
Current defaults in src/backend/settings.py:
GROQ_AUDIO_MODEL=whisper-large-v3-turboGEMINI_LIVE_MODEL=gemini-2.5-flash-native-audio-preview-12-2025OPENCLUELY_STT_PROVIDER=autoOPENCLUELY_AUDIO_SOURCE=auto
- The floating bar autostarts a listening session
Pausepauses capture without killing the sessionStopstops capture/transcription cleanlyView screentoggles screen-aware mode and captures immediately when enabledIncognitodisables durable sensitive persistence and clears temporary screenshotsOptionsexposes provider selection, audio source selection, key detection, restart, reset, and manual screen capture
- Runtime data stays outside the repository through
src/runtime/paths.py - Sessions are persisted under the runtime home only when
OPENCLUELY_PERSIST_SESSION_DATA=true - Incognito mode redacts transcript/chat/notes/screen summary from persisted state
- Temporary screenshots are cleared when incognito is enabled or the session is closed/reset
Backend tests:
python -m unittest discover -s tests/backend -p "test_*.py"UI smoke tests:
python -m unittest discover -s tests/ui -p "test_*.py"Headless bootstrap smoke:
$env:QT_QPA_PLATFORM = "offscreen"
@'
import sys
from pathlib import Path
sys.path.insert(0, str(Path("src").resolve()))
from PySide6.QtWidgets import QApplication
from ui.floating_bar import FloatingBar
app = QApplication([])
bar = FloatingBar({"language": "pt-BR"}, autostart=False)
print("smoke-ok")
bar.close()
app.quit()
'@ | python -- No speaker diarization is fabricated; transcripts are single-stream unless a provider exposes reliable structure
- Screen context is on-demand or toggled, not continuous background capture
- Gemini Live requires
google-genaiplus a validGEMINI_API_KEY - The combined command
python -m unittest discover -s tests -p "test_*.py"is not used because the legacytests/backendandtests/uifolder names shadowsrc/backendandsrc/uiduring root-level discovery