Skip to content

AI-powered assistant that listens to your calls and provides intelligent, knowledge-based answers — completely invisible to screen sharing.

License

Notifications You must be signed in to change notification settings

helvecioneto/vars

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VARS (Virtual Agent for Real-time Support)

GitHub release License: GPL v3 Electron GitHub Sponsors

AI-powered assistant that listens to your calls and provides intelligent, knowledge-based answers — completely invisible to screen sharing.

🌐 Visit our WebsiteDownloadFeaturesInstallationUsageDonate

VARS Application Screenshot

💡 Motivation / Motivação

The motivation behind this project came from observing the growing popularity of Desktop Virtual Agents designed to assist candidates during job interviews. However, most of these tools are either paid or have limited features. This inspired me to create a free and accessible solution, recognizing that many job seekers—especially in developing countries like Brazil—may not have the financial means to afford expensive services while searching for employment.

Additionally, this project aims to accelerate changes in recruitment processes. Current selection methodologies often suffer from structural flaws, eliminating excellent candidates while selecting those who merely fit a "non-human" or artificial standard. By leveling the playing field, we hope to encourage a shift towards more authentic and effective evaluation methods.


A motivação para criar este projeto surgiu ao observar a crescente popularização de Agentes Virtuais de Desktop projetados para auxiliar candidatos em entrevistas de emprego. No entanto, a maioria dessas ferramentas é paga ou possui recursos limitados. Isso me inspirou a desenvolver uma solução gratuita e acessível, pois entendo que muitos candidatos, especialmente em países em desenvolvimento como o Brasil, podem não ter condições financeiras para arcar com custos elevados enquanto buscam uma oportunidade no mercado de trabalho.

Além disso, este projeto visa acelerar mudanças nos processos seletivos. As metodologias de seleção atuais muitas vezes sofrem de falhas estruturais, eliminando excelentes candidatos enquanto selecionam aqueles que apenas se encaixam em um padrão "não humano" ou artificial. Ao nivelar o campo de jogo, esperamos incentivar uma mudança em direção a métodos de avaliação mais autênticos e eficazes.


📥 Download

Pre-built Binaries

Download the latest version for your operating system from the Releases page:

Platform Architecture Download
Windows x64 VARS-win-x64.exe
macOS Apple Silicon (M1/M2/M3/M4) VARS-mac-arm64.dmg
macOS Intel VARS-mac-x64.dmg
Linux x64 VARS-linux-x64.AppImage

✨ Features

🔐 Flexible Authentication

  • OpenAI OAuth: Login with your ChatGPT Plus/Pro account — no API key needed
  • OpenAI API Key: Direct API key for full control
  • Google Gemini API Key: Free tier available with generous limits
  • Seamless switching between connection modes

🤖 Multi-Provider AI Support

  • OpenAI: GPT-4o-mini (Fast), GPT-4o (Balanced), GPT-5.2 (Quality)
  • Google Gemini: Gemini 3.0 Flash/Pro, Gemini 2.5 Flash/Pro with free tier
  • 4 Quality Tiers: Free, Fast, Balanced, and Quality — each with optimized parameters
  • Smart Retry: Automatic model fallback with exponential backoff (free tier)

🎙️ Transcription Engine

  • Local Whisper (Free, Offline): Multiple models (Tiny to Medium) — no internet required
  • Cloud OpenAI/Gemini: High-accuracy cloud transcription
  • Real-time Transcription: Live audio streaming support

🧠 Smart Listener

  • Auto-detect questions from live transcription and generate instant AI answers
  • Question queue with visual tabs and status indicators (unviewed, generating, ready)
  • Non-blocking analysis every 5 seconds with smart deduplication
  • Perfect for: Long meetings, interviews, lectures with multiple questions

🎧 Audio Capture Modes

  • System Audio: Capture from calls, meetings, and applications (cross-platform)
  • Microphone Input: Direct recording with device selection
  • Quick Toggle: Switch modes via keyboard shortcut

📸 Screen Capture & Analysis

  • Captures foreground window with cross-platform support
  • Quick actions: Answers, Code analysis, Summary, Custom questions
  • AI-powered image analysis via OpenAI Vision or Gemini Vision

