Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
7e04de4
fix(docker): ensure uv virtualenv is owned by hermes user to avoid pe…
Apr 26, 2026
f53604f
fix(session_search): prefer platform field over source for accurate s…
Apr 26, 2026
7e3f44b
fix(cron): expand environment variables for model and base_url in cro…
Apr 26, 2026
7283d74
fix(agent): pass base_url and api_key to background review agent for …
Apr 26, 2026
2ad73a9
fix(memory_tool): also accept new_text as content for replace action …
Apr 26, 2026
fae4264
feat: allow replacing existing API key in hermes setup instead of sil…
Apr 27, 2026
eafecea
fix: TUI garbles output when final_response_markdown: render — invert…
Apr 27, 2026
92ab12f
feat(security): Default skills.guard_agent_created to true (fixes #16…
Apr 27, 2026
e7feb84
fix(model_tools): Reuse dedicated bridge loop for running-loop contex…
Apr 27, 2026
e9c83eb
fix(security): Use importlib instead of exec for loading godmode scri…
Apr 27, 2026
54ef4a6
fix security: Replace shell=True with shlex.split and shell=False in …
Apr 27, 2026
af4874a
fix(model): Add Z.AI provider thinking configuration to extra_body (f…
Apr 27, 2026
1f35026
fix(auth): Use correct OAuth client ID for Copilot to enable token ex…
Apr 27, 2026
8ab8f7f
fix(gateway): Handle permission denied for .local directory and add d…
Apr 27, 2026
4d03232
Merge remote-tracking branch 'origin/fix-7-issues' into fix-7-issues
Apr 27, 2026
6837916
fix: set speaking state explicitly in Discord voice channel to show s…
Apr 27, 2026
27f6ac2
context management for minimax
shyba Apr 27, 2026
dbbf7fd
fix: resolve 7 identified issues [automated]
Apr 28, 2026
d0b2628
Merge branch 'fix-7-issues' of https://github.com/Sldark23/hermes-age…
Apr 28, 2026
4acf2ac
fix: resolve 7 identified issues from NousResearch/hermes-agent
Apr 28, 2026
990f9cf
fix: prevent LM_API_KEY= from false-splitting inside GLM_API_KEY=
Apr 29, 2026
cac9577
fix: resolve_openai_audio_api_key fallback to get_env_value for CLI p…
Apr 29, 2026
55fca35
fix(config): preserve terminal.cwd and auxiliary models during migrat…
Apr 29, 2026
53e856a
fix(send_message): enable Slack media attachments via adapter (closes…
Apr 29, 2026
c417487
fix(context_compressor): clarify memory supersedes compacted handoff …
Apr 29, 2026
f8bb554
fix(run_agent): stop at last assistant message for reasoning display …
Apr 29, 2026
3aeacc2
feat(docker): add configurable tmpfs size overrides via config.yaml (…
Apr 29, 2026
0b5b2d1
fix(setup-hermes.sh): guard interactive prompts in non-interactive en…
Apr 29, 2026
89404f4
fix(cli): only set HERMES_INTERACTIVE when stdin/stdout are real term…
Apr 29, 2026
02c4441
fix(runtime_provider): preserve api_mode for kimi-coding providers
Apr 29, 2026
8116ab8
fix(uv.lock): regenerate lockfile to include [google] extra dependencies
Apr 29, 2026
62cdab6
fix(setup): remove dual-write of max_turns to both config.yaml and .env
Apr 29, 2026
95f9099
fix(model_switch): reject bare 'custom' as provider slug
Apr 29, 2026
7eeaa45
fix(auxiliary_client): prevent custom provider 'codex' shadowing open…
Apr 29, 2026
a4467fb
fix(auxiliary): pass explicit API key to OpenRouter fallback
May 1, 2026
dd8ddc0
fix(models): treat named custom providers as custom in /model validation
May 1, 2026
e93c22c
fix(profiles): block reserved profile names including main on create
May 1, 2026
e3d90ec
fix(status): detect passwordless sudo in hermes status
May 1, 2026
2eeedab
fix(approval): narrow root-path rm detection to real system targets
May 1, 2026
08b3cdb
fix(skills): allow skill_view lookup by frontmatter skill name
May 1, 2026
c1049b6
fix(skills): allow pinned skill edits while blocking deletions
May 1, 2026
f866544
fix(skill-manager): restore atomic_replace compatibility and config g…
May 1, 2026
c4807b1
fix(config): prefer .env over process env for runtime keys
May 1, 2026
89d1b41
fix(cli): preserve explicit api_mode across credential refresh
May 1, 2026
5179558
fix(agent): try fallback providers when primary pool is exhausted at …
May 1, 2026
959aad9
fix(gateway): relax WSL systemd detection to include user scope
May 1, 2026
d2f84ad
fix(file-tools): make read_file path checks and pagination cross-plat…
May 1, 2026
210f706
fix(file-tools): normalize quoted Windows paths before read resolution
May 1, 2026
4d5ec4e
fix(memory): clarify status output for provider-backed memory
May 1, 2026
237fc19
fix(acp): pass fallback_providers into ACP agent creation
May 1, 2026
fbca762
fix(terminal): ignore WindowsApps bash shim on Windows
May 1, 2026
6e08a9f
fix(voice): distinguish missing PortAudio from missing Python packages
May 1, 2026
841a636
fix(email): guard header decode against non-string IMAP chunks
May 1, 2026
bcaf83d
fix(zai): prefer anthropic endpoint for China default base URL
May 1, 2026
31492b0
fix(model): accept declared custom-provider models during /model switch
May 1, 2026
b78ab2a
fix(commands,tui): expose /busy beyond CLI and preserve copy on appro…
May 1, 2026
249825f
fix(acp): pass configured fallback providers to ACP AIAgent (refs #18…
May 1, 2026
506ac81
fix(chat-completions): propagate custom-provider temperature and para…
May 1, 2026
373a709
fix(usage): read reasoning_tokens from completion_tokens_details fall…
May 1, 2026
e87c8f7
fix(search-files): avoid excluding hidden root path in grep fallback …
May 1, 2026
39b4321
fix(voice): distinguish missing PortAudio from missing Python package…
May 1, 2026
a5058b5
fix(email): robustly parse IMAP fetch tuples before decoding RFC822 p…
May 1, 2026
799ad62
fix(kanban): normalize assignee/profile names for case-insensitive ma…
May 1, 2026
f4a5096
fix: strip thinking blocks when generating session titles (#18529)
May 1, 2026
164dcb6
fix(tui): persist DB session key for active-session resume hints (ref…
May 2, 2026
04ec4d3
fix(docker): create custom home parent and bootstrap .local/bin (refs…
May 2, 2026
79ca848
fix(feishu): fallback to root_id for reply context resolution (refs #…
May 2, 2026
54f03e2
fix(queue): preserve MEDIA delivery for pre-follow-up FIFO responses …
May 2, 2026
9f847f4
fix(profile): fail fast when HERMES_HOME is missing in profile-scoped…
May 2, 2026
756478c
fix(context-compression): retry on main model when summary override i…
May 2, 2026
a5a7dc2
fix(delegate-task): pass target_model when resolving delegation provi…
May 2, 2026
8647779
fix(discord): close previous Bot client before reconnecting
May 2, 2026
cbff2bf
fix(qqbot): bound stale websocket/session close during reconnect setup
May 2, 2026
c015c42
fix(weixin): avoid cross-event-loop reuse of live gateway adapter in …
May 2, 2026
204731d
fix(slack): suppress repeated channel-directory warning spam per work…
May 2, 2026
c2c8189
fix(gateway): load custom provider api_key in /model command (refs #1…
May 2, 2026
87092e6
fix(docker): include hermes venv bin in PATH for docker exec (refs #1…
May 2, 2026
93b1c62
fix(send_message): treat WhatsApp JIDs as explicit targets (refs #18646)
May 2, 2026
b3abb0a
fix(file-tools): recognize Windows drive paths in read/write resoluti…
May 2, 2026
0d36476
fix(doctor): read .env as utf-8 to avoid Windows GBK crashes (refs #1…
May 2, 2026
27f62be
fix(docker): pre-create HERMES_HOME before ownership checks (refs #18…
May 2, 2026
67ad4b0
fix(terminal): ignore additional Windows bash shims that return exit …
May 2, 2026
eab3298
fix(toolsets): include plugin-registered tools in built-in toolsets (…
May 2, 2026
36c1f64
fix(custom-provider): set chat temperature and parallel tool calls de…
May 2, 2026
42a579d
fix(model-switch): treat named custom providers as custom during vali…
May 2, 2026
d029260
fix(zai): switch default GLM base URL to anthropic endpoint (refs #18…
May 2, 2026
ba3fbb7
fix(gateway): expose /busy command and dispatch in gateway sessions (…
May 2, 2026
d1827e2
fix(auth): resolve base_url_env_var via get_env_value in provider cre…
May 2, 2026
a0630f6
fix(env): preserve runtime environment precedence over .env values
May 2, 2026
7827c0d
fix(cron): recover missing next_run_at for recurring jobs and guard o…
May 2, 2026
25fbb3e
fix(agent): improve moonshot model detection and load constraints_pat…
May 2, 2026
b44463c
fix(gateway): harden scoped lock stale detection on macOS/windows
May 2, 2026
22484ce
fix: resolve 7 identified issues from upstream tracking
May 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,12 @@ RUN chmod -R a+rX /opt/hermes

# ---------- Python virtualenv ----------
RUN uv venv && \
uv pip install --no-cache-dir -e ".[all]"
uv pip install --no-cache-dir -e ".[all]" && \
chown -R hermes:hermes /opt/hermes/.venv

# ---------- Runtime ----------
ENV HERMES_WEB_DIST=/opt/hermes/hermes_cli/web_dist
ENV HERMES_HOME=/opt/data
ENV PATH="/opt/data/.local/bin:${PATH}"
ENV PATH="/opt/hermes/.venv/bin:/opt/data/.local/bin:${PATH}"
VOLUME [ "/opt/data" ]
ENTRYPOINT [ "/usr/bin/tini", "-g", "--", "/opt/hermes/docker/entrypoint.sh" ]
12 changes: 12 additions & 0 deletions acp_adapter/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -570,6 +570,7 @@ def _make_agent(
"quiet_mode": True,
"session_id": session_id,
"model": model or default_model,
"fallback_model": config.get("fallback_providers") or config.get("fallback_model") or None,
}

try:
Expand All @@ -587,6 +588,17 @@ def _make_agent(
except Exception:
logger.debug("ACP session falling back to default provider resolution", exc_info=True)

# Keep ACP behavior aligned with CLI/gateway: honor configured fallback
# chains so editor integrations can fail over on transient provider errors.
try:
fb = config.get("fallback_providers") or config.get("fallback_model") or []
if isinstance(fb, dict):
fb = [fb] if fb.get("provider") and fb.get("model") else []
if fb:
kwargs["fallback_model"] = fb
except Exception:
logger.debug("Could not load fallback_providers for ACP agent", exc_info=True)

_register_task_cwd(session_id, cwd)
agent = AIAgent(**kwargs)
# ACP stdio transport requires stdout to remain protocol-only JSON-RPC.
Expand Down
Loading