← All reportsPublic report

nousresearch/hermes-agent

The agent that grows with you

236k stars Python View on GitHubprofiled 11d ago
Try GitZoid
400PRs this week
98Contributors
1500Deps scanned
0Issues found
01 · Repo overview

How hermes-agent is put together

Hermes Agent is a self-improving AI coding/personal assistant built primarily in Python, exposing an interactive TUI CLI (`hermes`), a multi-platform messaging gateway (Telegram, Discord, Slack, WhatsApp, Signal, Email), and an Agent Client Protocol (ACP) adapter for editors like Zed. The Python core (`agent/`, `tools/`, `hermes_cli/`) drives an LLM conversation loop with pluggable provider adapters (OpenAI-compatible, Anthropic, Bedrock, Gemini, Codex Responses, Azure), a tool registry with approval guardrails, skill/memory curation, cron scheduling, and subagent delegation. A npm-workspaces monorepo layers desktop clients on top: an Electron app (`apps/desktop`) with React 19/xterm UI, a Tauri-based bootstrap installer, a `ui-tui` package, and a `web` dashboard backed by FastAPI/Uvicorn. Sessions persist to a shared SQLite SessionDB (`~/.hermes/state.db`) with FTS5 search, and execution can be delegated to seven terminal backends (local, Docker, SSH, Singularity, Modal, Daytona, Vercel Sandbox).

Languages

PythonTypeScriptJavaScriptNix

Frameworks

FastAPIUvicornReact 19ElectronTauriViteTailwind CSS 4xterm.jsCodeMirror 6Radix UIprompt_toolkitPydantic

Datastores

SQLite (SessionDB at ~/.hermes/state.db, FTS5 full-text search)

Infrastructure

Docker (Dockerfile, docker-compose.yml, docker-compose.windows.yml)Nix flake (flake.nix)Modal / Daytona / Vercel Sandbox / SSH / Singularity remote terminal backendsTermux/Android supportcurl/PowerShell install scripts (setup-hermes.sh)GitHub Actions-style CI signals not directly shown

Major components

agent/

Core LLM agent runtime: conversation loop, provider adapters (anthropic, bedrock, gemini_native, codex_responses, azure_identity), context compression, tool dispatch/guardrails, memory curator, skills, credentials, rate limiting, and subagent lifecycle.

acp_adapter/

Agent Client Protocol server exposing Hermes to editors (Zed) over stdio JSON-RPC, including session management, auth-method advertisement, model selection, and pre-execution edit approval.

tools/

Tool implementations invoked by the agent (terminal/shell execution across seven backends, file write/patch with fuzzy matching, messaging, browser CDP supervision) plus lazy dependency installation.

hermes_cli/

CLI command layer: config load/save, model/provider switching, setup wizard, gateway control, MoA picker, and Windows SSH runtime helpers.

gateway platforms

Messaging-gateway integrations (Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Email) delivering agent output and receiving user messages, including HTML-formatted delivery.

apps/desktop

Electron desktop client (React 19, xterm.js PTY terminal, CodeMirror editor, assistant-ui chat) packaged with electron-builder, sharing code via @hermes/shared.

apps/bootstrap-installer

Tauri-based first-run installer UI handling environment bootstrap (uv, Python, Node, ripgrep, ffmpeg, MinGit).

state & scheduling layer

Shared SQLite SessionDB (hermes_state*.py) for sessions/search/activity heartbeats, plus a built-in croniter-based scheduler for scheduled automations.

The last five weeks were dominated by reliability and safety hardening across the Hermes agent platform. Early weeks focused on closing security gaps in lifecycle guards and cron job handling, then attention shifted to keeping long-running connections (gateways, desktop apps, Telegram) alive through network drops. The most recent two weeks delivered a large memory-checkpointing system to protect data during compaction, plus a wave of fixes around Docker sandbox identity, computer-use media delivery, and messaging integrations.

Week by week

2026-08-24A high-volume week centered on a new fail-closed checkpoint system that protects memories before they get compacted, alongside Docker sandbox identity fixes and computer-use media routing repairs.latest6 changes

Feature

Fail-closed pre-compress checkpoints for memory

Added an opt-in contract (API v2) that guarantees a safe backup checkpoint exists before any memory compaction runs, so data can't be lost mid-process.

Fix

Docker container identity labels no longer collide

Distinct shared-container keys now get unique digest-suffix labels so different profiles never accidentally share the same container.

Fix

Computer-use media paths recovered

Explicit screen-capture requests are now routed correctly to the desktop-state tool, and media file paths from computer-use sessions are repaired across related surfaces.

Fix

