Documents that prompts exist in two repos (Talk-Flow + talkis-proxy) and must be kept in sync when modified. |
||
|---|---|---|
| .agent/workflows | ||
| .cargo | ||
| .github/workflows | ||
| .vscode | ||
| docs/release | ||
| public | ||
| scripts | ||
| site | ||
| src | ||
| src-tauri | ||
| .env.example | ||
| .gitignore | ||
| AGENTS.md | ||
| bun.lock | ||
| CHANGELOG.md | ||
| index.html | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
Talkis
Talkis is a lightweight macOS voice-to-text app built with Tauri.
It sits in a small floating widget, listens while you hold a hotkey, sends audio to Whisper for transcription, cleans up the text with GPT-4o mini, and pastes the result into the active app.
What it does
- Hold
Command + Spaceto start recording - Release the hotkey to stop and process the audio
- The recognized text is pasted automatically into the current app
- A second press during recording locks the recording mode
- The settings window lets you choose language, microphone, API key, and text cleanup style
- Recent recordings are saved in local history
macOS only
Talkis is currently designed for macOS.
The app relies on:
- microphone access
- accessibility permission for automatic text pasting
- a global hotkey
Setup
Before first use, make sure you have:
- macOS
- an OpenAI API key
- microphone access enabled
- accessibility access enabled for Talkis
1. Open the settings window
When the app starts, it opens the settings window automatically.
If it is hidden, click the floating widget to open it again.
2. Grant permissions
On first launch, Talkis asks for:
- Microphone access - required for recording
- Accessibility access - required to paste the final text into other apps
Without accessibility permission, speech can still be processed, but automatic paste may not work correctly.
3. Add your OpenAI API key
Open the Subscription tab and paste your OpenAI API key.
Right now Talkis works with your own API key only.
The key is used for:
whisper-1for speech recognitiongpt-4o-minifor text cleanup
How to use
Basic flow
- Focus any app or text field where you want to insert text
- Hold
Command + Space - Start speaking
- Release the hotkey when finished
- Wait a moment while Talkis processes the audio
- The cleaned text is pasted automatically
Locked recording mode
If you want to speak longer without holding the keys:
- Press and hold
Command + Space - While recording is active, press the hotkey again
- Recording becomes locked
- Press the hotkey once more to stop and process
Settings you can change
- Recognition language
- Input microphone
- Text cleanup style
- OpenAI API key
Text styles
Talkis supports several cleanup styles for the final text. The exact labels may evolve, but the idea is simple:
Classic- neutral cleanup for everyday dictationBusiness- cleaner and more formal phrasingTech- better suited for technical language and terms
History
The Main tab stores recent recordings locally so you can:
- review previous results
- copy text again
- delete individual entries
- clear the full history
History is stored locally on your machine.
Privacy
- Audio is sent to the API endpoints you configure for transcription and cleanup
- By default, Talkis uses OpenAI endpoints
- Your API key is stored locally in the app settings
- Talkis does not require a Talkis account
Advanced configuration
Talkis supports custom compatible endpoints for:
- Whisper transcription
- chat completion / cleanup
If these fields are left empty, the app uses the standard OpenAI API.
Troubleshooting
Nothing gets pasted
- Check that Talkis has Accessibility permission in macOS System Settings
- Make sure the target app allows normal paste input
- Try again in a standard text field like Notes
The microphone list is empty
- Grant microphone permission in macOS
- Reopen the settings window
- Reconnect your audio device if you use an external microphone
The hotkey does not trigger
- Make sure another app is not using the same shortcut
- Restart Talkis after changing macOS permissions
Build fails on external drives with ._* files
macOS can create AppleDouble metadata files on some external volumes. If Tauri fails while reading files like ._default.json or ._default.toml, remove them:
find . -name '._*' -delete
This repository also uses .cargo/config.toml to keep Cargo build artifacts off the external drive.
Development
If you want to run the project locally:
bun install
bun run tauri dev
Useful commands:
bunx tsc --noEmit
bun run build:release:macos
bun run logs
bun run logs:clear
GitHub releases
The repository includes a GitHub Actions workflow at .github/workflows/release.yml.
- The canonical release process is documented in
docs/release/rule.md - Before every release, refresh
README.mdand create a release review file fromdocs/release/review-template.md - Push a tag like
v0.1.8to build and publish a GitHub Release - Or run the workflow manually and provide a tag like
v0.1.8 - The current workflow publishes all currently supported release artifacts, which is macOS only right now
- Windows and Linux are listed in the matrix but intentionally disabled until platform-specific support is added
- For macOS release builds, move
Talkis.apptoApplicationsbefore granting Accessibility access
Optional macOS signing/notarization secrets:
APPLE_CERTIFICATEAPPLE_CERTIFICATE_PASSWORDAPPLE_SIGNING_IDENTITYAPPLE_IDAPPLE_PASSWORDAPPLE_TEAM_ID
Without these secrets, the workflow can still produce unsigned macOS release artifacts.
Tech stack
- Tauri v2
- React
- TypeScript
- Rust
- OpenAI Whisper
- OpenAI GPT-4o mini
Status
Talkis is an active work in progress. Expect rough edges while the interaction model and onboarding continue to improve.