Inspiration

Talking to a computer should be as easy as talking to a person, but most "AI assistants" still live in a chat box you have to type into. We wanted an agent that's always one word away: no window switching, no typing, no friction. ORION is a voice-first desktop assistant that floats on your screen and reacts to you in real time.

What it does

  • Always-on overlay: a frameless, transparent, always-on-top bubble pinned top-center of your screen, draggable, with ESC to exit.
  • Reacts to your voice: live, mic-reactive radial bars animate as you speak, so you know it's listening.
  • Hands-free control: speech-to-text via ElevenLabs feeds a browser agent that acts on what you say.
  • One-click launch: a single Python script starts every terminal and service the stack needs.

How we built it

Layer Tech
Overlay UI Python, PyQt6 (orion_bubble.py)
Audio visualization Live mic input, bars scaled by signal amplitude
Speech-to-text ElevenLabs
Agent Browser agent (Python)
Orchestration Launcher script that spawns all processes

The branding follows the CodeRED look: a rounded-rectangle bubble holding a red multi-point star and the ORION wordmark, with red/white bars.

The bars are driven by the RMS amplitude of each audio frame:

$$ A = \sqrt{\frac{1}{N}\sum_{i=1}^{N} x_i^2} $$

where \( x_i \) is the i-th mic sample and \( N \) is the frame size.

# core idea: map mic amplitude to bar length
level = np.sqrt(np.mean(frame.astype(float) ** 2))
bar_length = min(MAX_LEN, level * GAIN)

Challenges we ran into

  • Transparent, always-on-top windows in PyQt6 behave differently across platforms; getting a frameless, draggable, click-friendly overlay took iteration.
  • Real-time audio without lag: keeping the visualization smooth while the mic stream also fed speech-to-text.
  • Merging parallel work: the voice bubble and the browser-agent/ElevenLabs pipeline were built on separate branches and had to be integrated cleanly.
  • Orchestration: getting several terminals and services to start in the right order from one script.

What we learned

  • Building responsive, custom-painted UIs in PyQt6.
  • Streaming and processing live audio.
  • Wiring speech-to-text into an agent loop.
  • Coordinating a team across feature branches under a deadline.

What's next

  • [Wake word instead of push-to-talk]
  • [More agent skills and integrations]
  • [Cross-platform packaging]

Built with

python · pyqt6 · elevenlabs · numpy · git

Built With

Share this project:

Updates

Submission history