This project is in active development. Features may change, and some things might break. If you run into a problem or have an idea, open an issue in the Mercury repository. Contributions are welcome!
- English:
README.md - 简体中文:
README.zh-CN.md
Mercury is a native desktop front end for installing, configuring, tracing, and operating Hermes Agent — a self-improving AI assistant with tool use, multi-platform messaging, and a closed learning loop.
Instead of managing the CLI by hand, the app walks through install, provider setup, and day-to-day usage in one place. It uses the official Hermes install script, stores Hermes in ~/.hermes, and gives you a GUI for chat, sessions, the Agents screen, memory, skills, tools, scheduling, messaging gateways, and more.
Mercury is a public fork and adaptation of Hermes Desktop, built around Hermes Agent. The fork keeps the upstream MIT license and attribution intact while adding Mercury-specific work on trace inspection, skill-evolution workflows, run evaluation, and a more product-focused desktop surface.
We expect to keep pulling useful upstream improvements where they fit Mercury's direction.
Mercury is not just a renamed upstream build. This fork is focused on making Hermes usable as a desktop control surface for real agent work:
- Mercury identity and packaging — app name, icons, release metadata, Windows/Fedora packaging, and product docs target Mercury.
- Codex app server path — Codex app server is the recommended provider path, including Codex OAuth-backed app-server capabilities used by the runtime.
- Chat as an operating surface — richer chat activity, model/profile actions, generated titles, profile-aware session metadata, local slash-command traces, token/cost visibility, and clearer tool progress.
- Trace Lab — conversation-level trace inspection with event timelines for user messages, assistant output, tool calls, delegation, approvals, transport errors, artifacts, image generation, and skill-evolution signals.
- Agents and profile isolation — the Agents screen manages profile-backed Hermes workspaces, with profile labels on sessions, per-profile models/tools/skills/memory/persona, and diagnostics for session search latency.
- Verification harnesses — contract tests plus real Electron e2e sweeps for Trace Lab, sessions, and Codex-backed image/artifact flows.
Download the latest build from the Mercury releases page.
| Platform | File |
|---|---|
| macOS | .dmg |
| Linux (any) | .AppImage |
| Linux (Debian) | .deb |
| Linux (Fedora) | .rpm |
| Windows | .exe (NSIS installer) |
Once the manifest has been accepted into microsoft/winget-pkgs, you can install with:
winget install FredLuz.MercuryUntil then, download the .exe from the Releases page.
Windows users: The installer is not code-signed. Windows SmartScreen will warn on first launch — click "More info" → "Run anyway".
sudo dnf install ./mercury-<version>.rpmFedora users: The
.rpmis not GPG-signed. If your system enforces signature checking, append--nogpgcheckto the install command. Auto-update is not supported for.rpmbuilds (limitation ofelectron-updater); reinstall the new.rpmto update.
macOS users: The app is not code-signed or notarized. macOS will block it on first launch. To fix this, run the following after installing:
xattr -cr "/Applications/Mercury.app"Or right-click the app → Open → click Open in the confirmation dialog.
- Guided first-run install for Hermes Agent with progress tracking and dependency resolution
- Codex app server provider path — recommended for Mercury, including Codex OAuth-backed app-server capabilities and real-token agent workflows
- Local, SSH, and remote-aware connection paths — run Hermes locally on
127.0.0.1:8642, use verified SSH-backed profiles, or store/test a pure remote Hermes API URL while profile-bound execution remains fail-closed until remote profile identity can be verified - Streaming chat workspace with SSE streaming, tool progress indicators, markdown rendering, syntax highlighting, activity groups, profile-aware model actions, and generated titles
- Token usage tracking — live prompt/completion token counts and cost display in the chat footer, plus a
/usageslash command - Slash commands —
/new,/clear,/fast,/web,/image,/browse,/code,/shell,/usage,/help,/tools,/skills,/model,/memory,/persona,/version,/compact,/compress,/undo,/retry,/debug,/status, and more - Trace Lab — inspect complete conversations as trace units, expand individual runs, review event timelines, and audit messages, tools, delegation, approvals, artifacts, images, errors, and skill-evolution signals
- Session management — SQLite FTS5 search, date-grouped history, resume/search across conversations, profile labels, and latency-oriented diagnostics
- Agents screen — create, delete, and switch between profile-backed Hermes workspaces with isolated config, models, tools, skills, memory, and persona
- 14 toolsets — web, browser, terminal, file, code execution, vision, image generation, TTS, skills, memory, session search, clarify, delegation, MoA, and task planning
- Memory system — view/edit memory entries, user profile memory, capacity tracking, and discoverable memory providers (Honcho, Hindsight, Mem0, RetainDB, Supermemory, ByteRover)
- Persona editor — edit and reset your agent's SOUL.md personality
- Saved models and providers — manage provider credentials and model configurations across Codex app server, hosted APIs, and local OpenAI-compatible servers
- Scheduled tasks — cron job builder (minutes, hourly, daily, weekly, custom cron) with 15 delivery targets
- Messaging gateways — Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Mattermost, Email (IMAP/SMTP), SMS, iMessage, DingTalk, Feishu/Lark, WeCom, WeChat, Webhooks, and Home Assistant
- Backup, import & debug dump — full data backup/restore and system diagnostics from Settings
- Log viewer — view gateway and agent logs directly from the Settings screen
- Auto-updater and packaging — Electron updater support plus macOS, Windows, AppImage, Debian, and Fedora/RPM build targets
- Test and e2e coverage — Vitest contract coverage plus Electron sweeps for Trace Lab, sessions, and app-server workflows
Mercury also ships a Node CLI named mercury for agents, scripts, CI jobs, and power users that need Mercury without launching Electron. The CLI uses the same shared main-process services as the desktop IPC path, so profile-aware sessions, memory, skills, runtime diagnostics, chat automation, gateway/install operations, and trace side effects stay aligned with the app.
Build it from source with:
npm run build:cliCommon automation examples:
mercury --json sessions list --limit 20
mercury --ndjson chat send "Summarize recent work"
mercury --profile work memory read --json
mercury runtime diagnostic --jsonUse --json for stable success/error envelopes and --ndjson for streaming chat/progress events. See the full CLI contract and command reference for global flags, output shapes, exit codes, connection-mode behavior, and parity with window.hermesAPI.
Trace Lab event timeline![]() |
Trace Lab hardening evidence![]() |
On first launch, the app:
- Asks whether you want to run Hermes locally or configure a remote connection.
- Local mode: checks whether Hermes is already installed in
~/.hermes; if not, runs the official Hermes installer with dependency resolution (Git, uv, Python 3.11+). - Remote mode: prompts for the remote API URL and API key, validates basic reachability, and skips local install. Pure remote HTTP does not currently provide verified profile-bound execution, so chat/title/cron runtime paths fail closed until remote profile identity can be verified.
- Prompts for an API provider or local model endpoint.
- Saves provider config and API keys through Hermes config files.
- Launches the main workspace once setup is complete.
In local mode, chat requests go through a verified profile runtime on http://127.0.0.1:8642 or a profile-specific port, with SSE streaming. In SSH mode, Mercury verifies the profile-bound remote runtime through the tunnel before streaming. Pure remote HTTP can validate a configured endpoint, but profile-bound execution is intentionally unsupported until Mercury can prove the remote API is serving the requested profile. The desktop app parses supported streams in real time, rendering tool progress, markdown content, and token usage as it arrives.
| Screen | Description |
|---|---|
| Chat | Streaming conversation UI with slash commands, tool progress, and token tracking |
| Sessions | Browse, search, and resume past conversations |
| Agents | Create, delete, and switch between profile-backed Hermes agents |
| Skills | Browse, install, and manage bundled and installed skills |
| Models | Manage saved model configurations per provider |
| Memory | View/edit memory entries, user profile, and configure memory providers |
| Persona | Edit the active profile's persona (SOUL.md) |
| Tools | Enable or disable individual toolsets |
| Schedules | Create and manage cron jobs with delivery targets |
| Gateway | Configure and control messaging platform integrations |
| Settings | Provider config, credential pools, backup/import, log viewer, network settings, theme |
| Provider | Notes |
|---|---|
| Codex app server | Recommended provider for Mercury, including Codex OAuth-backed app-server capabilities and app-server-native image/artifact workflows |
| OpenRouter | 200+ models via single API |
| Anthropic | Direct Claude access |
| OpenAI | Direct GPT access |
| Google (Gemini) | Google AI Studio |
| xAI (Grok) | Grok models |
| Nous Portal | Free tier available |
| Qwen | QwenAI models |
| MiniMax | Global and China endpoints |
| Hugging Face | 20+ open models via HF Inference |
| Groq | Fast inference (voice/STT) |
| Local/Custom | Any OpenAI-compatible endpoint |
Local presets are included for LM Studio, Ollama, vLLM, and llama.cpp.
Telegram, Discord, Slack, WhatsApp, Signal, Matrix/Element, Mattermost, Email (IMAP/SMTP), SMS (Twilio & Vonage), iMessage (BlueBubbles), DingTalk, Feishu/Lark, WeCom, WeChat (iLink Bot), Webhooks, and Home Assistant.
Codex app-server image generation, Exa Search, Parallel API, Tavily, Firecrawl, Honcho, Browserbase, Weights & Biases, and Tinker.
- Node.js and npm
- A Unix-like shell environment for the Hermes installer
- Network access for downloading Hermes during first-run install
npm installnpm run devnpm run lint
npm run typechecknpm run test
npm run test:watchnpm run buildPlatform packaging:
npm run build:mac
npm run build:win
npm run build:linux
npm run build:rpm # Fedora/RHEL .rpm onlyWhen the app opens for the first time, it will either detect an existing Hermes installation or offer to install it for you.
Supported setup paths in the UI:
Codex app server(recommended)OpenRouterAnthropicOpenAILocal LLMvia an OpenAI-compatible base URL
Local presets are included for:
- LM Studio
- Ollama
- vLLM
- llama.cpp
Hermes files are managed in:
~/.hermes~/.hermes/.env~/.hermes/config.yaml~/.hermes/hermes-agent~/.hermes/profiles/— named profile directories~/.hermes/state.db— session history database~/.hermes/cron/jobs.json— scheduled tasks
- Electron 39 — cross-platform desktop shell
- React 19 — UI framework
- TypeScript 5.9 — type safety across main and renderer processes
- Tailwind CSS 4 — utility-first styling
- Vite 7 + electron-vite — fast dev server and build tooling
- better-sqlite3 — local session storage with FTS5 full-text search
- i18next — internationalization framework
- Vitest — test runner
- The desktop app depends on the upstream Hermes Agent project for agent behavior and tool execution.
- The built-in installer runs the official Hermes install script with
--skip-setup, then completes provider configuration in the GUI. - Local model providers do not require an API key, but the compatible server must already be running.
- Alternative npm registry routes are supported for environments with restricted network access.
Contributions are welcome! Check out the Contributing Guide to get started.
For the core agent, docs, and CLI workflows, see the main Hermes Agent repository:


