Shane
d3f9f2c4ed
feat: implement full UPDATE.md review — critical fixes, UI upgrade, infra hardening
...
Critical frontend bugs:
- Add TrackSubscribed/attach() for agent audio playback
- Fix decodeToString TypeError with TextDecoder
- XSS fix: innerHTML -> textContent in addMessage
- Fresh token on reconnect retry
Agent fixes:
- GemmaLLM subclass with reasoning_content fallback wrapper
- Disable Gemma 4 thinking mode via chat_template_kwargs (6.8s -> 0.5s)
- Remove duplicate session-level LLM
- Replace global _active_session with closure-based handler
- asyncio.create_task instead of deprecated get_event_loop
- Explicit silero VAD, topic filter on voice-control
Infra:
- supervisord: all programs log to /dev/stdout
- Dockerfile: uv sync --frozen with committed uv.lock
- nginx config moved to real file, token_server.py no longer served
- entrypoint.sh: cert persisted, only regenerated on IP change
- compose: healthcheck + cert volume
- token_server: CORS removed, room pinned to voice-room
UI upgrade:
- Orb UI with state machine (idle/connecting/listening/thinking/speaking)
- Streaming transcripts via lk.transcription text streams
- Barge-in hint, thinking chip, audio visualizer
- Glassmorphism, chat bubbles, settings sheet, light mode
- PWA manifest, favicon, wake-lock, safe-area insets
- localStorage conversation history
Docs: AGENTS.md drift fixed
2026-08-22 15:21:59 -04:00
Shane
d1eeb01f3d
fix: set SSL_CERT_FILE to correct path for slim base image
2026-08-22 12:51:01 -04:00
Shane
f7e799c9e9
fix: add WEB_MCP_ENABLED + FIRECRAWL_BASE to docker-compose env
2026-08-22 12:41:16 -04:00
Shane
b55e6ed39a
refactor: use MCPToolset instead of deprecated mcp_servers param
...
- Switch from Agent(mcp_servers=[...]) to Agent(tools=[MCPToolset(...)])
- Add WEB_MCP_ENABLED + FIRECRAWL_BASE to supervisord agent env
- Fixes deprecation warning in livekit-agents 1.7
2026-08-22 12:40:07 -04:00
Shane
045ddabac7
feat: web access via MCP (Firecrawl search/scrape) + mcp server attach support
...
- agent/web_mcp.py: stdio MCP server exposing web_search and web_scrape,
backed by the self-hosted Firecrawl stack on xNAS (no API key needed)
- agent.py: Agent now attaches mcp_servers built from config; EXTRA_MCP_SERVERS
env var allows adding arbitrary HTTP/SSE MCP servers as JSON
- Dockerfile: installs livekit-agents[mcp], copies web_mcp.py
- .env.example: WEB_MCP_ENABLED, FIRECRAWL_BASE, EXTRA_MCP_SERVERS documented
2026-08-22 12:29:04 -04:00
Shane
6f2b231938
feat: HTTPS web frontend (self-signed) + server-side token endpoint
...
- nginx serves the UI over HTTPS on 8090 with a self-signed cert
(browsers require a secure context for microphone access)
- added /token endpoint (tiny Python HTTP server) that signs LiveKit
JWTs server-side, keeping the API secret out of the browser
- app.js now fetches a signed token from /token and uses wss:// when
the page is served over HTTPS
- supervisord runs the token-server as a fourth process
2026-08-22 08:31:19 -04:00
Shane
e807ade45d
fix: agent data_received handler + livekit config
2026-08-22 08:24:42 -04:00
Shane
18bbc75216
fix: livekit.yaml config (remove invalid bind_addr field)
2026-08-22 08:15:57 -04:00
Shane
456fd4e7e2
feat: web frontend with voice selector, transcript, LiveKit client
2026-08-22 07:43:31 -04:00
Shane
97633cc585
feat: Dockerfile, docker-compose, livekit.yaml, supervisord.conf
2026-08-22 07:41:58 -04:00
Shane
bbca8505d7
feat: agent.py with Azure STT/TTS + Gemma LLM pipeline, voice switching
2026-08-22 07:40:58 -04:00
Shane
f7ff1c61ac
chore: init project with AGENTS.md, .env.example, .gitignore
2026-08-22 07:39:54 -04:00