How cqink/johnyassist works
Johnny is a Windows voice assistant: a user speaks a wake-word command, speech is recognized and routed locally or through an optional language model, then an action or scenario runs and the result is spoken and recorded. The graph includes documented image/OCR, face, translation, memory, browser, and plugin capabilities. Some subsystem wiring is inferred only where explicit imports or excerpts support it; unsampled implementations are represented by their exact tree paths, with uncertain links omitted.
Main entry points: controller.py Listening controller · app.py Command pipeline · registry.py Action dispatcher · tts_local.py TTS backends
Components 26
Voice interaction
- Application entry
main.py - Listening controller
johnny/controller.py - Wake-word listener
johnny/listener.py - Speech recognition
johnny/recognizer.py - Audio capture
johnny/audio.py - Speech output
johnny/speaker.py - TTS backends
johnny/tts_local.py
Command handling
- Command pipeline
johnny/app.py - Command router
johnny/router.py - Language-model providers
johnny/brain.py - Scenario runner
johnny/chain.py
Actions and integrations
- Action dispatcher
johnny/actions/registry.py - Browser control
johnny/actions/browser.py - System actions
johnny/actions/system.py - Connector actions
johnny/actions/connector_action.py - Vision and utility connectors
johnny/connectors - Action plugins
johnny/plugins.py
Assistant state
- Conversation history
johnny/history.py - Assistant memory
johnny/memory.py - Configuration
johnny/config.py
User interfaces
- Settings panel
johnny/panel.py - System tray
johnny/tray.py
Other components
- User
- Windows and apps
- Model and connector services
- Optional TTS service
services/tts-server/tts_server.py
Connections 31
- User → Audio capture: speaks into
- Application entry → Command pipeline: starts
- Command pipeline → Listening controller: runs
- Listening controller → Wake-word listener: waits for wake word
- Listening controller → Speech recognition: recognizes speech
- Listening controller → Audio capture: captures audio
- Listening controller → Command pipeline: submits command
- Command pipeline → Command router: matches command
- Command pipeline → Language-model providers: interprets fallback
- Command pipeline → Scenario runner: runs scenario
- Command pipeline → Action dispatcher: dispatches action
- Action dispatcher → Browser control: dispatches
- Action dispatcher → System actions: dispatches
- Action dispatcher → Connector actions: dispatches
- Connector actions → Vision and utility connectors: builds and calls
- Action dispatcher → Action plugins: loads extensions
- Listening controller → Speech output: speaks outcome
- Speech output → TTS backends: synthesizes speech
- TTS backends → Model and connector services: requests voice
- TTS backends → Optional TTS service: requests synthesis
- Listening controller → Conversation history: records turns
- Command pipeline → Assistant memory: uses memory actions
- Command pipeline → Configuration: reads settings
- Listening controller → Settings panel: updates activity
- User → Settings panel: controls assistant
- Settings panel → Listening controller: toggles pause
- System tray → Listening controller: controls assistant
- Browser control → Windows and apps: controls browser
- System actions → Windows and apps: controls system
- Language-model providers → Model and connector services: requests interpretation
- Vision and utility connectors → Model and connector services: requests services