📚 Knowledge Base

  • Upload documents (PDF, TXT, DOCX, MD) for contextual AI answers
  • Vector Store integration (OpenAI Assistants API / Google File Search)
  • Manage files directly from settings UI

👻 Privacy & Stealth

  • Invisible to screen sharing (macOS/Windows content protection)
  • Always-on-top frameless window with adjustable opacity
  • System tray integration with Show/Hide toggle

🖱️ Click-Through Mode

  • Interact with apps behind VARS while keeping window visible
  • Global hotkey (⌥+T / Ctrl+Alt+T) and toolbar toggle
  • Smart control: Hold Ctrl to temporarily interact with VARS
  • Perfect for overlays on top of your workflow

✨ AI Prompt Tools

  • Custom system prompt with AI-powered optimizer
  • Brief Mode: Ultra-short responses for live situations

🌍 Multi-Language Support

  • English, Português (BR), Español interface and responses
  • Language-aware transcription and prompts

🎓 Guided Onboarding

  • 8-step interactive tutorial on first launch with auto-navigation

⌨️ Keyboard-First Design

  • Global hotkeys work in background
  • Text input mode and history navigation
  • Zoom controls (70%–130%)

🔄 Auto-Update

  • Automatic version check on startup with GitHub releases integration

🛠️ Installation

Prerequisites

  • Node.js 18.0 or higher (Download)
  • npm (comes with Node.js)
  • One of the following for AI access:

Install from Source

# Clone the repository
git clone https://github.com/helvecioneto/vars.git
cd vars

# Install dependencies
npm install

# Start the application
npm start

# Or start in development mode (with DevTools)
npm run dev

Platform-Specific Requirements

🍎 macOS
  • macOS 10.15 (Catalina) or later
  • Microphone permission required (system will prompt)
  • Screen Recording permission required for screen capture
🪟 Windows
  • Windows 10 or later
  • No additional permissions required
🐧 Linux
  • X11 or Wayland with XWayland
  • Screen capture requires one of: gnome-screenshot, spectacle (KDE), scrot, or import (ImageMagick)
  • System audio requires PulseAudio or PipeWire with parec
# Ubuntu/Debian
sudo apt install xdotool pulseaudio-utils

# Fedora
sudo dnf install xdotool pulseaudio-utils

# Arch
sudo pacman -S xdotool pulseaudio

⚠️ Note: Screen protection (invisible to screen sharing) does not work on Linux.


📖 Usage

First Launch

  1. Launch VARS (npm start or double-click the app)
  2. The onboarding tour will guide you through initial setup
  3. Choose your Connection mode (OAuth, OpenAI API Key, or Gemini API Key)
  4. Select an AI Model preset
  5. Choose a Transcription engine (Local Whisper recommended for free offline use)
  6. (Optional) Add knowledge base files and click Fit
  7. You're ready to go!

Keyboard Shortcuts

