DEV Community

Cover image for We Built Voice Chat That Lives Entirely in Your Terminal (Yes, Really)
Tombri Bowei
Tombri Bowei Subscriber

Posted on

We Built Voice Chat That Lives Entirely in Your Terminal (Yes, Really)

GitHub Copilot CLI Challenge Submission

This is a submission for the GitHub Copilot CLI Challenge

What we Built

VoiceSync β€” because who needs a GUI when you can have hacker vibes? 😎

We built a fully functional voice chat app that runs entirely in your terminal. It's like Discord and Zoom had a baby and raised it on command-line aesthetics.

Here's what makes it actually sick:

  • πŸŽ™οΈ Real-time voice chat with live waveform visualization (you can literally SEE sound waves)
  • πŸ” End-to-end encryption (AES-256-GCM + Diffie-Hellman because we're not savages)
  • πŸ’¬ Text chat + desktop notifications (so you know when your friend roasts you)
  • 🌍 Works over the internet via ngrok tunnels
  • πŸ€– Built-in AI assistant powered by GitHub Copilot CLI (yeah, Copilot inside Copilot; we went there)
  • πŸ“Š Audio quality indicators showing latency, bitrate, and packet jitter in real-time
  • πŸ‘₯ Join/leave notifications so you know who's lurking

Tech Stack: Node.js, WebSockets, SoX (for audio), Blessed.js (for the terminal UI), and a concerning amount of energy drinks.
Shoutout to my team: @muhammedameen_enesiibrah and @thecodedaniel β€” couldn't have debugged that audio echo nightmare without y'all πŸ™

Demo

Screenshots to Add:


GitHub Repo: [https://github.com/Boweii22/Copilot]

Live Demo Recording: [https://youtu.be/vtDgEqb9GcU]

My Experience with GitHub Copilot CLI

The Good Stuff

Before Copilot: "How do I encrypt WebSocket audio streams again?"

After Copilot: gh copilot suggest "encrypt websocket audio stream nodejs" β†’ instant answers

Copilot CLI was basically our third brain. We integrated it INSIDE the app so users can literally ask questions while using VoiceSync:

[You]: @copilot how does encryption work in this app?
[Copilot]: VoiceSync uses AES-256-GCM encryption with Diffie-Hellman key exchange...

Meta? Yes. Useful? Absolutely.

Real Scenarios Where Copilot Saved Us

  • The Audio Echo Bug from Hell We spent 3 days with the host hearing themselves twice. Copilot suggested checking if the server was broadcasting to itself. One line fix. Pain = over.

gh copilot explain "websocket server broadcasting to sender"

  • SoX Cross-Platform Nightmare

Windows uses -t waveaudio, Mac uses -d, Linux uses... something else? Copilot helped us write a config module that detects the platform and uses the right args.

gh copilot suggest "detect platform and use correct audio device args nodejs"

  • Terminal UI Rendering Issues Text was bleeding across panels like a cursed PowerPoint. Asked Copilot about Blessed.js batched rendering and it explained we were calling screen.render() too many times. Boom, fixed.

The "Oh Damn" Moment

The coolest part? We used Copilot so much during development that we thought: "What if users could do this too?" So we added @copilot as an in-app command. Now anyone using VoiceSync can ask questions without leaving the terminal. It's like having a dev team on standby.

Productivity Boost

Honestly? We probably saved 40-50 hours.

  • No more alt-tabbing to Stack Overflow
  • No more "wait let me Google that"
  • No more deciphering cryptic error messages alone

Copilot CLI became our debugging buddy, our documentation search engine, and our rubber duck all in one.

What We Learned

GitHub Copilot CLI isn't just for writing code β€” it's for understanding code. When we hit errors, instead of rage-Googling, we'd just:

gh copilot explain "SyntaxError: Unexpected token in JSON"

And it'd tell us we were trying to parse binary audio frames as JSON (which... yeah that makes sense now).

Try It Yourself

# Install
git clone https://github.com/Boweii22/Copilot
npm install

# Host a room
npm run host

# Join from another terminal/machine
npm run join -- localhost ABC123 YourName
Enter fullscreen mode Exit fullscreen mode

Full instructions in the README. Works on Windows, Mac, and Linux. Requires Node.js and SoX (we documented EVERYTHING because we're not monsters).

Final Thoughts

We built this in a very short amount of time so it was quite a bit of disturbing stress πŸ˜­πŸ˜… while juggling sleep deprivation. GitHub Copilot CLI was the fourth team member we didn't know we needed. If you've ever thought "I wish I could ask my terminal for help" β€” you can now.

Also if you're still using Discord for voice calls with friends, you're missing out on the superior terminal experience. Come @ us. 😀

Built with: Way too much sweets, GitHub Copilot CLI, and the power of friendship (and WebSockets πŸ˜…)
P.S. β€” Yes, we know P2P would be cooler. That's v2.0. For now, enjoy self-hosted voice chat that actually works.
Team: @_boweii , @muhammedameen_enesiibrah , @thecodedaniel

Top comments (3)

Collapse
 
techsplot profile image
Ayomide olofinsawe

Nice project but I think for your demo you shouldn't have used a background sound, so that we can hear your voices since that is the real aim of the project

Collapse
 
_boweii profile image
Tombri Bowei

Yeah that makes sense actually. Recording the video was kinda stressful and there were a lot of background noises interfering, so I added the background sound to make it feel cleaner overall. But you’re right, the main aim is to clearly hear the voices. I’ll definitely fix that next time. If you try it from my GitHub though, it works properly and you can hear everything clearly.

Collapse
 
techsplot profile image
Ayomide olofinsawe

Okay πŸ‘