uScribe is your personal AI-powered writing assistant that helps you draft and refine content seamlessly - wherever you type.
- Rich note editor for writing and organizing notes
- AI autocomplete while you type
- Inline text revision with accept/reject preview
- Global revision shortcuts that work outside the app
- Configurable providers: OpenAI, Azure OpenAI, Claude, Ollama, LiteLLM
- Custom revision shortcuts (local or global)
When uScribe is not focused and you trigger a global shortcut, it:
- Copies your selected text from the active app
- Sends it to your active AI provider for revision
- Pastes the revised text back into the original app
Built-in global shortcuts:
Ctrl/Cmd + Shift + 1: Revise TextCtrl/Cmd + Shift + 2: Quick Edit (prompts for a custom instruction)
Tab: Accept autocomplete suggestionEsc: Dismiss autocomplete suggestionShift + Tab: Toggle autocomplete on/off
- Electron + Vite + React + TypeScript
- Lexical editor for rich text editing
robotjs+ Electron global shortcuts for cross-app revision
- Node.js 18+ (recommended)
- npm
- For local models: Ollama (optional, install from https://ollama.com/download first)
uScribe has been mainly tested on macOS. Windows and Linux support is available but has not been fully tested yet.
npm install
npm run devThen open Settings in the app and:
- Add at least one AI provider
- Save/select an active provider
- (Optional) Add custom shortcuts and set their scope (
localorglobal)
- OpenAI / Claude / Azure / LiteLLM: API key required
- Ollama: no real API key required (
ollamais used internally) - Azure: endpoint/base URL is required
npm run buildUseful scripts:
npm run dev– run in developmentnpm run build– production build + packagingnpm run build:dir– unpacked build outputnpm run typecheck– TypeScript checknpm run lint– ESLintnpm run rebuild:native– rebuild native deps (e.g.,robotjs)
uScribe stores:
- Notes as JSON files in your Documents folder under
Documents/uscribe - Config in Electron app
userData(config.json) - API keys encrypted with Electron
safeStorageinuserData(keys.json)
If run outside Electron (browser-only fallback), localStorage is used instead.
- macOS global shortcuts not triggering:
- Grant uScribe access in Privacy & Security → Accessibility
- Notes not saving/loading on macOS:
- Allow uScribe access to the Documents folder (notes are stored in
Documents/uscribe)
- Allow uScribe access to the Documents folder (notes are stored in
- Global shortcuts not triggering:
- Ensure uScribe is running and has registered shortcuts
- Check if another app already owns the same shortcut
- Background revision says no provider:
- Set an active provider in Settings
- Native module issues (
robotjs) after install/update:- Run
npm run rebuild:native
- Run
See LICENSE.