Remote-only client tooling for Hermes Agent.
This repo deliberately does not install or run a local Hermes agent. A remote Hermes host remains the brain/gateway/memory/skills machine. The local machine gets:
hermes-client/hermes-client tui— the full Hermes Ink TUI, attached to a remote dashboard gateway.hermes-client status— check the remote dashboard.hermes-client open— open the remote dashboard/chat in the browser.hermes-client chat— small non-TUI terminal chat over/api/ws.hermes-client install-worker— launchd service exposing scoped local file/shell MCP tools to the remote Hermes host.hermes-client install-desktop-shortcut— tiny macOS.applauncher for the remote dashboard.apps/desktop/Hermes Client— native Electron shell for the same remote backend, without bundling or spawning a local agent.
No local agent checkout. No local gateway brain. No hermes update path.
curl -fsSL https://raw.githubusercontent.com/sbbu/hermes-client/main/scripts/install.sh | bash
export PATH="$HOME/.local/bin:$PATH"The installer creates a standalone Python environment under ~/.local/share/hermes-client, installs a local Node.js runtime if needed for the TUI, installs a launchd self-updater, and installs the local worker as a launchd service.
hermes-client configure --url http://<remote-host-or-tailscale-ip>:9119
hermes-client statusIf the dashboard has username/password auth enabled:
hermes-client login --provider basic --username <username>If the dashboard has auth_required=false on a private tailnet, login is not needed; the client discovers the dashboard session token from the served SPA.
hermes-client
# same as:
hermes-client tuiUseful variants:
hermes-client tui -q "say ok"
hermes-client tui --resume <session-id>
hermes-client tui --no-mouse
hermes-client tui --inlineThis runs the same bundled Ink TUI used by hermes --tui, but attaches it to the remote dashboard gateway through HERMES_TUI_GATEWAY_URL instead of spawning a local agent.
hermes-client chat
hermes-client chat "say ok"This is intentionally plain; use hermes-client tui for the full terminal experience.
The installer runs this automatically:
hermes-client install-workerBy default it creates a launchd service that starts at login, waits for the machine's Tailscale IPv4 address, binds to it, and exposes only common local work roots that already exist (~/code, ~/src, ~/Developer, ~/Documents).
Inspect the service and print remote-host MCP config:
hermes-client worker-status
hermes-client mcp-configManual worker install with explicit roots:
hermes-client install-worker --allow-root ~/code --allow-root ~/DocumentsThe worker exposes:
local_infolocal_read_filelocal_write_filelocal_search_fileslocal_runlocal_computer_use_status
Shell commands run without sudo; mutating/destructive-looking shell commands are blocked unless the worker is installed with --allow-mutating-shell. File writes are allowed inside configured roots.
For a full "brain on the server, hands on this Mac" setup:
hermes-client setup-local-access --full-home --allow-mutating-shell --computer-useThis installs the local worker as a launchd service, allows the remote Hermes host to read/write/run commands under your home directory, and installs/checks cua-driver for background GUI control. If macOS permissions are missing, run:
hermes-client install-computer-use --grantThen add the printed mcp_servers.local_worker block to the remote Hermes host and restart the remote gateway. Once registered, the Mac is available from any Hermes surface attached to that server: desktop app, TUI, Discord, cron, etc.
hermes-client install-desktop-shortcut
open ~/Applications/Hermes\ Client.appThe installer creates a LaunchAgent that self-updates every 6h. Manual commands:
hermes-client update
hermes-client install-autoupdate --interval 21600
hermes-client uninstall-autoupdatehermes-client self-update remains as a legacy alias.