[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-754":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":38,"readmeContent":39,"aiSummary":40,"trendingCount":16,"starSnapshotCount":16,"syncStatus":41,"lastSyncTime":42,"discoverSource":43},754,"hermes-desktop","dodo-reach\u002Fhermes-desktop","dodo-reach","The safest, simplest way to manage Hermes from your Mac. Pure SSH. No gateways, no exposed ports, no browser layer.","https:\u002F\u002Fdodo-reach.github.io\u002Fhermes-desktop\u002F",null,"Swift",1863,133,15,11,0,24,129,613,72,19.38,"MIT License",false,"main",true,[27,28,29,30,31,32,33,34,35,36,37],"agent-tools","apple-silicon","developer-tools","hermes","hermes-agent","macos","remote-development","ssh","swift","swiftui","terminal","2026-06-12 02:00:18","# Hermes Desktop\n\nNative macOS companion for Hermes Agent over SSH.\n\nIt turns the daily Hermes loop into something you can actually live in on a\nMac.\n\nIt brings the parts of the workflow that matter most into one focused window:\nsessions, Kanban, workspace files, usage, skills, cron jobs, and a real\nterminal.\n\nIf Hermes is already part of how you work, the app should feel immediately\nlegible: same host, same files, same profiles.\n\nNo browser wrapper. No gateway API. No daemon on the host. No local mirror. No\nextra sync layer slowly drifting away from the machine that actually matters.\n\nThat restraint is intentional:\n\n- connects directly over SSH\n- keeps the Hermes host as the only source of truth\n- does not depend on a gateway API\n- does not mirror files onto your Mac\n- does not install a helper service on the remote host\n\nThat is the point of the app.\n\nHermes Desktop does not invent a softer second version of Hermes. It makes the\nreal workflow feel calm, fast, and native on a Mac while keeping the model\nvisible. You still know what host you are on, which Hermes profile is active,\nwhere the canonical state lives, and which path the app is actually using.\n\n## Preview\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd width=\"50%\">\n      \u003Cimg src=\"assets\u002Fsessions.png\" alt=\"Hermes Desktop Sessions view\" \u002F>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"50%\">\n      \u003Cimg src=\"assets\u002Fkanban.png\" alt=\"Hermes Desktop Kanban view\" \u002F>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd width=\"50%\">\n      \u003Cimg src=\"assets\u002Ffiles.png\" alt=\"Hermes Desktop Files view\" \u002F>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"50%\">\n      \u003Cimg src=\"assets\u002FUSAGE.png\" alt=\"Hermes Desktop Usage view\" \u002F>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd width=\"50%\">\n      \u003Cimg src=\"assets\u002Fskills.png\" alt=\"Hermes Desktop Skills view\" \u002F>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"50%\">\n      \u003Cimg src=\"assets\u002Fterminal.png\" alt=\"Hermes Desktop Terminal view\" \u002F>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\nSix views from a live Hermes host: sessions, Kanban, workspace files, usage,\nskills, and terminal workflows.\n\n## What You Get\n\n- a native macOS workspace for the Hermes host you already use over SSH\n- profile-aware connection handling for the default Hermes home and named\n  Hermes profiles on the same host\n- the real remote state in one place: sessions, Kanban, workspace files, usage,\n  skills, cron jobs, and terminal work\n- a session workbench for searching session metadata and message content,\n  reading transcripts, pinning important sessions, continuing a chat, and\n  resuming the same session in Terminal\n- a native Kanban workspace for the upstream host-wide Kanban home: the default\n  `~\u002F.hermes\u002Fkanban.db` board plus additional upstream boards when the host\n  supports them\n- direct editing for canonical Hermes files, selected remote text files, and\n  remote `SKILL.md` files, with conflict checks before save\n- an embedded SSH terminal with tabs, themes, and enough room for real\n  multi-agent work across hosts and profiles\n- a universal Mac release for Apple Silicon and Intel, with English,\n  Simplified Chinese, and Russian localization resources in the app bundle\n\nIf Hermes runs there and SSH already works, Hermes Desktop will usually meet you\nthere. That includes:\n\n- Raspberry Pi\n- another Mac\n- a VPS or remote server\n- the same Mac via `ssh localhost`, a local hostname, or a local SSH alias\n\n## Hermes Desktop And The Official Web Dashboard\n\nNous Research now ships the official Hermes web dashboard. That is good news.\n\nThe dashboard is the browser-based management surface for Hermes: configuration,\nAPI keys, logs, sessions, analytics, cron jobs, skills, and browser chat. It is\nthe right place when you want a local web UI around the installation.\n\nHermes Desktop is deliberately different. It is a native Mac workspace for\npeople who want to stay close to the host itself: direct SSH, profile-aware\nremote files, sessions, Kanban, cron jobs, editable skills, usage, and a real\nterminal in one focused app.\n\nThe boundary is simple: browser for administration, Mac app for host work.\nHermes Desktop stays valuable because it does not create another backend around\nHermes. It gives the existing SSH path a native surface.\n\n## Before You Download\n\nSetup is intentionally lightweight. You need only a few things:\n\n- a Mac running macOS 14 or newer\n- SSH access from this Mac that already works in Terminal without interactive\n  prompts\n- the SSH host key already accepted once in Terminal for that target\n- a normal route from this Mac to the Hermes host, such as local LAN, public\n  IP or DNS, VPN, or a Tailscale IP or hostname\n- `python3` available on the Hermes host\n- `hermes` available on the host's non-interactive SSH `PATH` for in-app chat\n  turns and terminal resume workflows\n- a Hermes Agent build with upstream Kanban support if you want the native\n  Kanban workspace; multiple-board management appears when the host exposes the\n  newer upstream board APIs\n- Hermes data under the remote user's `~\u002F.hermes`\n\nSimple rule: if this works in Terminal from this Mac without asking for a\npassword or host key confirmation, the app is usually ready to work too:\n\n```bash\nssh your-host\n```\n\n## Install\n\nInstall takes about a minute:\n\n1. Download `HermesDesktop.app.zip` from the\n   [latest GitHub Release](https:\u002F\u002Fgithub.com\u002Fdodo-reach\u002Fhermes-desktop\u002Freleases\u002Flatest).\n2. Double click the zip to extract `HermesDesktop.app`.\n3. Quit Hermes Desktop if an older version is already running.\n4. Drag `HermesDesktop.app` into `Applications` and replace the old copy if\n   macOS asks.\n5. First launch: right click `HermesDesktop.app`, choose `Open`, then confirm\n   `Open`.\n\nHermes Desktop is currently distributed as a universal macOS build for Apple\nSilicon and Intel Macs. The app is ad-hoc signed and not notarized by Apple, so\nmacOS may show a warning saying Apple cannot verify it for malware. That is\nexpected for this distribution model and does not mean macOS found malware in\nHermes Desktop.\n\nIf macOS blocks the first launch:\n\n1. Click `Done`, not `Move to Bin`.\n2. Right click `HermesDesktop.app` and choose `Open`.\n3. If needed, go to `System Settings` > `Privacy & Security` and click\n   `Open Anyway`.\n\nDo not disable Gatekeeper or run `sudo` commands to install Hermes Desktop.\n\n## Verify The Download\n\nEach GitHub Release includes a SHA-256 checksum for `HermesDesktop.app.zip`.\nCompare it with the value printed locally after downloading:\n\n```bash\nshasum -a 256 HermesDesktop.app.zip\n```\n\nAfter installing:\n\n```bash\ncodesign --verify --deep --strict \u002FApplications\u002FHermesDesktop.app\n```\n\n## Connect Your Hermes Host\n\nOpen the app, go to `Connections`, create a profile, then click `Test` and\n`Use Host`.\n\nYou have two valid ways to fill the connection. In most cases, an SSH alias is\nthe cleanest one:\n\n### Option 1: SSH alias\n\nAn SSH alias is just a short name saved in your Mac's SSH config, so instead of\ntyping a long command every time, you can type something simple like:\n\n```bash\nssh hermes-home\n```\n\nThat short name usually comes from `~\u002F.ssh\u002Fconfig`.\n\nExample:\n\n```sshconfig\nHost hermes-home\n  HostName vps.example.com\n  User alex\n```\n\nIn the app:\n\n- set `SSH alias` to `hermes-home`\n- leave `Host`, `User`, and `Port` empty unless you want explicit overrides\n\n### Option 2: host details directly\n\nIf you normally connect with something like:\n\n```bash\nssh alex@vps.example.com\n```\n\nthen in the app:\n\n- `Host or IP`: `vps.example.com`\n- `User`: `alex`\n- `Port`: `22` or your real SSH port\n\n### Hermes profiles on the same host\n\nHermes Desktop can target either the default Hermes home or a named profile on\nthe same SSH host.\n\nExamples:\n\n- leave `Hermes profile` empty to use `~\u002F.hermes`\n- set `Hermes profile` to `researcher` to use\n  `~\u002F.hermes\u002Fprofiles\u002Fresearcher`\n\nThe important part is what happens after that: the profile selection is not a\nlabel stuck on a form. It flows through the app.\n\nOverview resolves against that profile. Usage stays scoped to that profile while\nstill being able to show host-wide cross-profile totals. Cron jobs target that\nprofile's scheduler state. The terminal launches with the right `HERMES_HOME`.\nAnd terminal tabs can stay open across different profiles, so it is natural to\nwork multiple Hermes agents on the same host side by side.\n\n### Same Mac\n\nIf Hermes runs on the same Mac, the model stays the same: SSH.\n\nUse one of these:\n\n- `localhost`\n- your local hostname\n- a local SSH alias\n\nHermes Desktop still connects over SSH and never reads those files directly.\n\n## What `Test` Checks\n\n`Test` is the preflight, not a cosmetic button.\n\nIt checks that:\n\n- the SSH target is reachable\n- authentication works without interactive prompts\n- `python3` is available in the remote SSH environment used by the app\n\nIf `Test` passes, `Use Host` should be on solid ground.\n\nFeature-specific requirements, such as the remote `hermes` CLI path and Kanban\nsupport, are checked when those sections actually run.\n\n## Ways To Chat With Hermes\n\nHermes Desktop does not replace the terminal surfaces Hermes already gives you.\nIt lets you choose the right one for the job:\n\n- use in-app chat in `Sessions` for quick turns, checking context, or\n  continuing a session while you are already in Hermes Desktop\n- use the embedded `Terminal` for heavier work where you want the shell,\n  command approvals, long-running output, or manual control close at hand; from\n  there you can run `hermes`, `hermes chat`, or a one-shot prompt such as\n  `hermes chat -q \"Hello\"`\n- use `hermes --tui` in the terminal when you want Hermes Agent's modern TUI\n  for longer interactive sessions, richer overlays, session picking, and the\n  same sessions, slash commands, and config as the classic CLI\n\nAll of these paths still run Hermes on the selected host. The choice is about\nsurface area and workflow, not about creating a second source of truth.\n\n## What You Will See In The App\n\n- `Overview`\n  Confirms the active host, the active Hermes profile, the discovered profiles,\n  tracked paths, cron location, and the session store source.\n- `Files`\n  Lets you edit the canonical Hermes files and bookmark selected remote text\n  files on the active host, with remote conflict checks before save.\n- `Sessions`\n  Reads the real remote session store from `~\u002F.hermes\u002Fstate.db`, with\n  full-text search across names, IDs, previews, and message content, match\n  snippets, pinned sessions, cleaner metadata, readable transcripts, compact\n  tool-output summaries, in-app chat continuation, safer non-interactive\n  approval handling, terminal resume, refresh-on-entry behavior, and remote\n  deletion.\n- `Cron Jobs`\n  Browses the real Hermes cron definitions on the host, with create, edit,\n  pause, resume, run-now, and delete actions, including agent jobs and\n  script-only jobs that run host scripts without creating an agent turn. It\n  shows the details that matter when you are actually running them: schedule,\n  model, skills, script, workdir, delivery target, and recent status.\n- `Kanban`\n  Opens the upstream Hermes Kanban workspace from the host-wide Kanban home:\n  the default board at `~\u002F.hermes\u002Fkanban.db`, plus additional boards under\n  `~\u002F.hermes\u002Fkanban\u002Fboards\u002F` when supported. It includes board selection,\n  board creation and archive, task creation, search, filters, assignment,\n  dependency links, editable task metadata, comments, block, unblock, complete,\n  archive, delete, run and event history, worker log tailing, and dispatcher\n  nudging when the host supports it.\n- `Usage`\n  Shows aggregate input and output token totals, top sessions, top models,\n  recent session trends, and when available, a host-wide profile breakdown.\n- `Skills`\n  Discovers and reads remote `SKILL.md` files from the local Hermes skills\n  store plus configured `skills.external_dirs`, while keeping skill creation\n  and editing anchored to `~\u002F.hermes\u002Fskills\u002F`, with quick filtering,\n  companion folder awareness, optional folder scaffolding, and remote\n  conflict checks before save.\n- `Terminal`\n  Opens the real SSH shell inside the app, with multiple tabs, named theme\n  presets, live background and text color tuning, and room for a genuinely\n  multi-profile, multi-agent workflow that still stays close to the host.\n\n## Why It Feels Different\n\nMost visual agent tools become one of three things: a browser dashboard, a\ncloud execution surface, or a terminal session relay. Those are useful shapes,\nbut they usually add something else to manage: a local web server, a gateway,\na container, a cloud workspace, or a second place where state can appear to\nlive.\n\nHermes Desktop makes a narrower bet.\n\nIt is a native macOS app that talks to your Hermes host over SSH and keeps the\nhost authoritative. Sessions come from the remote session store. Kanban comes\nfrom the upstream host-wide Kanban home, starting with the default\n`~\u002F.hermes\u002Fkanban.db` board. Cron jobs come from the remote scheduler state.\nFiles and skills are edited on the host with conflict checks.\n\nThe app feels calmer because it does not blur where the work is happening. It\njust gives the real Hermes workflow a Mac surface that is easier to live in.\n\n## Why SSH And A Real Terminal\n\nHermes is strongest at the command line.\n\nHermes Desktop respects that. It keeps the real path visible and usable: real\nSSH, real terminal, real remote files, real session data, real Kanban state,\nreal cron state.\n\nIt does not try to hide Hermes behind a separate gateway layer, invent a second\nsource of truth, or turn the workflow into something softer and less reliable.\nThe goal is not to abstract Hermes away. The goal is to give it a native Mac\nsurface that still feels honest.\n\nThat honesty is precisely what makes the app reassuring. You do not need to\nguess where your data lives, which machine is authoritative, or whether the app\ninvented its own shadow world to feel convenient. Hermes Desktop stays close to\nthe host because that is the more trustworthy design.\n\n## FAQ\n\n### Is it safe to install?\n\nThat is the right question, and you should not rely on reassurance alone.\n\nHere are concrete things you can verify yourself:\n\n- the app is open source in this repo, and you can build it locally with\n  `.\u002Fscripts\u002Fbuild-macos-app.sh` instead of using the release zip\n- GitHub Releases include a SHA-256 checksum for the release zip\n- Hermes Desktop uses direct SSH to the host you choose and does not require a\n  gateway API or helper service\n- the built-in update check calls GitHub Releases for the latest Hermes Desktop\n  app version only; it does not update Hermes Agent and does not send your host,\n  profile, file, session, or Kanban content\n- you can inspect its live network behavior with Little Snitch, LuLu, or\n  `nettop`\n\nOne distribution detail to understand: the public build is ad-hoc signed and\nnot notarized by Apple. That is why macOS may show a first-launch warning. It is\ndifferent from Apple actively reporting that it found malware in the app.\n\n### Why use Hermes Desktop if the official web dashboard exists?\n\nBecause the dashboard is for managing Hermes from a browser, while Hermes\nDesktop is for working on the Hermes host from your Mac.\n\nUse the dashboard for installation-level tasks: configuration, API keys, logs,\nand browser-based monitoring. Use Hermes Desktop when you are in the daily loop:\nreading sessions, editing remote files or skills, checking Kanban, reviewing\nusage, managing cron jobs, and keeping a real SSH terminal close.\n\nThe dashboard gives Hermes a web control surface. Hermes Desktop gives the same\nhost a native macOS workbench without changing the SSH-first model.\n\n### Does Hermes Desktop replace a remote file manager or IDE?\n\nNo.\n\nIt lets you browse remote directories and bookmark selected text files next to\nthe canonical Hermes files. It is still a focused Hermes workspace, not a full\nSFTP client or remote IDE. Remote text files up to 10 MB are editable.\n\n### Where does state live?\n\nOn the Hermes host.\n\nSessions are read from `~\u002F.hermes\u002Fstate.db` first, with\n`~\u002F.hermes\u002Fsessions\u002F*.jsonl` as a fallback only when the SQLite store is not\navailable. Kanban reads and writes the upstream host-wide Kanban home: the\ndefault board is `~\u002F.hermes\u002Fkanban.db`, and additional boards use\n`~\u002F.hermes\u002Fkanban\u002Fboards\u002F\u003Cslug>\u002Fkanban.db` when available. Cron jobs use the\nremote scheduler state. Files and skills are saved back to the host.\n\n### What does in-app chat do?\n\nIt runs Hermes on the selected host over SSH.\n\nStarting a new chat uses the remote `hermes chat` path. Continuing a session\nuses `hermes --resume \u003Csession-id> chat`, with the selected Hermes profile\npreserved when one is active. If Hermes requests command approval during a\nnon-interactive chat turn, Hermes Desktop cannot collect a manual approval\ninside the chat. When Hermes can handle the denial and continue, the transcript\nshows Hermes' normal response. If the turn cannot continue usefully, the app\nshows an approval-needed message and lets you retry with auto-approve enabled\nor resume the session in Terminal to review the command yourself.\n\n### Why do I still need SSH working in Terminal first?\n\nBecause the app uses the same SSH path your Mac already uses, but in a\nnon-interactive way.\n\nIf Terminal still needs password entry, host key confirmation, or other\ninteractive fixes for that target, the app will usually hit the same wall.\n\nYour Mac does not need to be on the same Wi-Fi. It only needs a normal SSH route\nto the host: LAN, public IP, DNS, VPN, or Tailscale.\n\n### What happens if a remote file changed after I opened it?\n\nHermes Desktop will not blindly overwrite it.\n\nBefore saving an edited workspace file or skill, the app checks whether the\nremote file still matches the version you opened. If it changed, save is blocked\nand your local edits stay intact until you reload intentionally.\n\n## Roadmap\n\nMost of the original roadmap is now shipped.\n\nThis app has reached the point we wanted: a calm, capable native macOS\nworkspace for the real Hermes workflow, still anchored to SSH and the host as\nsource of truth.\n\n### Shipped\n\n- [x] a Files workspace for canonical Hermes files and user-bookmarked remote\n  text files, with SSH-backed browsing, conflict-aware editing, and atomic saves\n- [x] native session workflows with cleaner metadata, full-text session and\n  message-content search, match snippets, deletion, and refresh-on-entry\n  behavior\n- [x] a session workbench with pinned sessions, readable transcripts, compact\n  tool-output summaries, in-app chat continuation, safer non-interactive\n  approval handling, and terminal resume\n- [x] a native Kanban workspace for upstream Hermes boards, including board\n  selection, board creation and archive, task creation, status actions,\n  assignment, dependency links, editable task metadata, comments, run\u002Fevent\n  history, recovery actions, worker log visibility, and dispatcher nudging\n- [x] a usage dashboard with aggregate token totals, top sessions, top models,\n  trends, and host-wide multi-profile totals when available\n- [x] native skill workflows for discovering, inspecting, creating, and editing\n  remote `SKILL.md` files from the Hermes skills store, with support for\n  configured external discovery directories and local write precedence\n- [x] profile-aware host workflows aligned with Hermes Agent profiles on the\n  same SSH target\n- [x] native cron job workflows for the canonical remote scheduler state,\n  including agent jobs and script-only host jobs\n- [x] a real embedded SSH terminal with tabs, named theme presets, live color\n  controls, and coherent multi-profile workspace behavior\n- [x] English, Simplified Chinese, and Russian localization resources packaged\n  in the app bundle\n- [x] universal macOS release packaging for Apple Silicon and Intel, with\n  bundle version stamping in the packaging flow\n\n### From Here\n\n- reduce distribution friction with signing and notarization\n- keep polishing onboarding, diagnostics, Files ergonomics, terminal UX, and\n  multi-host details without adding a second transport model or shadow state\n- keep tracking upstream Hermes Agent changes, especially around Kanban and\n  session chat, so the app stays close to the real host workflow\n\nAnything larger than that should be justified by Hermes itself, not added here\nfor novelty.\n\n## Build From Source\n\nFor local development, the supported path in this repo is to build the app\nbundle directly:\n\n```bash\n.\u002Fscripts\u002Fbuild-macos-app.sh\n```\n\nThen open `dist\u002FHermesDesktop.app`.\n\nTo run the release-support test suite:\n\n```bash\n.\u002Fscripts\u002Frun-tests.sh\n```\n\nTo create the GitHub Releases archive:\n\n```bash\n.\u002Fscripts\u002Fpackage-github-release.sh\n```\n\nFor release-candidate packaging, you can stamp an explicit version:\n\n```bash\nHERMES_VERSION=0.7.1 .\u002Fscripts\u002Fpackage-github-release.sh\n```\n\nRelease artifacts:\n\n- `dist\u002FHermesDesktop.app.zip` as a universal macOS archive for Apple Silicon\n  and Intel Macs\n- `dist\u002FHermesDesktop.app.zip.sha256` for checksum verification\n","Hermes Desktop 是一款专为 macOS 设计的管理 Hermes 代理工具的应用程序，通过纯 SSH 连接实现远程开发和管理。其核心功能包括会话、看板、工作区文件、使用情况、技能、定时任务以及内置终端等，所有这些都在一个集中且聚焦的窗口中呈现。该应用直接通过 SSH 连接到目标主机，不依赖任何网关API或在本地镜像文件，确保了数据的一致性和安全性。它非常适合需要在 Mac 上进行远程开发与协作的开发者使用，提供了一个直观、快速且原生的工作环境。",2,"2026-06-11 02:39:08","CREATED_QUERY"]