OpenCluely: an open source Cluely alternative with an invisible overlay
OpenCluely is a free, open source Cluely (alternative), built for technical interviews like DSA, OAs, and CP. It offers an invisible overlay, real-time AI help, Smart Image Processing for question capture, and multi-language support : 100% customizable and private.
At a glance
- What is it?
- OpenCluely is an Electron desktop app that puts AI answers on a screen-sharing-invisible overlay for DSA practice and online assessments. It is free, local by default, and honest about one thing: macOS users must build it from source.
- Who is it for?
- Adopt OpenCluely if you already hold a Gemini API key, work on Windows or Linux, and want a local, inspectable overlay you can read and modify yourself. Skip it if you need a signed macOS app, a zero-configuration install, or a tool whose providers you do not have to supply.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 48 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What OpenCluely is for, and who it is not for
OpenCluely targets a narrow situation: a timed technical screen where you are expected to talk through a problem while someone watches your screen. The README describes it as a desktop app that places a small overlay on your screen which recording and conferencing tools do not capture. You ask by voice or by screenshot, and the model answers in a floating window and an optional chat panel with syntax-highlighted code blocks.
The stated audience is candidates in DSA rounds, online assessments and competitive programming, with prompt tailoring for C++, C, Python, Java and JavaScript. That is a real constraint, not a marketing detail: the language list is short, and the README does not describe how prompts are selected, so you are trusting the prompt files under prompts/ to match your language.
It is the wrong tool for anyone who wants a hosted service with an account. There is no login described anywhere in the README, which is why searches for an OpenCluely login lead nowhere useful. You install a binary or run the source, you paste your own provider key, and the app talks to that provider directly. If you are looking for a managed product with a dashboard, this is not it.
How the overlay, screenshot capture and streaming answers fit together
The architecture visible in the repository is an Electron main process (main.js) with a preload script, several HTML surfaces (index.html, chat.html, llm-response.html, settings.html, onboarding.html), and helper modules for speech (speech-recognition.js) and prompt loading (prompt-loader.js). The renderer windows are the overlay and the chat panel; the main process owns capture and provider calls.
Two input paths exist. Voice goes through a speech provider, either local Whisper or Azure Speech, both configured in .env. Screenshots take a different route: the README says images go straight to Gemini for visual reasoning with no OCR step in between, so the model reads the question from pixels rather than from extracted text. That choice matters. It avoids OCR errors on code with unusual indentation or symbols, and it means every screenshot is a full image request to the provider.
Answers stream back into the floating window, the chat panel, or both, controlled by WHISPER_RESPONSE_TARGET. Session memory is described as conversation-wide, so follow-up questions keep earlier context. The README also states that processing stays on your machine and that the only thing leaving your device is the request sent to the AI provider. That claim is about the app's own behaviour, not about the provider's retention policy.
Installing OpenCluely on Windows and Linux, and building it on macOS
Pre-built installers ship with each release: an NSIS .exe for Windows, a .deb for Debian and Ubuntu that pulls Python, ffmpeg and GTK, and a universal .AppImage that needs no installation. The README says macOS has no pre-built download because the app is unsigned and un-notarized, so Gatekeeper blocks a downloaded build as damaged. macOS users run from source instead.
From source, the documented path is three steps. Clone, run the setup script, then paste a Gemini key when the Settings window opens on first launch.
git clone https://github.com/TechyCSR/OpenCluely.git
cd OpenCluely
./setup.shThe script installs Node dependencies, creates .env from the example, builds a local Whisper virtual environment, points the config at it, and launches the app. On Windows you need Git Bash or WSL to run it. The README states that no manual npm commands are needed.
The script takes flags if you want to control what it does. These are the ones the README lists:
./setup.sh --build # Build a distributable for your OS
./setup.sh --ci # Use npm ci instead of npm install
./setup.sh --no-run # Set up only, do not launch
./setup.sh --install-system-deps # Install sox for the microphone (optional)
./setup.sh --skip-whisper # Skip the local Whisper bootstrapThe only required configuration value is the Gemini key. Speech is optional, and the README is explicit about the consequence: if no provider is configured, the microphone button hides itself across the app. So a fresh install with only GEMINI_API_KEY gives you screenshot-driven answers and no voice input.
GEMINI_API_KEY=your_gemini_api_key_here
# Optional speech provider. Pick one.
SPEECH_PROVIDER=whisper
AZURE_SPEECH_KEY=your_azure_speech_key
AZURE_SPEECH_REGION=your_region
WHISPER_COMMAND=whisper
WHISPER_MODEL_DIR=.whisper-models
WHISPER_MODEL=small
WHISPER_LANGUAGE=auto
WHISPER_DEVICE=auto
WHISPER_CAPTURE_MODE=vad
WHISPER_RESPONSE_TARGET=both
WHISPER_MANUAL_MAX_MS=90000
WHISPER_GPU_IDLE_MS=60000A first real use: launch the app, open Settings, confirm the Gemini key is saved, pick your language, then take a screenshot of a problem statement and watch the answer stream into the floating window. The README states that .env changes are picked up without a restart, so you can adjust the speech target while the app runs.
Where OpenCluely breaks down
The macOS story is the clearest limitation. There is no signed build, and the README's own workaround is to run from source. If your interview machine is a managed Mac where you cannot install Node.js or run a shell script, OpenCluely is not usable there, full stop.
The second limitation is the provider dependency. OpenCluely is a client. Every answer depends on a Gemini key you supply, and image analysis goes directly to Gemini, so there is no offline mode for screenshots. Local Whisper gives you offline transcription, but transcription is not the answer; the answer still needs the network. If your assessment environment blocks outbound API calls, nothing here works.
The third is the capture-detection claim itself. The README says windows stay out of Zoom, Google Meet, Microsoft Teams, Discord and OBS captures, and that the app can hide every window when a share starts. That is a list of specific tools. It is not a general guarantee, and the README does not document what happens with hardware capture cards, virtual machines, or a proctor's own screen recorder. Treat the invisibility as a per-tool property to verify, not a blanket one.
The fourth is voice quality. Automatic voice-activity detection is described as avoiding fixed-timer sentence cuts, but the README gives no accuracy figures for Whisper models, and WHISPER_MODEL defaults to small. On a noisy connection or with heavy accents, you should expect to test this yourself before a real round.
OpenCluely compared with Pluely and other Cluely alternatives
The alternatives people search for fall into two groups. The first is Cluely itself and its hosted descendants, which are products with accounts, billing and a backend you do not control. The second is other open source overlays, of which Pluely is the name that appears most often in searches around this project.
The difference that matters with OpenCluely is where the intelligence comes from. OpenCluely ships no model and no proxy. You bring a Gemini key, and the README states that the only thing leaving your device is the request to the provider. That is a different arrangement from a hosted assistant, where the service holds the key and you hold an account. It also means cost, rate limits and data handling are yours to reason about, not the vendor's.
The second difference is the screenshot path. OpenCluely sends images to Gemini for visual reasoning rather than running OCR first. An overlay that extracts text and then sends text will behave differently on a problem statement that is mostly a diagram or a code block with unusual spacing. Which approach suits you depends on the problems you face, and the README does not offer a comparison.
The third is packaging. OpenCluely publishes Windows and Linux installers and tells macOS users to build from source. If you need a signed installer on every platform, that alone may decide the question for you.
Maintenance, licence and the cost of upgrading
The repository is not archived, and the last push was on 2026-07-29. Three releases landed inside July 2026: v1.8.5 on 2026-07-03, v1.8.6 on 2026-07-10 and v1.8.7 on 2026-07-28. That is a steady release rhythm through that month, and the README states that every build is produced automatically on GitHub Actions and ships with SHA-256 checksums, with each release listing the commits it includes. The checksums are the practical upgrade tool: verify the file you download against the published hash before running it.
Upgrade cost is low for the app and higher for the environment. The Electron shell and the .deb or .AppImage are replaced wholesale. The parts that need attention are .env, the .venv-whisper directory and .whisper-models, since the setup script owns all three. The README does not document a rollback path, so keep a copy of a working .env before you re-run setup.
Licensing needs care here, and this is not legal advice. The repository metadata says Apache-2.0. The README badge says MIT. The package.json in the repository says ISC. Three different identifiers appear in the project's own files, and the LICENSE file at the top level is the one that actually governs. Read it before you redistribute a build or vendor the code into something else.
Editorial conclusion
Adopt OpenCluely if you already hold a Gemini API key, work on Windows or Linux, and want a local, inspectable overlay you can read and modify yourself. Skip it if you need a signed macOS app, a zero-configuration install, or a tool whose providers you do not have to supply. Before relying on it, verify three things in this order: that the overlay really stays out of your specific capture tool, that local Whisper transcribes your microphone acceptably, and that .env holds the provider keys you expect, since the microphone button hides itself when no speech provider is configured. The repository is Apache-2.0, the package.json still says ISC, and the README badge says MIT; resolve that before you redistribute a build.
Frequently asked questions
Is there an OpenCluely login or account?
The README describes no account system. You install the app, paste a Gemini API key into Settings or .env, and the app calls the provider directly. There is nothing to sign in to.
How do I run OpenCluely on macOS?
Build it from source. The README states there is no pre-built .dmg because the app is unsigned and un-notarized, so Gatekeeper blocks a downloaded build as damaged. Clone the repository and run ./setup.sh once Node.js is installed.
Why is the microphone button missing in OpenCluely?
Speech is optional and the README states that if no provider is configured, the microphone button hides itself across the app. Set SPEECH_PROVIDER to whisper or azure in .env, or re-run ./setup.sh so the local Whisper environment is created.
Community notes