Action macOS Windows/Linux
Start/Stop Recording ⌥ + Space Ctrl + Space
Switch Audio Mode ⌥ + M Ctrl + M
Screenshot Capture ⌥ + Shift + S Ctrl + Shift + S
Toggle Click-Through ⌥ + T Ctrl + Alt + T
Increase Opacity ⌥ + ] Ctrl + Alt + ]
Decrease Opacity ⌥ + [ Ctrl + Alt + [

Audio Recording Workflow

  1. Press Ctrl+Space (or ⌥+Space on Mac) to start recording
  2. Speak or let the system audio play
  3. Press the same shortcut to stop recording
  4. VARS will transcribe and send to AI for analysis
  5. View the response in the floating window

Screen Capture Workflow

  1. Focus the application you want to capture
  2. Press Ctrl+Shift+S (or ⌥+Shift+S on Mac)
  3. Select an action: Answers, Code, Summary, or type a Custom Question
  4. VARS captures the window and analyzes it with AI

Smart Listener Workflow

  1. Click the Smart Listener button (brain icon) in the toolbar to enable
  2. Start recording (Ctrl+Space or ⌥+Space)
  3. As you speak or audio plays, VARS automatically:
    • Detects questions and important points every 5 seconds
    • Generates AI responses for each detected question
    • Shows question tabs in the response window with notification badges
  4. Click any question tab to view its AI-generated answer
  5. When you stop recording, no final response is sent (Smart Listener already provided incremental answers)
  6. Disable Smart Listener to return to standard mode (single response after recording stops)

Best For:

  • Long meetings with multiple topics
  • Job interviews with various questions
  • Lectures or presentations with Q&A segments
  • Extended conversations where context evolves

Click-Through Mode Workflow

  1. Press Ctrl+Alt+T (or ⌥+T on Mac) or click the cursor icon button in the toolbar
  2. Notice the purple glow around the window border indicating click-through is active
  3. Click anywhere to interact with applications behind VARS
  4. To interact with VARS: Hold Ctrl key (macOS/Windows) — the window becomes interactive while held
  5. Toggle the shortcut again to disable click-through mode

Use Cases:

  • Position VARS at the top of your screen for constant AI availability while coding
  • Keep the response window visible on a second monitor for reference
  • Monitor transcriptions while interacting with other applications

Text Input

  • Type directly in the input field ("Ask me anything...")
  • Press Enter to send to AI
  • Use Ctrl+↑/↓ to navigate conversation history

🏗️ Building from Source

Quick Build

# Install dependencies first
npm install

# Build for your current platform
npm run build

Platform-Specific Builds

Windows

npm run build:win

# Or using the batch script
.\scripts\build_win.bat

macOS

npm run build:mac

# Or using the shell script
./scripts/build_all.sh mac

Linux

npm run build:linux

# Or using the shell script
./scripts/build_all.sh linux

Build Output

Platform Output Format
Windows .exe (NSIS installer)
macOS .dmg (separate builds for arm64 and x64)
Linux .AppImage

⚙️ Configuration

Settings Tabs

Tab Description
IA Connection mode, API keys, Model preset, Transcription engine, Local Whisper management
Behavior Language, Brief Mode, System Prompt with AI Optimizer
Knowledge Upload and manage knowledge base files (.pdf, .txt, .docx, .md)
Audio Microphone and system audio device selection
Interface Window opacity control (20%–100%)
About Version info, update checker, donation links

Providers & Models

Provider Tier Model Max Tokens
OpenAI Fast gpt-4o-mini 1,024
OpenAI Balanced gpt-4o 4,096
OpenAI Quality gpt-5.2 16,384
Google Free gemini-3-flash-preview + fallbacks 2,048
Google Fast gemini-3-flash-preview 4,096
Google Balanced gemini-2.5-flash 8,192
Google Quality gemini-3-pro-preview 8,192

Local Whisper Models

Model Size Notes
Tiny 75 MB Fastest, lower accuracy
Base 142 MB Good balance for simple audio
Small 466 MB Recommended — best accuracy/size ratio
Medium 1.5 GB Best accuracy, slower

Configuration Storage

  • Settings: ~/.vars/config.json
  • Whisper Models: ~/.vars/models/
  • OAuth Credentials: ~/.codex/auth.json + macOS Keychain

🗂️ Project Structure

vars/
├── src/
│   ├── preload.js                # Context bridge (Electron IPC)
│   ├── assets/                   # Icons, QR images
│   ├── config/
│   │   ├── models.json           # AI model definitions per provider/tier
│   │   └── prompts.json          # System prompts (EN, PT-BR, ES)
│   ├── main/
│   │   ├── index.js              # App entry point, window, tray, shortcuts
│   │   ├── config.js             # Config load/save/migration
│   │   ├── ipc-handlers.js       # IPC handler registration
│   │   ├── screen-capture.js     # Cross-platform screen capture
│   │   ├── system-audio.js       # System audio capture (PulseAudio/loopback)
│   │   ├── handlers/
│   │   │   ├── ai.js             # AI responses, image analysis, KB, prompt optimizer
│   │   │   ├── audio.js          # Transcription, realtime, whisper management
│   │   │   ├── config.js         # Config IPC handlers
│   │   │   ├── media.js          # Media-related handlers
│   │   │   ├── misc.js           # Miscellaneous handlers
│   │   │   └── window.js         # Window management
│   │   └── providers/
│   │       ├── openai/           # Chat, vision, transcription, assistants, realtime, OAuth
│   │       ├── google/           # Chat, vision, transcription, KB, realtime
│   │       ├── local/            # Local Whisper: whisper.cpp bindings, model manager
│   │       └── shared/           # Retry utilities with fallback
│   └── renderer/
│       ├── index.html            # Main UI
│       ├── main.js               # Renderer entry point
│       ├── events/               # Event handlers
│       ├── history/              # Conversation history
│       ├── input/                # Text input handling
│       ├── onboarding/           # Guided first-run tutorial
│       ├── recording/            # Audio capture & transcription
│       ├── screenshot/           # Screenshot UI
│       ├── settings/             # Settings tabs (API, auto-save, devices, KB, whisper, etc.)
│       ├── state/                # Centralized app state
│       ├── styles/               # CSS modules
│       ├── ui/                   # UI components (response, status, tooltips, zoom, visibility)
│       └── utils/                # Error handling, formatting, bounds
├── scripts/                      # Build scripts (macOS/Linux/Windows)
├── build/                        # Build resources (entitlements)
├── docs/                         # Website files
├── package.json                  # Dependencies & build config
└── README.md

🔧 Troubleshooting

Recording doesn't work
  • macOS: Grant microphone permission in System Preferences → Privacy & Security → Microphone
  • Linux: Ensure PulseAudio/PipeWire is running: pulseaudio --check
  • Check the audio device selection in Settings → Audio tab
Screen capture shows wrong window
  • VARS captures the foreground window, not the window under cursor
  • Make sure the target window is focused before pressing the shortcut
  • On Linux, ensure gnome-screenshot, spectacle, or scrot is installed
AI responses are slow
  • Switch to a faster model preset (Fast instead of Quality)
  • Google Gemini free tier may have rate limits — consider using an API key
  • Check your internet connection
"API key not configured" error
  • Open Settings (⚙️) → IA tab
  • Choose a connection type and enter credentials
  • If using OAuth, click Login and authenticate in the browser
  • If using API key, paste your key and click Test
Local Whisper not working
  • Make sure you downloaded a model in Settings → IA tab → Whisper section
  • The "Small" model (466 MB) is recommended for best accuracy
  • If you get errors, try deleting and re-downloading the model

💖 Support the Project

If VARS helps you in your daily work, consider supporting its development!

GitHub Sponsors

Sponsor

Your sponsorship helps:

  • 🚀 Develop new features
  • 🐛 Fix bugs faster
  • 📚 Improve documentation
  • ☕ Keep the developer caffeinated

Other Ways to Support

  • Star this repository to help others discover VARS
  • 🐛 Report bugs and suggest features via Issues
  • 🔀 Contribute code via Pull Requests
  • 📢 Share VARS with your colleagues and friends

🤝 Contributing

Contributions are welcome! Please read the contributing guidelines before submitting a PR.

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

📄 License

This project is licensed under the GNU General Public License v3.0 (GPLv3).

This license guarantees your freedom to share and change the software, ensuring it remains free software for all its users.

Key Permissions:

  • ✅ Commercial use
  • ✅ Modification
  • ✅ Distribution
  • ✅ Private use

Conditions:

  • ℹ️ Disclose source
  • ℹ️ License and copyright notice
  • ℹ️ Same license (Copyleft)

Disclaimer: This software is provided "as is", without warranty of any kind. Please see the LICENSE file for the full license text and important legal disclaimers regarding the use of recording features.

Privacy & Open Source Transparency: Since this tool is Open Source, all privacy-related logic (audio and screen capture) can be verified directly in the source code. We encourage users to audit the code to ensure transparency and trust regarding how their data is handled.


Made with ❤️ for productive meetings

⬆ Back to Top

About

AI-powered assistant that listens to your calls and provides intelligent, knowledge-based answers — completely invisible to screen sharing.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

No packages published