Skip to content

hu553in/relay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Relay

Hear. Relay. Understand.

CI

Desktop app for live speech transcription and translated captions through the OpenAI Realtime API.

What it does

  • Captures microphone audio, system audio, or both through browser media APIs
  • Streams PCM16 audio chunks from the renderer to an OpenAI Realtime WebSocket session
  • Lets the control window start and stop Relay, choose sources, set the original caption label and target translation language, manage the API key, toggle the overlay, and export transcripts
  • Shows recent original and translated captions in the overlay window
  • Saves transcripts as plain text with source and target language codes

Requirements

  • Bun 1.3.14
  • OpenAI API key with Realtime API access
  • Desktop runtime supported by Electron

Setup

bun ci
bun dev

Open the control window, save an OpenAI API key, choose the original caption label and target translation language, then start Relay.

Configuration

Relay stores app settings locally. Defaults:

Name Default Description
microphone true Capture microphone audio
systemAudio true Capture system audio
originalLanguage en Original transcript label, or auto
translationLanguage ru Target translation language
overlayRows 4 Captions shown in the overlay
overlayOpacity 0.8 Overlay window opacity

The OpenAI API key is stored separately from normal app settings.

Development

bun check
bun check:fix
bun check:types
bun check:unused
bun check:vulns

Build

bun run build

bun run build writes packaged Electron artifacts to release/<version>/.

Release

Versioning is handled through release-it:

bun release:patch
bun release:minor
bun release:major

The release config prepares the next package.json version and pushes a v* tag. It does not publish npm packages or create the GitHub release directly.

Release builds run from Git tags matching v*. The CI workflow builds Linux, macOS, and Windows artifacts and publishes them to the GitHub release.

Release builds are unsigned unless signing credentials are configured outside this repository.

bun postinstall
bun vite build
bun electron-builder --linux --x64 --publish never
bun electron-builder --mac --arm64 --publish never
bun electron-builder --win --x64 --publish never

Runtime behavior

  • The renderer captures audio with Web Audio APIs and sends fixed-size PCM16 chunks through IPC
  • The Electron main process owns the Realtime WebSocket session and app state
  • System audio capture uses getDisplayMedia and requires platform support for shared audio
  • Captions are kept in app state, rendered in the overlay, and exported through the save dialog
  • Settings cannot be edited while Relay is actively connecting or listening

Tech stack

  • Electron, React, TypeScript, Bun
  • Vite, Tailwind CSS, Base UI, lucide-react
  • ESLint, Prettier, Stylelint, Lefthook, Knip

About

Electron desktop app for live speech transcription and translated captions

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors