Flick is a local-first desktop writing assistant for Windows, macOS, and Linux. Keep the original !command workflow, add fully offline dictation, and draft thoughtful replies from an explicit text selection. Bring your own AI provider; speech stays on your machine unless you explicitly enable text-only post-processing.
Beta status: Stable promotion requires signed/notarized per-platform builds and native acceptance evidence. See RELEASE_CHECKLIST.md.
- Write anywhere: Type
!fix,!formal,!translate:spanish, or a custom command in a text field. Flick replaces the current text using your configured provider. - Draft replies deliberately: Select only the context you want, choose a tone, provide a rough instruction, then edit, copy, or explicitly insert the result.
- Dictate offline: Record through a chosen microphone and run local Whisper transcription with adaptive voice-activity detection.
- Keep control: Configure shortcuts, exclusions, plain-text paste, command templates, optional history, diagnostics export, and English/Spanish UI.
- Open Settings → Write, select Gemini, OpenRouter, or an OpenAI-compatible endpoint, then save your own key. Local compatible endpoints may omit a key.
- Open Models and download a verified speech model for offline dictation.
- Open Dictate and choose a microphone plus Toggle, Push-to-talk, or Hold-or-toggle activation.
- Use Flick in a supported text field:
- Type text followed by a
!command. - Select conversation text and open the reply composer.
- Press the dictation shortcut to record locally.
- Type text followed by a
The default reply shortcut is Ctrl+Shift+Space and dictation shortcut is Ctrl+Space on Windows/Linux; macOS uses Cmd in place of Ctrl.
On the release page, choose the file that matches both your operating system and processor. Windows names are intentional: use x64 for the vast majority of Intel/AMD PCs and arm64 only for Windows on ARM devices such as Snapdragon PCs. An x64 MSI cannot install on Windows ARM; download the matching arm64 MSI (or arm64-setup.exe) instead. macOS builds are published separately for Apple Silicon and Intel.
Flick is designed to stay invisible until you call it. You do not need to learn a new editor or move your work into a separate window.
| If you want to… | Do this | What happens next |
|---|---|---|
| Improve a sentence | Add !fix at the end of the sentence |
Flick replaces that text in the app you are already using. |
| Send a considered reply | Select the relevant message, press the reply shortcut, choose a tone, and state your intent | Review the editable draft, then Copy or explicitly Insert it. |
| Write without typing | Press the dictation shortcut, speak, then press it again (or release it in push-to-talk mode) | Flick transcribes locally and safely pastes the result only if the original field is still active. |
Start with !fix, Casual replies, and the Tiny English model. They are the quickest way to learn the flow. Move to a larger or multilingual model only when you need more accuracy or languages; the Models page displays each download’s disk size before you choose it.
- No dictation: Download a model, then select the correct microphone in Dictate. Approve the OS microphone permission when it appears.
- Nothing is pasted: Flick deliberately refuses to paste into protected fields or after the target app changes. The result remains available to copy.
- Shortcut is ignored: Change it under Advanced, or on restricted Wayland desktops bind a desktop shortcut to the documented Flick CLI action.
- Model download stopped: Use Download again. Flick resumes only when the model server confirms the byte range, and validates the complete file before it appears as installed.
- AI generation is unavailable: Check the provider/key in Write. Local OpenAI-compatible servers can be configured without a key.
| Command | Result |
|---|---|
!fix |
Correct grammar, spelling, and punctuation. |
!formal / !casual |
Adjust professional or friendly tone. |
!shorter / !longer |
Condense or expand text. |
!rephrase |
Say the same thing more clearly. |
!bullet / !explain |
Structure notes or simplify dense text. |
!translate:<language> |
Translate to the named language. |
Create custom commands in Settings → Commands. Template import/export is local and includes only triggers and prompts—never keys, drafts, history, or recordings.
Flick never automatically inspects the screen, chat history, or accessibility tree. It captures only an explicit text selection, restores the clipboard, and opens a compact draft window.
- Select the message(s) to reference.
- Open the composer, choose a tone, and describe the response.
- Generate and edit the draft.
- Choose Copy or explicitly confirm Insert into app.
Context is treated as untrusted prompt data and is sent only when you choose Generate. Flick verifies the original target before insertion; on target change, protected fields, or paste failure, the draft remains available to copy.
Dictation records locally, resamples on-device, applies adaptive voice-activity detection, runs Whisper locally, and can clean filler words or apply personal corrections. Press Escape during recording to discard it without transcription, history, or paste-back.
The catalog includes English-focused Tiny, Base, and Small models plus multilingual Tiny, Base, Small, Medium, Large v3 Turbo, and Large v3 tiers. Downloads are direct HTTPS transfers that stream to .partial, resume only on confirmed byte ranges, verify SHA-256, and atomically install only verified bytes. Compatible user-supplied Whisper .bin files are discovered locally and never uploaded.
Optional AI cleanup is off by default and sends only the final text transcript—not audio—to the configured provider.
The recording overlay stays hidden by default on Linux because some X11/Wayland compositors can steal focus and make paste-back unsafe. Flick prefers xdotool on X11 and wtype (or dotool) on Wayland when installed, then falls back to native input. Where Wayland restricts global shortcuts, bind your desktop shortcut to a Flick CLI action.
- BYOK: Gemini, OpenRouter, and OpenAI-compatible endpoints communicate directly with the provider you configure.
- Keychain-backed credentials: API keys are not stored in the settings JSON file.
- Selection-only context: No automatic OCR, screen capture, chat-history collection, or accessibility-tree scraping.
- Protected-target refusal: Flick blocks known credential-manager apps and user exclusions. Windows also checks the native password-field flag without reading field contents.
- Safe insertion: Dictation and replies verify the original target and restore text clipboard contents after paste transactions.
- Local deletion: Clear history, retained recordings, downloaded models, and stored keys from Settings.
- No telemetry by default: Diagnostics export is explicit and redacted; it excludes credentials, clipboard data, drafts, history contents, and prompts.
| Action | Windows / Linux | macOS |
|---|---|---|
| Reply composer | Ctrl+Shift+Space |
Cmd+Shift+Space |
| Dictation | Ctrl+Space |
Cmd+Space |
| Copy last local result | Ctrl+Alt+C |
Cmd+Alt+C |
| Paste as plain text | Ctrl+Alt+V |
Cmd+Alt+V |
Desktop environments and external hotkey tools can route a fixed action set to a running Flick instance:
flick --open-settings
flick --open-composer
flick --toggle-dictation
flick --cancel-dictation
flick --copy-last-result
Unknown arguments are ignored. The CLI never accepts arbitrary text, prompts, or shell commands.
| Platform | Target | Notes |
|---|---|---|
| Windows | x64, ARM64 | Native password-field protection is available. |
| macOS | Apple Silicon, Intel | Grant microphone/accessibility permissions when prompted. |
| Linux | x64 | X11 is first-class; Wayland may need an input helper and desktop shortcut. |
Prerequisites: Node.js 20+, Rust 1.77+, and Tauri v2 platform prerequisites.
git clone https://github.com/rixabhh/flick.git
cd flick
npm ci
npm run tauri dev
npm test
npm run test:e2e
npm run build
cargo test --manifest-path src-tauri/Cargo.toml
cargo clippy --manifest-path src-tauri/Cargo.toml -- -D warningsThe real local Whisper smoke test is opt-in and needs local model/audio fixtures:
FLICK_WHISPER_MODEL=/path/to/ggml-tiny.en.bin
FLICK_WHISPER_SAMPLE=/path/to/sample.wav
cargo test --manifest-path src-tauri/Cargo.toml transcribes_real_whisper_audio -- --ignored
CI verifies frontend, browser UI, and native targets across Windows x64/ARM64, macOS Intel/Apple Silicon, and Linux x64. GitHub-hosted macOS builds use current macOS 15 runners (macos-15-intel and macos-15) so Intel packaging does not depend on the retired macOS 13 image. Physical hardware, compositor, signing, and notarization checks remain release gates.
src-tauri/src/— Rust services for input, dictation, models, history, providers, diagnostics, and native integration.src/lib/— Svelte command center, composer, overlay, models, history, and UI helpers..github/workflows/— verification and draft-release workflows.CHANGELOG.md— beta release notes.RELEASE_CHECKLIST.md— signing and promotion checklist.
Flick is available under the MIT License.