stormydayy/halo-overlay

★ 516⑂ 36

Lightweight opensource AI overlay for live conversations. Hears, sees, suggests.

About stormydayy/halo-overlay

stormydayy/halo-overlay is an open-source project on GitHub, mainly written in Python. Lightweight opensource AI overlay for live conversations. Hears, sees, suggests. It currently holds 516 stars and 36 forks with 0 open issues, and was last pushed on 2026-10-25 (repository created 2026-10-25).

Project Overview

Git Homed tracks it on the Today's Trending board.

GitHub Repository Details

Repository stormydayy/halo-overlay · default branch main · size 741 KB · watchers 4 · source: GitHub REST API and repository README

README

Halo

A minimal AI assistant that floats over your screen. It listens to the conversation, sees what's on your screen, and gives you a short suggestion in the moment: what to say or do. Halo is a from-scratch rewrite of the idea behind sohzm/cheating-daddy, with no bundler, no vendored libraries, and support for any OpenAI-compatible model.

platforms license deps

What's new

| | Cheating Daddy | Halo | |---|---|---| | Models | Gemini Live / Groq / OpenAI / local: four separate code paths | One OpenAI-compatible client: Gemini, Groq, OpenAI, OpenRouter, Ollama, LM Studio, or your own server | | Speech | WebSocket stream to Gemini Live | VAD + Whisper-compatible API (Groq, OpenAI, or a local whisper.cpp / faster-whisper) | | Screen | Screenshot on a timer | Continuous capture with a change detector and a rolling buffer of keyframes | | Recording | None | Optional screen recording straight to disk as .webm | | Security | nodeIntegration: true, no isolation | contextIsolation, sandbox, strict CSP, every IPC call validated, API keys encrypted by the OS | | Code | ~11,700 lines plus vendored libraries | ~3,100 lines, 0 runtime dependencies, no build step | | Tests | None | 27 unit tests (npm test) |

New: Rewind ⏪(v 2.1)

Zoned out and lost the thread? Press Ctrl+Shift+Enter (or the button in the panel). Halo takes the transcript from the last 30 seconds to 5 minutes, plus a few screen keyframes, and answers in three lines:

Here's how it works:

getDisplayMedia ─▶ hidden 

Only meaningful frames make it into the buffer: no duplicates, and nothing from the middle of an animation. The model gets a clean storyboard instead of a hundred identical screenshots. You can also pin frames in the Rewind panel, and they'll be sent along with your next question.

Everything else

Quick start

You'll need Node.js 20 or newer and Python 3.11+.

git clone https://github.com/stormydayy/halo-overlay
cd halo-overlay
npm install
npm start

1. Settings → Model: pick a provider and paste your key (Gemini, Groq, OpenAI, …). Click "Test connection". 2. Settings → Speech recognition: Groq Whisper is a good start (it has a free tier, and you can reuse the same Groq key). 3. On the home screen, choose a profile, add some context (resume, job description, notes) and click Start session.

The default model names are just sensible starting points, and they go out of date fast. The Model field is free text, so use whatever name your provider's docs currently list.

Fully local

Local addresses (localhost, 192.168., 10.) don't need an API key.

Shortcuts

These work globally. You can change them in Settings.

| Action | Windows / Linux | macOS | |---|---|---| | Answer now | Ctrl+Enter | ⌘+Enter | | Rewind (what did I miss) | Ctrl+Shift+Enter | ⌘+Shift+Enter | | Show / hide window | Ctrl+\ | ⌘+\ | | Click-through | Ctrl+M | ⌘+M | | Move window | Ctrl+arrows | ⌥+arrows | | Wipe data | Ctrl+Shift+E | ⌘+Shift+E |

Audio capture by platform

| OS | System audio | Microphone | |---|---|---| | Windows | Loopback via getDisplayMedia | Yes | | macOS | SystemAudioDump helper (from the original project) | Yes | | Linux | Loopback if your environment supports it; otherwise microphone only | Yes |

If system audio isn't available, Halo tells you and carries on with the microphone and screen.

On macOS, grant Screen Recording and Microphone access under System Settings → Privacy & Security.

Privacy

Disclaimer

Halo is a conversation aid, a bit like a stage prompter. Rules vary: many interviews, exams, employers and platforms prohibit outside help or recording, and laws on recording conversations differ from country to country. Check the rules wherever you use it, and tell the other people involved if the law or basic ethics call for it.

Project structure

src/
├── main/                  main process (Node)
│   ├── index.js           window, shortcuts, IPC
│   ├── ai.js              OpenAI-compatible client: streaming chat + speech recognition
│   ├── prompts.js         profiles and message building (answer / rewind / recap)
│   ├── schema.js          settings schema, validation, presets (pure module)
│   ├── store.js           settings on disk + key encryption
│   ├── sessions.js        session history; markdown.js handles export
│   ├── recorder.js        streaming .webm recording to disk
│   └── macAudio.js        macOS system audio (SystemAudioDump → 16 kHz mono)
├── preload.js             narrow contextBridge: the only link to the UI
└── renderer/              UI (ES modules, no build)
    ├── main.js            session, Rewind, AI requests, navigation
    ├── lib/capture.js     screen capture, change detector, frame buffer, recording
    ├── lib/audio.js       audio sources → VAD → WAV → speech-to-text
    ├── lib/vad.js         speech segmentation + WAV encoder
    ├── lib/session.js     session state, question detector
    ├── lib/md.js          safe markdown renderer
    └── views/             settings, history
test/                      27 tests (node:test): validation, SSE streaming against a mock server, VAD, DSP, …

Development

npm start          # run the app
npm run dev        # run with DevTools
npm test           # unit tests (no Electron needed, ~1 s)
npm run check      # syntax check on every file
npm run format     # prettier
npm run dist       # build installers with electron-builder (output in dist/)

There's no build step: the sources run as they are. electron-builder is only needed for installers.

Known limitations

License and credits

GPL-3.0. The idea and the macOS audio helper come from sohzm/cheating-daddy and Mohammed-Yasin-Mulla/Sound.

GitHub Stars & Activity

516Stars
36Forks
0Open issues
PythonLanguage

GitHub Popularity

GitHub stars516
Forks36
Open issues0
Primary languagePython
LicenseGPL-3.0
Stars gained today0
Created2026-10-25
Last pushed2026-10-25

Trending History

Weekly boardrank #70 · ▲ 0 stars

Related GitHub Projects

1

ossu / computer-science

HTML★ 210,458⑂ 26,030▲ 66 stars
→
2

flutter / flutter

Dart★ 180,510⑂ 33,336▲ 143 stars
→
3

ripienaar / free-for-dev

HTML★ 140,215⑂ 14,895▲ 55 stars
→
4

localsend / localsend

Dart★ 96,154⑂ 5,427▲ 305 stars
→
5

AppFlowy-IO / AppFlowy

Dart★ 77,868⑂ 6,110▲ 42 stars
→
6

twitter / the-algorithm

Scala★ 73,988⑂ 13,254▲ 4 stars
→
7

2dust / v2rayNG

Kotlin★ 64,848⑂ 8,426▲ 74 stars
→
8

topjohnwu / Magisk

Kotlin★ 63,555⑂ 19,062▲ 37 stars
→

More Trending Repositories