Join our Discord
This is where contributors communicate. All project discussions happen here. If you have any questions, Discord is the place to ask.
Prerequisites
- Node.js 22+
- pnpm 10+
Setup
1
Fork and clone
2
Install dependencies
3
Start development
electron-vite. The embedded Hono server starts automatically on a local port.On first launch, macOS will prompt for:- Microphone access
- Accessibility access (required for paste simulation and global key listener)
Project structure
Build
Development workflow
- Create a branch from
main - Make your changes
- Run
pnpm biome check .to verify lint and formatting - Run
pnpm --filter @freestyle-voice/electron typecheck:webto verify types - Commit — husky runs Biome on staged files automatically
- Open a PR against
main
Code style
- Biome for linting and formatting (not ESLint/Prettier)
- 2-space indentation, 80-char line width
- Imports are auto-sorted by Biome
Commit messages
Follow conventional commits:Freestyle Cloud backend
Only needed if you’re working on the Freestyle Cloud transcription provider. Most contributors can skip this section.
/v1/transcribe endpoint. The desktop app calls it when “Freestyle Cloud” is the selected voice model.
-
In the cloud repo’s
apps/server, create local secrets from the template: -
Start the Worker with Wrangler (defaults to
http://localhost:8787): -
Point the desktop app at it by adding this to
apps/electron/.env.local, then restartpnpm dev:
.dev.vars is gitignored — never commit real keys.