Een onopvallende AI-assistent direct bovenop je scherm
Onlangs stuitte ik op een interessant open-source project genaamd cue. Het is een kleine applicatie die als een semi-transparant venster zweeft boven alle andere programma's, meeluistert met gesprekken, je scherm bekijkt en real-time hints geeft. Het interessantste deel hier is niet eens de LLM-integratie, maar hoe het hulpprogramma zichzelf verbergt tijdens schermdeling in Zoom, Google Meet of Teams.
Als je betaalde diensten zoals Cluely of Interview Coder hebt gezien, voelt het concept bekend aan. De ontwikkelaar van cue besloot een gratis open-source equivalent te bouwen (GPL-3.0 licentie) waarbij je je eigen API-sleutel kunt invoegen en third-party abonnementen kunt overslaan.
Hoe deze assistent werkt
De applicatie splitst inkomende informatie in drie onafhankelijke streams.
Eerste stream — je scherm. Het hulpprogramma maakt een screenshot wanneer je een hotkey drukt of een verzoek verstuurt.
Tweede stream — je microfoon. cue luistert naar het stemgeluid van de computereigenaar en transcribeert spraak naar tekst.
Derde stream — systeemaudio (wat de andere deelnemers zeggen via je koptelefoon). Op Windows werkt systeemaudiocaptuur via loopback zonder extra configuratie. Op macOS vanaf versie 14.4 gebruikt het ScreenCaptureKit via Chromium flags.
De kanalen van de deelnemer en de gebruiker worden apart verwerkt, dus het model weet precies wie welke regel heeft gezegd. Vervolgens wordt de context naar het gekozen taalmodel gestuurd, en de respons streamt woord voor woord direct in het zwevende venster.
Wat cue kan doen
De interface ziet eruit als een compact glaspaneel. De ruimte eromheen is aanklikbaar, dus het interfereert niet met het indrukken van knoppen in je code-editor of browser.
Hier zijn de belangrijkste gebruiksscenario's:
- Taken op het scherm opbreken. Je drukt op een toetsencombinatie (Ctrl+H op Windows of Cmd+H op macOS standaard), en de app legt het scherm vast met code of taakbeschrijving en geeft de oplossingsstappen, werkende code en tijd- en ruimtecomplexiteitschattingen.
- Real-time dialooghints. De "Wat moet ik zeggen?" knop analyseert de recente regels van de andere persoon en suggereert een logische reactie.
- Samenvattingen en vragen. Je kunt op een knop drukken om het gesprek samen te vatten of verduidelijkende vragen over het onderwerp te genereren.
- Vrije-vorm vraagbeantwoording. Je kunt elke vraag typen in het invoerveld, waarbij de screenshot van het geopende venster en de recente discussiegeschiedenis worden gecombineerd.
De instellingen bevatten een cv-veld. Je kunt je professionele achtergrond daar plakken, en de assistent put dan uit echte ervaring bij het beantwoorden van lastige vragen.
Lokale transcriptie en modelselectie
Het project volgt een Bring Your Own Key (BYOK) concept. De auteur heeft geen servers, er is geen telemetrie, en sleutels worden lokaal opgeslagen in het cue-data.json bestand.
Ondersteunde providers zijn onder andere OpenAI, Anthropic Claude, Google Gemini, Azure AI Foundry, evenals alle lokale of aangepaste eindpunten compatibel met OpenAI Chat Completions (bijvoorbeeld Ollama of vLLM).
Als je de audiostream niet naar de cloud wilt sturen, kun je spraaktranscriptie overschakelen naar whisper.cpp. In de audio-instellingen selecteer je de lokale modus en download je het benodigde model, van de base base.en tot meertalige en gekwantiseerde varianten. De applicatie start een lokaal whisper-server proces op een tijdelijke poort en queue audio hierdoor. Audiodata wordt niet naar schijf geschreven, maar blijft alleen in het RAM.
Hoe het venster onzichtbaar blijft tijdens schermdeling
Het meest interessante technische detail van cue is de bescherming tegen verschijnen in screenshots en streams. Het is geen grafische kaart truc of transparantie hack.
Binnen Electron wordt de setContentProtection(true) methode aangeroepen, die direct toegang heeft tot systeemniveau-mechanismen van het besturingssysteem:
- Op Windows wordt de
SetWindowDisplayAffinitycall gebruikt met deWDA_EXCLUDEFROMCAPTUREflag. Windows' window manager (DWM) sluit het venster simpelweg uit van alle capture streams. In oudere Windows 10 builds (voor 2004) resulteerde dit in een zwart rechthoek, maar op nieuwere versies wordt het venster volledig onzichtbaar voor capture. - Op macOS wordt de
NSWindowSharingNoneflag ingesteld. Het vertelt de window server om het venster te verbergen voor streams. Echter, vanaf macOS 15.4 heeft Apple de API gedrag iets veranderd, dus op recente releases wordt 100% onzichtbaarheid niet gegarandeerd.
Er is een nuance voor Zoom. In de clientinstellingen moet je de geavanceerde modus met vensterfiltering inschakelen:
Zonder dit selectievakje probeert Zoom de raw scherm te capturen met voorbijgaan van venster privacy filters. Voor Google Meet en Microsoft Teams is geen extra configuratie nodig — ze respecteren systeemflags standaard.
Installatie en uitvoering
De makkelijkste manier is om een kant-en-klaar binary te pakken van de releases pagina van de repository. Builds zijn beschikbaar voor Windows x64 en macOS op Apple Silicon processors.
Als je het project vanaf source wilt bouwen, heb je Node.js versie 22.12 of nieuwer nodig. De build vereist geen zware native toolchains, omdat de auteur de client expres schreef in pure HTML, CSS en JS zonder extra frameworks:
git clone https://github.com/Blueturboguy07/cue.git
cd cue
npm install
npm start
Als je van plan bent lokale Whisper vanaf source te gebruiken, moet je de binaries voorbereiden voor de eerste launch:
npm run prepare:whisper
Na het starten van de applicatie moet je microfoon- en schermopname-permissies verlenen (op macOS), en vervolgens je API-sleutel plakken in de instellingen.
Conclusie
cue is een duidelijk voorbeeld van hoe standaard Electron en systeem API-functies gecombineerd kunnen worden om een handige metgezel te bouwen voor gesprekken, brainstormen of het oplossen van technische problemen. De code in de repository is compact en goed leesbaar, dus het project is ook geweldig voor iedereen die wil begrijpen hoe audio stream capture en venster zichtbaarheidscontrole werken in desktop applicaties.
Gerelateerde projecten