Telegram waits for reconnection before failing sends

After a network blip, message sending now waits for the connection to come back instead of immediately erroring with 'Not connected'.

Fix

Teams integration handles unbound SDK gracefully

The Microsoft Teams connector no longer crashes when its underlying SDK was never initialized.

Chore

Expired FLUX 3 promo tools removed

Retired the promotional BFL FLUX 3 core tools via a database migration; subscribers can still access FLUX 3 through the video generation provider.

2026-08-17This week focused on connection resilience — heartbeats and reconnect logic for gateways, desktop apps, and chat clients — plus OpenViking memory URI migration and a security fix stopping code injection through bot relays.6 changes

Feature

Gateway heartbeat keeps connections alive

Added a ping-based heartbeat between clients and the gateway so silent WebSocket drops are detected and connections reconnect automatically.

Fix

Desktop app survives sleep/wake cycles

The desktop client now probes half-open sockets when the machine wakes up and reconnects rather than hanging on a dead connection.

Fix

CLI input fallback prevents lockout

When the fancy prompt library can't attach to the terminal, the CLI falls back to basic input; also fixed a bug where a security permission change locked users out of their own install directory.

Fix

Cron jobs got safer and more capable

Scheduled jobs can now explicitly re-arm as one-shots, refuse terminal commands, and won't fire past their grace window or overwrite names with blank values.

Fix

Security hole closed in gateway relays

Fixed an allowlist leak in multiplexing and blocked a code-injection vector where bots could run arbitrary Python via relay commands.

Fix

Curator skill pinning reports honestly

Pinning skills now checks results and surfaces failures instead of falsely reporting success, with clearer messages about what pinning does.

2026-08-10A quieter week of targeted fixes: shared Docker container identities were introduced, full-text search indexing was made dramatically faster, and several gateway and update-window edge cases were smoothed out.6 changes

Feature

Shared Docker container identities

Multiple sessions can now share a single Docker container under a declared key, reducing resource overhead.

Refactor

Faster app startup with large search indexes

The app no longer rebuilds the entire full-text search index on every open when the trigram tokenizer is missing, eliminating a major startup slowdown.

Fix

Safer browser snapshot storage

Browser snapshots are now written through a symlink-safe path so malicious symlinks can't redirect writes.

Fix

Update shim window closes itself

The desktop updater's helper window now auto-closes after errors or manual outcomes instead of lingering on screen.

Fix

Lifecycle guards see through wrapper prefixes

Security guards checking gateway lifecycle commands can now detect dangerous operations hidden behind wrapper command prefixes.

Fix

Pop-out windows keep their session transport

Closing a pop-out window re-binds the session's connection to a surviving window instead of dropping it.

2026-08-03Nine focused fixes landed this week, mostly around graceful failure handling: language-server clients shut down cleanly, websocket dead peers are detected, and cron script bypasses were closed.6 changes

Fix

Language server clients retire cleanly

When the protocol reader exits, language-server clients are properly retired and pending diagnostic waits abort instead of hanging forever.

Fix

Dead websocket peers detected via TCP keepalive

Terminal UI gateway websockets now use TCP keepalive so silently disconnected peers are noticed and cleaned up.

Fix

Cron NUL-padding bypass closed

Closed a loophole where attackers could sneak disallowed scripts past the scheduled-job guard by padding filenames with NUL characters.

Fix

Fallback provider transitions made visible

Users now see clear messages when the system switches to a backup AI provider and when the primary one recovers.

Fix

Custom providers respect caching settings

Prompt caching preferences are now honored when using custom (non-default) AI providers.

Fix

Uninstall guard conflict resolved

Fixed a conflict in the gateway's uninstall protection so the lifecycle guard behaves consistently.

2026-07-27A small week with three changes: the background skill reviewer is now required to read files before writing them, and macOS launch-service lifecycle guards were tightened against ordering tricks.3 changes

Fix

Background reviewer must read before writing

The automated skill curator is now instructed (and enforced) to read existing content before making changes, preventing blind overwrites.

Chore

Curator instruction verified end-to-end

Tests now assert the read-before-write rule by inspecting the actual delivered prompt rather than just the source text.

Fix

macOS launchctl guards hardened

Closed gaps in the launch-service security guards where command order or missing verbs could let restricted operations slip through.

03 · Security check

Dependencies and code review

1500 dependencies scanned

Dependency advisories

Security Watch

No known advisories across 1500 scanned dependencies.

No known advisories in the scanned dependencies.

Code review

No concrete code-level issues confirmed.

Get this report every week for your repos.

GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.

$19 a month, flat · First 10 outputs free · No card required