A voice-activated AI assistant that helps with development tasks and project management through natural language commands.
- Voice Control: Click to activate voice capture and issue commands hands-free
- Wave Animation: Visual feedback with animated waves when listening
- AI Integration: Uses Ollama (gpt-oss:20b) for intelligent responses
- Claude Code Execution: Executes development tasks via Claude Code with dangerous skip permissions
- Text-to-Speech: Provides verbal feedback and responses
- Daily Notes: Take voice notes that are saved to daily markdown files
- Web Interface: Browser-based access from any device
- Network Accessible: Use from phone, tablet, or other computers
- Mobile Friendly: Responsive design for all screen sizes
- Real-time Status: Visual feedback with animated listening indicators
- Manual Note Entry: Type notes directly as backup option
- Same Note Storage: Compatible with desktop version notes
- Python 3.7+
- Ollama server running at http://localhost:11434 (configure in .env file)
- Microphone access
- SpeechRecognition and PyAudio for voice capture
- Claude Code CLI installed and accessible
- pyttsx3 (for text-to-speech)
- Tkinter (usually comes with Python)
- Streamlit >=1.28.0
- Web browser with microphone permissions
- Network access for cross-device usage
- Install core dependencies:
pip install -r requirements.txt- For web version, install additional dependency:
pip install streamlit>=1.28.0- Ensure Ollama is running with the gpt-oss:20b model:
# Start Ollama server
ollama serve
# Pull the model if not already available
ollama pull gpt-oss:20b-
For desktop version, make sure Claude Code CLI is installed and available in PATH.
-
Test microphone permissions on your system.
Listeny is available in two versions:
python3 listeny.pyHow to Use (Desktop):
- Start Listening: Click the blue circle in the center of the window
- Voice Command: Speak your command clearly when the wave animation appears
- Processing: The app will process your command through Ollama AI
- Execution: If it's a development task, it will execute via Claude Code
- Response: Listen to the verbal response
# Install additional dependency
pip install streamlit>=1.28.0
# Run web app (accessible from any device on network)
streamlit run web_app.py --server.port=8501 --server.address=0.0.0.0Access URLs:
- Local: http://localhost:8501
- Network: http://YOUR_LAPTOP_IP:8501
- Find your IP:
ipconfig getifaddr en0(macOS) orip a(Linux)
- Find your IP:
How to Use (Web):
- Start Listening: Click the microphone ποΈ button
- Voice Command: Speak your note command clearly
- Visual Feedback: Watch animated listening indicator
- Processing: Note is processed and saved automatically
- Confirmation: Check status for success message
- Manual Entry: Use text area if voice isn't available
- Network Access: Use from any device (phone, tablet, other computers)
- Mobile Friendly: Responsive design for all screen sizes
- Manual Backup: Type notes if microphone isn't working
- Real-time Updates: Live status and note display
- No Audio Dependencies: No TTS/Pyttsx3 required
- "Create a new Python file called app.py"
- "Run the tests for this project"
- "Build and deploy the application"
- "Refactor this code to be more efficient"
- "Install these dependencies"
- "Check the git status"
- "Write documentation for this module"
- "Make the login page responsive"
- "Add error handling to the API endpoint"
- "Create a unit test for the user service"
Say any of these to save notes to your daily file (works on both desktop and web versions):
- "Note this: meeting with team at 3pm"
- "Remember that I need to review the PR"
- "Take a note: call client tomorrow"
- "Write down: deadline is Friday"
- "Jot down: buy groceries after work"
Note Storage:
- All notes are saved to
notes/YYYY-MM-DD.mdwith timestamps - Both desktop and web versions share the same notes directory
- Each day creates a new markdown file with chronological entries
- Files contain date headers and structured note formatting
βββββββββββββββββββ ββββββββββββββββ βββββββββββββββββββ
β Voice Input β -> β Ollama AI β -> β Claude Code β
β (Microphone) β β (gpt-oss:20b)β β Execution β
βββββββββββββββββββ ββββββββββββββββ βββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ ββββββββββββββββ βββββββββββββββββββ
β Speech Recognitionβ β AI Responseβ β Command Output β
β β β β β β
βββββββββββββββββββ ββββββββββββββββ βββββββββββββββββββ
β β β
βββββββββββββββββββββββββΌββββββββββββββββββββββββ
βΌ
βββββββββββββββββββ
β Text-to-Speech β
β (Response) β
βββββββββββββββββββ
- Host: http://localhost:11434 (configure in .env file)
- Model: gpt-oss:20b
- Update the
ollama_clientinitialization inlisteny.pyif your setup differs
- Uses
--dangerously-skip-permissionsflag for seamless command execution - Commands are detected through keyword analysis (create, make, write, run, execute, build, install, delete, remove)
Listeny operates with a comprehensive system prompt that defines:
- Its identity as Aditya's personal AI assistant
- Available tools and capabilities
- Command examples and usage patterns
- Safety guidelines and behavioral guidelines
listeny.py- Desktop application (Tkinter) with voice processing and integrationsweb_app.py- Web application (Streamlit) with network accessibilityrequirements.txt- Python dependenciesproject.md- Project documentationREADME.md- This fileWEB_README.md- Web-specific documentation and setup guidenotes/- Directory containing daily note files (auto-created, shared by both versions)
Commands are automatically detected through keyword analysis. To add support for new command types:
- Update the
should_execute_with_claude()method with additional keywords - Enhance the system prompt with new command examples
- Test with the specific command type
The interface uses tkinter with a dark theme:
- Wave animation in
animate_waves()method - Color scheme: dark background (#1a1a1a) with blue accent (#4a90e2)
- Responsive 300x400 window size
The Ollama integration can be extended by:
- Switching to different models in the
generate()call - Adding conversation history/context
- Implementing custom prompts for specific domains
-
Microphone not working:
- Check microphone permissions in System Preferences
- Ensure PyAudio is correctly installed
- Try using a different microphone
-
Ollama connection failed:
- Verify Ollama server is running at the specified host
- Check network connectivity to your Ollama server (configured in .env)
- Ensure the gpt-oss:20b model is pulled
-
Claude Code not executing:
- Verify Claude Code CLI is installed and in PATH
- Check if the dangerous skip permissions flag is working
- Review the command detection keywords
-
Text-to-speech not working:
- Ensure pyttsx3 is installed correctly
- Check system audio settings
- Try different voice engines if available
Add debug prints by modifying the code to output:
- Recognized text from speech recognition
- AI responses from Ollama
- Claude Code execution results
This project is open source. Feel free to modify and distribute according to your needs.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
Note: This is a personal assistant project designed for Aditya's workflow. Adapt the system prompt and configurations for your specific use case.