The invisible desktop assistant that provides real-time insights, answers, and support during meetings, interviews, presentations, and professional conversations.
Tinkle is an open-source, privacy-focused AI assistant that runs as a transparent overlay on your desktop. It can analyze screenshots, process audio, and provide intelligent responses using either local AI models (Ollama) or cloud-based AI (Google Gemini).
- π Smart Screenshot Analysis - Capture and analyze any content on your screen
- π€ Audio Intelligence - Process audio recordings for transcription and insights
- π¬ Contextual Chat - Interactive AI conversations with full context awareness
- π Privacy-First - Option to run completely locally with Ollama
- π» Invisible Mode - Transparent overlay that stays out of your way
- β¨οΈ Global Shortcuts - Control everything with keyboard shortcuts
- π Cross-Platform - Windows, macOS, and Linux support
- Node.js 16+ installed on your system
- Git for cloning the repository
- AI Provider (choose one):
- Gemini API key from Google AI Studio (cloud-based)
- Ollama installed locally from ollama.ai (privacy-focused)
-
Clone the repository
git clone https://github.com/sakshamagarwalm2/Tinkle cd Tinkle -
Install dependencies
npm install
-
Configure environment variables Create a
.envfile in the project root:For Gemini (Cloud AI):
GEMINI_API_KEY=your_api_key_here
For Ollama (Local AI - Recommended for privacy):
USE_OLLAMA=true OLLAMA_MODEL=llama3.2 OLLAMA_URL=http://localhost:11434
-
Start the application
npm start
| Shortcut | Action | Description |
|---|---|---|
Cmd/Ctrl + Shift + Space |
Show/Center Window | Centers and shows the main window |
Cmd/Ctrl + B |
Toggle Window | Show or hide the window |
Cmd/Ctrl + H |
Take Screenshot | Captures screenshot and analyzes it |
Cmd/Ctrl + Enter |
Process/Solve | Generates AI solution from screenshots |
Cmd/Ctrl + R |
Reset/Start Over | Clears all data and starts fresh |
| Shortcut | Action |
|---|---|
Cmd/Ctrl + β |
Move window left |
Cmd/Ctrl + β |
Move window right |
Cmd/Ctrl + β |
Move window up |
Cmd/Ctrl + β |
Move window down |
| Shortcut | Action |
|---|---|
Cmd/Ctrl + Q |
Quit application |
- Capture: Press
Cmd/Ctrl + Hto take a screenshot - Analysis: AI automatically analyzes the content
- Storage: Up to 5 recent screenshots are kept in local storage
- Processing: Screenshots are processed for problem extraction and solution generation
- Automatic window hiding during capture for clean screenshots
- Instant preview with base64-encoded thumbnails
- Queue management with automatic cleanup of old screenshots
- Cross-platform compatibility using the
screenshot-desktoplibrary
- Capture coding problems during interviews
- Screenshot presentation slides for later reference
- Grab error messages for debugging assistance
- Document meeting notes or whiteboard content
- Real-time recording from system microphone
- File processing for uploaded audio files (.mp3, .wav)
- Base64 audio analysis for direct audio data processing
- Automatic transcription and intelligent analysis
-
Voice Recording:
- Click the "Listen" button in the interface
- Speak your question or problem
- Click "Stop Recording" when finished
- AI will transcribe and provide analysis
-
Audio File Upload:
- The system can process audio files in the screenshot queue
- Supported formats: MP3, WAV
- Files are automatically detected and processed
Audio Input β Base64 Encoding β AI Analysis β Text Response
Pros:
- Latest AI technology (Gemini 2.0 Flash)
- Fastest response times
- Superior accuracy for complex tasks
- Advanced vision capabilities
Cons:
- Requires internet connection
- Data sent to Google servers
- Usage costs apply
- API key required
Setup:
- Get API key from Google AI Studio
- Add to
.env:GEMINI_API_KEY=your_key_here - Restart application
Pros:
- 100% private - data never leaves your computer
- No API costs or usage limits
- Works offline
- Multiple model options
Cons:
- Requires local installation
- Slower processing on lower-end hardware
- Limited to locally available models
Setup:
- Install Ollama from ollama.ai
- Pull a model:
ollama pull llama3.2 - Configure
.env:USE_OLLAMA=true OLLAMA_MODEL=llama3.2 OLLAMA_URL=http://localhost:11434
- Restart application
- llama3.2 - General purpose, good balance
- codellama - Specialized for coding tasks
- mistral - Lightweight and fast
- gemma - Google's open model
- Custom models - Any Ollama-compatible model
- Click the "CPU" button in the interface
- Select your preferred provider (Gemini/Ollama)
- Configure settings (API key for Gemini, model for Ollama)
- Click "Apply Changes"
- Test the connection
- Command Bar - Transparent bar with logo and shortcuts
- Chat Interface - Expandable chat window for AI conversations
- Solution Panel - Displays AI-generated solutions and analysis
- Queue Mode: Initial state for taking screenshots and asking questions
- Solutions Mode: Shows AI analysis and solutions
- Debug Mode: Advanced debugging with code comparison
- Liquid Glass Effect: Semi-transparent background with blur
- Always-on-top: Stays visible above other applications
- Minimal UI: Clean, distraction-free interface
- Dark Theme: Easy on the eyes during extended use
npm run dev # Start Vite dev server
npm run electron:dev # Start Electron in development
npm run app:dev # Start both (recommended)npm run build # Build for production
npm run dist # Create distributable packages- Windows:
.exeinstaller and portable version - macOS:
.dmgdisk image - Linux: AppImage and
.debpackage
# Gemini Configuration
GEMINI_API_KEY=your_gemini_api_key
# Ollama Configuration
USE_OLLAMA=true
OLLAMA_MODEL=llama3.2
OLLAMA_URL=http://localhost:11434
# Development
NODE_ENV=developmentWindow won't show:
- Press
Cmd/Ctrl + Shift + Spaceto center and show - Check if window is off-screen, use arrow key shortcuts to move
- Try quitting and restarting:
Cmd/Ctrl + Q
Screenshots not working:
- Ensure screen capture permissions are granted (macOS/Linux)
- Check if antivirus is blocking screenshot functionality
- Try taking screenshot manually with
Cmd/Ctrl + H
AI not responding:
- Gemini: Check API key validity and internet connection
- Ollama: Ensure Ollama service is running (
ollama serve) - Test connection using the "Test" button in settings
Windows:
- Run as administrator if screenshot capture fails
- Check Windows Defender exclusions
- Ensure Node.js is in system PATH
macOS:
- Grant screen recording permissions in System Preferences
- Allow accessibility access for global shortcuts
- Check Gatekeeper settings for unsigned app
Linux:
- Install required dependencies:
sudo apt install libxtst6 libxrandr2 libasound2-dev - Check X11/Wayland compatibility
- Ensure user has access to audio/video devices
- Screenshots: Stored locally in
userData/screenshots, auto-deleted after processing - Audio: Temporarily stored in memory, not saved to disk
- Chat History: Kept in memory only during session
- API Keys: Stored in environment variables, never transmitted
- Full Local Mode: Use Ollama for 100% local processing
- Hybrid Mode: Local screenshots with cloud AI processing
- Cloud Mode: Full Gemini integration with Google's privacy policy
- No telemetry or usage tracking
- No automatic updates without consent
- Open source for full transparency
- Encrypted communication with AI providers
- Frontend: React, TypeScript, Tailwind CSS
- Backend: Electron, Node.js
- AI Integration: Google Generative AI, Ollama API
- Build Tools: Vite, Electron Builder
- Screenshot: screenshot-desktop library
- Audio: Web Audio API, MediaRecorder
Tinkle/
βββ electron/ # Electron main process
β βββ main.ts # Application entry point
β βββ ipcHandlers.ts # IPC communication handlers
β βββ LLMHelper.ts # AI model integration
β βββ shortcuts.ts # Global keyboard shortcuts
βββ src/ # React frontend
β βββ _pages/ # Main application pages
β βββ components/ # Reusable UI components
β βββ types/ # TypeScript definitions
βββ assets/ # Icons and resources
- AppState: Central state management
- WindowHelper: Window positioning and visibility
- ScreenshotHelper: Screenshot capture and management
- ProcessingHelper: AI processing coordination
- LLMHelper: AI model abstraction layer
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
git clone https://github.com/sakshamagarwalm2/Tinkle
cd Tinkle
npm install
npm run app:dev- TypeScript for type safety
- ESLint for code quality
- Prettier for formatting
- Conventional Commits for commit messages
- π Bug fixes and stability improvements
- β¨ New features and AI model integrations
- π Documentation and tutorials
- π Translations and internationalization
- π¨ UI/UX enhancements
- π§ Platform support improvements
ISC License - Free for personal and commercial use.
Copyright (c) 2024 Tinkle Contributors
- Ollama team for local AI infrastructure
- Google for Gemini AI capabilities
- Electron community for desktop app framework
β Star this repo if Tinkle helps you succeed in meetings, interviews, or presentations!