Forked from dearhermes.com — built on the Dignified Technology design philosophy.
A local-first AI writing tool that structures your thinking without doing the writing for you.
Write in a 5-tab markdown editor, get streamed chat feedback with inline highlights. Bring your own Anthropic or OpenAI API key — no accounts, no cloud, no tracking.
Hermes v0.3.0 — macOS (Apple Silicon)
The app is unsigned. Right-click → Open to bypass Gatekeeper on first launch.
- Multi-project support — create, rename, and switch between independent writing projects
- TipTap markdown editor with 5 tabbed pages (Coral, Amber, Sage, Sky, Lavender) per project
- AI assistant chat with inline highlights and source citations
- BYOK — use your own Anthropic or OpenAI API keys
- Model selector — Claude Sonnet 4.6, Haiku 4.5, Opus 4.6, GPT-4o, GPT-4o Mini
- Workspace folders — drafts saved as markdown files on disk, per project
- Persistent chat — chat history saved per project and restored across sessions
- Focus mode for distraction-free writing
- Markdown support — paste markdown, use shortcuts, or write with standard syntax
On first launch, Hermes creates a workspace folder at ~/Documents/Hermes. Each project gets its own subfolder with markdown files for each tab and a chat.json for chat history. Existing folders in the workspace are automatically imported as projects.
~/Documents/Hermes/
├── My First Project/
│ ├── coral.md
│ ├── amber.md
│ ├── sage.md
│ ├── sky.md
│ ├── lavender.md
│ └── chat.json
├── Essay Draft/
│ └── ...
You can change the workspace folder in Settings → Workspace.
apps/web— React 19 + Vite frontendserver— Express 5 SSE assistant API (stateless proxy)apps/native/src-tauri— Tauri 2 shell that bundles the server as a sidecarpackages/api— shared types and welcome seed content
No database. API keys are stored locally on-device and sent per-request.
- Node.js 22 (see
.node-version) - npm (comes with Node)
- Rust + Cargo (for native builds only)
# Install Rust (macOS / Linux)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"For full Tauri platform requirements, see Tauri v2 Prerequisites.
npm install
npm run devThis starts the frontend at http://localhost:5176 and the server at http://127.0.0.1:3003.
- Open Settings (gear icon in the top bar)
- Add your Anthropic and/or OpenAI API key → Save
- Select a model in the chat input area and start writing
npm run native:dev # Dev mode (rebuilds sidecar + Tauri)
npm run native:dev:fast # Dev mode (skip sidecar rebuild)
npm run native:dev:debugtools # Dev mode with DevTools enabled
npm run native:build # Production build (.app + .dmg)Server env file: server/.env (all optional for local dev)
FRONTEND_URL=http://localhost:5176
HOST=127.0.0.1
PORT=3003
LOG_LEVEL=info
SENTRY_DSN=
NODE_ENV=developmentNo API keys in server env — they come from the client per-request.
npm run lint
npm run server:typecheck
npm run web:buildSee LICENSE for details.