Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1981 commits
Select commit Hold shift + click to select a range
45d860d
fix(msgraph): stream download_to_file body instead of buffering
teknium1 May 8, 2026
cf648a9
docs(msgraph): add Azure app registration walkthrough + env var refer…
teknium1 May 8, 2026
f209a35
feat(profile): shareable profile distributions via git (#20831)
teknium1 May 8, 2026
46a6f39
feat(msgraph): add webhook listener platform
dlkakbs May 7, 2026
2a215de
fix(msgraph): bound webhook receipt dedupe cache
dlkakbs May 7, 2026
26a59e4
fix(msgraph): normalize webhook dedupe and resource matching
dlkakbs May 7, 2026
b8d7e0e
fix(msgraph_webhook): harden auth surface + IP allowlisting + respons…
teknium1 May 8, 2026
474d1e8
docs(msgraph): webhook listener setup page + env var reference
teknium1 May 8, 2026
850413f
feat(computer-use): cua-driver backend, universal any-model schema
teknium1 Apr 23, 2026
e31f3b3
feat(computer-use): background focus-safe backend — set_value, struct…
ddupont808 Apr 24, 2026
2937f9b
fix(computer-use): unwrap _multimodal tool results to content list fo…
ddupont808 Apr 24, 2026
d0aad4b
fix(computer-use): harden image-rejection fallback + AUTHOR_MAP
teknium1 Apr 28, 2026
a735b72
docs(computer-use): add to sidebar nav under Media and Web
teknium1 May 8, 2026
ea86714
docs(profiles): full user guide for profile distributions (#22017)
teknium1 May 8, 2026
07bbd93
feat(teams-pipeline): add plugin runtime and operator cli
dlkakbs May 8, 2026
a995477
fix(teams-pipeline): drop-scheduler fallback + test wiring for enable…
teknium1 May 8, 2026
397f750
feat(teams): add pipeline outbound delivery via existing adapter
dlkakbs May 7, 2026
d36ccc2
refactor(teams): remove redundant delivery-mode branch
dlkakbs May 7, 2026
5e8dfc9
fix(teams-pipeline): fill in missing delivery URL in adapter-reuse test
teknium1 May 8, 2026
9680827
docs(teams): meeting summary delivery section + env var reference
teknium1 May 8, 2026
1997b3b
feat(tui): support attaching to an existing gateway (#21978)
OutThisLife May 8, 2026
b79ef88
docs(teams): split meetings setup from operator runbook
dlkakbs May 7, 2026
729a659
fix(teams-pipeline): add skill asset and fix async test env
dlkakbs May 7, 2026
242da9d
docs(teams-pipeline): cron renewal recipe, sidebar wiring, skill rewrite
teknium1 May 8, 2026
ea2cc4f
fix(profiles): pass encoding=utf-8 to distribution.yaml open (#22083)
teknium1 May 8, 2026
9de893e
feat(windows): close native-Windows install gaps — crash-free startup…
teknium1 May 7, 2026
b7fe7ed
feat(windows-install): bundle portable MinGit instead of relying on w…
teknium1 May 7, 2026
b53bd12
fix(windows-editor): default EDITOR=notepad so /edit and Ctrl+X Ctrl+…
teknium1 May 7, 2026
e93bfc6
feat(windows): close remaining POSIX-only landmines — TUI crash, kanb…
teknium1 May 8, 2026
3601e20
fix(windows): use PortableGit (not MinGit), fix relaunch os.execvp cr…
teknium1 May 8, 2026
fc91886
fix(windows): quote cache paths in bash + augment PATH so rg/bash res…
teknium1 May 8, 2026
c469a05
fix(install.ps1): validate existing repo via git itself + clean up br…
teknium1 May 8, 2026
d52e541
fix(install.ps1): step out of $InstallDir before touching it + harden…
teknium1 May 8, 2026
8f91d7b
fix(windows): %1 install error, patch CRLF false-negative, SOUL.md BOM
teknium1 May 8, 2026
21efeb5
fix(windows): enable execute_code — stale AF_UNIX gate was blocking t…
teknium1 May 8, 2026
a2efad6
fix(windows): prefer npm.cmd over npm.ps1, skip .py argv0 in relaunch
teknium1 May 8, 2026
5c859e5
execute_code: pass through Windows OS-essential env vars
teknium1 May 8, 2026
3b9cd58
tests: lock in POSIX-equivalence guard for execute_code env scrubber
teknium1 May 8, 2026
da18443
execute_code: write sandbox files as UTF-8 on Windows
teknium1 May 8, 2026
e614e87
tests: skip POSIX-venv-layout tests on Windows
teknium1 May 8, 2026
107de03
execute_code: set PYTHONIOENCODING=utf-8 + PYTHONUTF8=1 in child env
teknium1 May 8, 2026
d94fb47
hermes_bootstrap: Windows-only UTF-8 stdio shim for all entry points
teknium1 May 8, 2026
cbce5e9
codebase: add encoding='utf-8' to all bare open() calls (PLW1514)
teknium1 May 8, 2026
3be853a
lint: enable PLW1514 as a blocking ruff rule
teknium1 May 8, 2026
40e7a71
feat: enrich system-prompt environment hints with host + terminal-bac…
teknium1 May 8, 2026
d183804
feat: Ctrl+Enter inserts newline on Windows Terminal
teknium1 May 8, 2026
b63f964
docs: add Windows-Specific Quirks section to hermes-agent skill + key…
teknium1 May 8, 2026
03566e5
fix(windows): auto-install Playwright Chromium + surface it in doctor
teknium1 May 8, 2026
b18b17f
feat(skills): gate 7 Linux/macOS-only skills from Windows via platfor…
teknium1 May 8, 2026
db22efb
feat(optional-skills): declare platforms frontmatter for all 63 undec…
teknium1 May 8, 2026
98db898
feat(skills): declare platforms frontmatter for all 79 undeclared bui…
teknium1 May 8, 2026
62b4ebb
auth: use get_default_hermes_root() for shared nous_auth.json path
jquesnelle May 8, 2026
0ba1e12
fix(windows): browser tool + spurious SIGINT from subprocess spawning
teknium1 May 8, 2026
52e497c
fix(windows installer): UTF-8 BOM, tiered extras, skip tinker-atropos…
teknium1 May 8, 2026
9c263fb
feat(windows): gateway as a Scheduled Task + Startup-folder fallback
teknium1 May 8, 2026
324567c
fix(windows): os.kill(pid, 0) is NOT a no-op on Windows — route throu…
teknium1 May 8, 2026
cc38282
feat(cross-platform): psutil for PID/process management + Windows foo…
teknium1 May 8, 2026
0548fac
fix(windows): gateway status dedup + install.ps1 platform-SDK bootstrap
teknium1 May 8, 2026
35fce76
feat(windows uninstall): clean up User env, PATH, Scheduled Task, and…
teknium1 May 8, 2026
59fbcd5
fix(install.ps1): strip UTF-8 BOM that broke [scriptblock]::Create
teknium1 May 8, 2026
291a158
fix(skills): move platforms key out of folded description: > scalars
teknium1 May 8, 2026
f5ee780
test: migrate stale os.kill monkeypatches to gateway.status._pid_exists
teknium1 May 8, 2026
d3120ae
ci(lint): add blocking ruff-check + windows-footguns jobs to lint.yml
teknium1 May 8, 2026
3299be6
docs(windows): add native Windows guide + install one-liner on landin…
teknium1 May 8, 2026
26bac67
fix(entry-points): guard hermes_bootstrap import so partial updates d…
teknium1 May 8, 2026
66320de
test: remove 50 stale/broken tests to unblock CI (#22098)
teknium1 May 8, 2026
a54cae6
fix(setup): offer gateway service install on Windows (#22099)
teknium1 May 8, 2026
bf80508
ci: split docker-publish into per-arch native runners
ethernet8023 May 8, 2026
afc186f
docker: split python dep install into cached layer above COPY . .
ethernet8023 May 8, 2026
0a51863
fix(ci): update uv.lock
ethernet8023 May 8, 2026
758c401
ci: add blocking uv.lock check
ethernet8023 May 8, 2026
93679ef
ci: run docker build on PRs + smoke test arm64
ethernet8023 May 8, 2026
7a4d5c1
docs(windows): label native Windows support as early beta (#22115)
teknium1 May 8, 2026
5089596
perf(cli): skip eager plugin discovery on known built-in subcommands …
teknium1 May 8, 2026
d971b26
fix(update): bypass systemd RestartSec after graceful drain (#22101)
teknium1 May 8, 2026
d10d19e
Merge pull request #22080 from NousResearch/fix/faster-docker
ethernet8023 May 8, 2026
cacb984
fix(google-chat): repair setup prompt imports
helix4u May 8, 2026
f5b635f
feat(cli): recognise Shift+Enter as a newline key
Abd0r May 7, 2026
d606df8
docs(cli): call out Ctrl+Enter for Windows Terminal users
teknium1 May 8, 2026
0ec052c
perf(cli): cut ~19s from 'hermes' cold start (skills cache + lazy Fei…
teknium1 May 8, 2026
6f7b698
fix: keep tui /quit behavior aligned with cli exit flow
adybag14-cyber May 8, 2026
7c174e6
fix: harden termux update path with uv bootstrap and env guard
adybag14-cyber May 8, 2026
3adcc64
fix(patch-tool): advertise per-mode required params in schema descrip…
briandevans Apr 25, 2026
8e4f3ba
test(patch-tool): collapse 9 schema-shape tests into 2 invariants
teknium1 May 8, 2026
24d3216
fix(slack): enable writable app home DMs in manifest
dandacompany May 6, 2026
524cbab
chore(release): add dandacompany to AUTHOR_MAP for salvaged PR #20503
teknium1 May 9, 2026
dccf1fb
fix(gateway): cap adapter disconnect during stop
LeonSGP43 May 5, 2026
78b0008
fix(gateway): also catch restart TimeoutExpired; friendly message
teknium1 May 9, 2026
a7e7921
fix(tui): trim markdown wrap spaces (#22062)
OutThisLife May 9, 2026
dbafa08
fix(cron): avoid delivery origin as sender identity
May 9, 2026
f2afa68
chore(release): add oferlaor to AUTHOR_MAP for PR #22356 salvage
kshitijk4poor May 9, 2026
e407376
fix(cron): normalize partial job records
helix4u May 9, 2026
e572737
Fix cron dashboard rendering for partial jobs
LeonSGP43 May 7, 2026
96dc272
fix(cron): use getJobState helper in handlePauseResume
kshitijk4poor May 9, 2026
28b5bd7
chore(release): add leehack to AUTHOR_MAP for PR #22053 salvage (#22409)
kshitijk4poor May 9, 2026
b323957
fix(telegram): preserve DM topic routing via reply fallback
leehack May 9, 2026
aef297a
fix(telegram): skip send_chat_action for DM topic reply-fallback lanes
kshitijk4poor May 9, 2026
c7e8add
fix(context): handle JSON decode errors in compression — salvage of #…
kshitijk4poor May 9, 2026
8fb3e2d
fix: always send tenant headers in OpenViking _headers() when account…
kshitijk4poor May 9, 2026
ae005ec
fix(send_message): map Telegram General topic id to None for forum gr…
kshitijk4poor May 9, 2026
2a7047c
fix(sqlite): fall back to journal_mode=DELETE on NFS/SMB/FUSE (#22043)
kshitijk4poor May 9, 2026
4632be1
chore(release): add uzunkuyruk to AUTHOR_MAP (#22434)
kshitijk4poor May 9, 2026
326ca75
fix(delegate): accept JSON string batch tasks
Bartok9 May 8, 2026
7330183
fix(model_tools): log warnings for failed JSON-array coercion
uzunkuyruk May 9, 2026
aad5490
fix(webui): add platform hint for MEDIA rendering
qWaitCrypto May 8, 2026
2c8c48f
fix(webui): clarify MEDIA absolute-path hint
qWaitCrypto May 8, 2026
0f1d41a
fix(transports): use PEP 604 annotation for ToolCall.extra_content
Feranmi01 May 8, 2026
c386400
fix(security): honor relay-declared sender_type in Google Chat adapte…
memosr May 8, 2026
8578f89
test(google-chat): cover relay-declared sender_type honoring
kshitijk4poor May 9, 2026
e3cd4e4
chore(release): add heathley email to AUTHOR_MAP for PR #21911 salvag…
kshitijk4poor May 9, 2026
9bbad3c
fix(security): drop caller-controlled author override in kanban_comment
memosr May 9, 2026
e3ebaa1
test(kanban): cover kanban_comment author hardening + cross-task policy
kshitijk4poor May 9, 2026
7e578f0
feat(feishu): add native update prompt cards
heathley May 8, 2026
b7d8e28
chore(release): add Zhekinmaksim to AUTHOR_MAP (#22449)
kshitijk4poor May 9, 2026
4a1840e
fix(async): replace get_event_loop() with get_running_loop() in async…
Zhekinmaksim May 9, 2026
5d2a75d
chore(release): add KvnGz to AUTHOR_MAP (#22458)
kshitijk4poor May 9, 2026
3801825
fix(tests): pin UTF-8 encoding when reading source files on Windows
Feranmi01 May 7, 2026
93e25ce
feat(plugins): add standalone_sender_fn for out-of-process cron delivery
GodsBoy May 8, 2026
f7e514d
fix(profiles): exclude infrastructure artifacts when cloning with --c…
donrhmexe May 9, 2026
cca2869
fix(banner): resolve update-check repo from running code, not profile…
fahdad May 8, 2026
8b65017
fix(gateway): clear slash-confirm state during session boundary cleanup
novax635 May 9, 2026
1ac8deb
feat(gateway): stream Telegram edits safely
nik1t7n May 8, 2026
f6d45e5
chore: add nik1t7n to AUTHOR_MAP
kshitijk4poor May 9, 2026
8fdaf4d
fix(telegram): exclude row-label column from bullet items in table re…
uzunkuyruk May 9, 2026
f1f42a7
Merge pull request #22610 from uzunkuyruk/fix/telegram-table-row-labe…
ethernet8023 May 9, 2026
0cafe7d
Merge pull request #22510 from novax635/fix/gateway-slash-confirm-bou…
ethernet8023 May 9, 2026
b9c0011
feat: confirm prompt for destructive slash commands (#4069) (#22687)
teknium1 May 9, 2026
0c22434
fix(kanban): call recompute_ready after unlink_tasks removes a depend…
wesleysimplicio May 9, 2026
0d98007
chore: add wesleysimplicio to AUTHOR_MAP
teknium1 May 9, 2026
8f83046
perf(google_chat): defer heavy google-cloud imports to first adapter …
teknium1 May 9, 2026
7969401
feat(plugins): HERMES_PLUGINS_DEBUG=1 surfaces plugin discovery logs …
teknium1 May 9, 2026
cda20ee
fix(kanban): gate claim + unblock on parent completion
SiliconID May 9, 2026
000ddb8
chore: add SiliconID to AUTHOR_MAP
teknium1 May 9, 2026
1f4200d
feat(delegate): show user's actual concurrency / spawn-depth limits i…
teknium1 May 9, 2026
7d276bf
fix(cli): expand composite toolset when mixed with configurables in p…
jackjin1997 May 9, 2026
124fbb0
fix(gateway): refresh runtime argv metadata
qWaitCrypto May 9, 2026
c8ede8a
fix(plugins): resolve Git binary for installs under minimal PATH
xieNniu May 9, 2026
78b8155
chore: add xieNniu to AUTHOR_MAP
teknium1 May 9, 2026
854c2ce
fix(telegram): honor message.quote for partial-quote reply context
briandevans May 9, 2026
a33c63b
fix(profiles): honour active_profile when HERMES_HOME points to herme…
wesleysimplicio May 9, 2026
c705c7a
fix(dingtalk): clarify webhook media behavior
qWaitCrypto May 9, 2026
684fd14
fix(dingtalk): align override signatures with base + guard Optional[e…
teknium1 May 9, 2026
9aefa74
feat(mcp): add codex preset for built-in MCP server discovery
kshitijk4poor May 9, 2026
783d117
fix(cron): avoid github skill false positives in scanner
qWaitCrypto May 9, 2026
691778a
fix(cron): keep auth-header exfiltration blocked
qWaitCrypto May 9, 2026
b6ff96c
fix(cron): allow quoted URL in github auth-header allowlist
teknium1 May 9, 2026
4e8b857
tests: add Windows skip guards for UNIX-only stdlib imports
wali-reheman May 9, 2026
b959cfa
fix: move pytest.importorskip below pytest import in skip-guarded tests
teknium1 May 9, 2026
369cee0
chore: add wali-reheman to AUTHOR_MAP
teknium1 May 9, 2026
55f518e
feat(gateway): add Telegram guest mention mode
nik1t7n May 8, 2026
dae94fa
fix: follow-up for salvaged PR #22263
kshitijk4poor May 9, 2026
e90aa7f
fix(agent): notify context engine on commit_memory_session (#22764)
teknium1 May 9, 2026
f00dc6d
fix(tests): harden run_tests.sh — uv-aware bootstrap + scrub HERMES_C…
teknium1 May 9, 2026
ade5981
fix(kanban): sanitize comment author rendering in build_worker_contex…
teknium1 May 9, 2026
86f69e8
fix(agent): hydrate memory-nudge counters from conversation_history (…
teknium1 May 9, 2026
2124ad7
fix(api-server): emit length/error finish_reason for truncation/failu…
teknium1 May 9, 2026
70bc52e
fix(cli): make Ctrl+Enter insert newline on WSL/SSH/Windows Terminal …
teknium1 May 9, 2026
e7c0d6e
fix(fallback): skip chain entries matching current provider/model/bas…
teknium1 May 9, 2026
6e5489c
fix(memory): tighten MEMORY_GUIDANCE against ephemeral PR/issue/SHA n…
teknium1 May 9, 2026
8f711f7
fix(tools): install cua-driver when Computer Use is enabled via 'herm…
teknium1 May 9, 2026
e612c3d
perf(doctor): parallelize API connectivity checks and disable IMDS (#…
teknium1 May 9, 2026
13b474c
fix: send correct resolution param to xAI image generation API
A-kamal May 2, 2026
5b32c9f
chore: add A-kamal to AUTHOR_MAP for PR #18678
A-kamal May 2, 2026
dcff23a
test(xai-image): regression-guard literal '1k'/'2k' resolution payload
teknium1 May 9, 2026
ea2d66d
perf(gateway): defer QQAdapter and YuanbaoAdapter imports via PEP 562…
teknium1 May 9, 2026
252d68f
docs: deep audit — fix stale config keys, missing commands, and regis…
teknium1 May 9, 2026
cd712b1
feat(transports/codex): pass reasoning.effort to xAI Responses API
julientalbot-ergonomia May 8, 2026
775c0e2
perf(models_dev): cache-first lookup, skip network when disk cache is…
teknium1 May 9, 2026
17d8914
fix(auxiliary): rotate pooled auth after quota failures
Qwinty May 9, 2026
5a00211
chore: add Qwinty to AUTHOR_MAP
teknium1 May 9, 2026
3170c8d
fix(browser_tool): do not cache transient None cloud provider resolution
wesleysimplicio May 9, 2026
48bf0ea
fix(browser_tool): fall through to autodetect on config read failure
wesleysimplicio May 9, 2026
3fd4ccb
fix(email): send IMAP ID extension to support 163/NetEase mailbox
wesleysimplicio May 9, 2026
a671d8a
fix(email): use real hermes version in IMAP ID command
wesleysimplicio May 9, 2026
98e94be
fix(deps): declare youtube-transcript-api in pyproject.toml [youtube]…
wesleysimplicio May 9, 2026
68854cd
fix(agent): extract thinking from content-list blocks for DeepSeek V4…
wesleysimplicio May 9, 2026
7869838
fix(kanban): make _migrate_add_optional_columns idempotent on concurr…
wesleysimplicio May 9, 2026
1dd0790
fix(doctor): skip pluggable provider profiles when a dedicated check …
wesleysimplicio May 9, 2026
6e848f6
fix(doctor): normalize provider name and aliases before dedicated-ski…
wesleysimplicio May 9, 2026
fe61d95
fix(completion): use valid zsh _arguments exclusion-group syntax
Sanjays2402 May 9, 2026
1c9ffb1
fix(model-metadata): align hy3-preview static fallback + delete chang…
teknium1 May 9, 2026
ca13993
fix(delegate): add explicit do-not-use guidance to acp_command/acp_ar…
wesleysimplicio May 9, 2026
236f3b0
feat(gateway): add Telegram notification mode to suppress intermediat…
CalmProton May 9, 2026
b4d3092
chore: add CalmProton to AUTHOR_MAP
teknium1 May 9, 2026
448c11f
fix(telegram): default notifications to 'important' (silence intermed…
teknium1 May 9, 2026
1508dcb
fix(gateway): adopt unit's HERMES_HOME for --system CLI ops
mbac May 9, 2026
5e2eba8
chore: add mbac to AUTHOR_MAP
teknium1 May 9, 2026
883e11f
fix(openrouter): add x-grok-conv-id header for Grok models to improve…
Ninso112 May 9, 2026
bfc84bd
chore: add Ninso112 to AUTHOR_MAP
teknium1 May 9, 2026
9c26297
fix(gateway): preserve Ctrl+C for Windows foreground runs
helix4u May 9, 2026
840ebe0
fix: make session search initialize session db
HenkDz May 3, 2026
550f6e2
perf(teams): defer httpx import to first webhook call (#22831)
teknium1 May 9, 2026
b349ae1
fix(acp): honor task cwd for foreground terminal commands
HenkDz May 1, 2026
c7f0aab
feat(openrouter): wire Pareto Code router with min_coding_score knob …
teknium1 May 9, 2026
70bfd42
fix(gateway): preserve reasoning_content, codex_message_items, finish…
teknium1 May 9, 2026
0bcc327
docs(openrouter): document auxiliary.<task>.extra_body for OR routing…
teknium1 May 9, 2026
fef1a41
docs: round 2 audit — messaging, developer-guide, guides, integration…
teknium1 May 9, 2026
c1cc3d4
perf(image_gen): defer fal_client import to first generation request …
teknium1 May 10, 2026
1321bcf
fix(gateway): finalize final stream edit on done
kidonng May 9, 2026
af9df46
chore: add kidonng to AUTHOR_MAP
teknium1 May 9, 2026
0c5c4d1
fix(skills-hub): cover remaining SSRF fetch paths after #10029
heathley May 9, 2026
35f773c
fix(context_compressor): treat streaming premature-close as transient…
wesleysimplicio May 9, 2026
058c508
fix(session): route OR-combined short CJK tokens to LIKE fallback (#2…
wesleysimplicio May 9, 2026
2245879
fix(checkpoint): guard _touch_project against non-dict project metadata
wesleysimplicio May 9, 2026
3863d6d
fix(update): prebuild psutil on Termux Android via Linux path shim
adybag14-cyber May 9, 2026
6d5d467
fix(update): use termux-all uv fallback path on Termux
adybag14-cyber May 9, 2026
c179bda
fix(install): also patch psutil on Termux fresh-install path
teknium1 May 10, 2026
53ec328
fix(process_registry): kill orphaned Popen on post-spawn setup failure
wesleysimplicio May 9, 2026
116a144
fix(terminal): bridge docker_env config to TERMINAL_DOCKER_ENV
wesleysimplicio May 9, 2026
246c676
fix(gateway): degrade gracefully when all platform adapters are missing
wesleysimplicio May 9, 2026
6ddc48b
fix(fallback): resolve api_key_env in fallback chain entries (carve-o…
wesleysimplicio May 9, 2026
4f8d8ad
fix(error_classifier): classify generic-typed timeout messages as tra…
wesleysimplicio May 9, 2026
2ffef15
fix(test_gateway): stop run_gateway() tests from rewriting the dev's …
teknium1 May 10, 2026
6bf7ac3
fix(gateway): detect gateway process via /proc in Docker without procps
wesleysimplicio May 9, 2026
4ca7c21
test(gateway): stub /proc unavailability in find_gateway_pids fallbac…
teknium1 May 9, 2026
1fb9f7c
fix(gateway): pass max_total_size_mb and max_file_size_mb to Checkpoi…
DanielLSM May 9, 2026
f93b8c2
chore: add DanielLSM to AUTHOR_MAP
teknium1 May 9, 2026
4fdaf0b
fix: use credential_pool for custom endpoint model listing probes
v1b3coder May 9, 2026
de54618
chore: add v1b3coder to AUTHOR_MAP
teknium1 May 9, 2026
85383c6
fix(cli): preserve config comments on setting writes
ming1523 May 9, 2026
da086a0
chore: add ming1523 to AUTHOR_MAP
teknium1 May 9, 2026
5971a4e
feat(docs): richer info panels on the Skills Hub for built-in + optio…
teknium1 May 10, 2026
b67ea7f
perf(cli): skip welcome banner on `chat -q` single-query mode (#22904)
teknium1 May 10, 2026
4375b82
feat(curator): show rename map in user-visible summary (#22910)
teknium1 May 10, 2026
ded194e
chore(skills): move heavy training skills + outlines to optional-skil…
teknium1 May 10, 2026
08ec602
fix(tool-result-storage): persist via stdin to bypass 128 KB exec-arg…
teknium1 May 10, 2026
d04a0b8
docs(skills): clarify kanban fan-out decomposition
eloklam May 10, 2026
eb3db23
chore: AUTHOR_MAP entry for eloklam (#22898)
teknium1 May 10, 2026
8954537
fix(kanban): request default board explicitly (#21819)
Tranquil-Flow May 8, 2026
dd49d50
test(kanban): assert re-block notification is delivered after unblock…
jackey8616 May 9, 2026
a403665
fix(kanban): remove blocked kind from unsub
jackey8616 May 9, 2026
998676d
chore(test): comment of test case rewrite to english
jackey8616 May 9, 2026
e622504
docs(user-stories): add 18 verified social entries (99 → 117) (#22920)
teknium1 May 10, 2026
3800972
feat(vision): vision_analyze returns pixels to vision-capable models,…
teknium1 May 10, 2026
68e4464
fix(stream-retry): collapse two-line drop status, name provider, and …
teknium1 May 10, 2026
6f2d605
fix(kanban): drop redundant init_db() in gateway watchers (#21378)
li0near May 10, 2026
e2ce89a
chore: AUTHOR_MAP entry for li0near gmail (#21378)
teknium1 May 10, 2026
3d2bfc5
chore(models): refresh OpenRouter + Nous fallback lists (#23001)
teknium1 May 10, 2026
d1fc748
fix(kanban): /kanban slash command emits argparse garbage instead of …
tymrtn May 8, 2026
5a70d9b
chore: AUTHOR_MAP entry for tymrtn (#21794)
teknium1 May 10, 2026
126cbff
feat(stream-retry): add upstream + timing diagnostics to drop log (#2…
teknium1 May 10, 2026
e5af1dd
fix(review): tell background reviewer not to capture transient env fa…
teknium1 May 10, 2026
dcc8de8
feat(codex): add gpt-5.3-codex-spark model
nederev May 1, 2026
2a6f3de
fix(model-metadata): restore gpt-5.3-codex-spark fallback context
nederev May 1, 2026
c6dc295
fix(model-metadata): set codex-spark fallback context to 128k
nederev May 1, 2026
9457644
fix: surface Codex CLI-only models
askclaw-vesper May 4, 2026
6b5e011
chore: add codex-spark salvage contributors to AUTHOR_MAP
kshitijk4poor May 10, 2026
9ee9a42
docs(codex-spark): document ChatGPT Pro entitlement gating
kshitijk4poor May 10, 2026
826e717
test(codex-spark): add live-API regression and make picker test deter…
kshitijk4poor May 10, 2026
44cdf55
fix(codex-spark): defensive 128k entry in DEFAULT_CONTEXT_LENGTHS + c…
kshitijk4poor May 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 12 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,15 @@

# Dependencies
node_modules
**/node_modules
.venv
**/.venv

# Built artifacts that are regenerated inside the image. Excluded so local
# rebuilds on the developer's machine don't invalidate the npm-install layer
# that now depends on the full ui-tui/packages/hermes-ink/ tree being present.
ui-tui/dist/
ui-tui/packages/hermes-ink/dist/

# CI/CD
.github
Expand All @@ -17,3 +25,7 @@ node_modules

# Runtime data (bind-mounted at /opt/data; must not leak into build context)
data/

# Compose/profile runtime state (bind-mounted; avoid ownership/secret issues)
hermes-config/
runtime/
46 changes: 46 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,15 @@ BROWSERBASE_PROXIES=true
# Uses custom Chromium build to avoid bot detection altogether
BROWSERBASE_ADVANCED_STEALTH=false

# Browser engine for local mode (default: auto = Chrome)
# "auto" — use Chrome (don't pass --engine flag)
# "lightpanda" — use Lightpanda (1.3-5.8x faster navigation, no screenshots)
# "chrome" — explicitly request Chrome
# Requires agent-browser v0.25.3+. Lightpanda commands that fail or return
# empty results are automatically retried with Chrome.
# Also configurable via browser.engine in config.yaml.
# AGENT_BROWSER_ENGINE=auto

# Browser session timeout in seconds (default: 300)
# Sessions are cleaned up after this duration of inactivity
BROWSER_SESSION_TIMEOUT=300
Expand Down Expand Up @@ -398,3 +407,40 @@ IMAGE_TOOLS_DEBUG=false
# Override STT provider endpoints (for proxies or self-hosted instances)
# GROQ_BASE_URL=https://api.groq.com/openai/v1
# STT_OPENAI_BASE_URL=https://api.openai.com/v1

# =============================================================================
# MICROSOFT TEAMS INTEGRATION
# =============================================================================
# Register a Bot in Azure: https://dev.botframework.com/ → "Register a bot"
# Or use Azure Portal: Azure Active Directory → App registrations → New registration
# Then add the bot to Teams via the Bot Framework or App Studio.
#
# TEAMS_CLIENT_ID= # Azure AD App (client) ID
# TEAMS_CLIENT_SECRET= # Azure AD client secret value
# TEAMS_TENANT_ID= # Azure AD tenant ID (or "common" for multi-tenant)
# TEAMS_ALLOWED_USERS= # Comma-separated AAD object IDs or UPNs
# TEAMS_ALLOW_ALL_USERS=false # Set true to skip the allowlist
# TEAMS_HOME_CHANNEL= # Default channel/chat ID for cron delivery
# TEAMS_HOME_CHANNEL_NAME= # Display name for the home channel
# TEAMS_PORT=3978 # Webhook listen port (Bot Framework default)

# =============================================================================
# GOOGLE CHAT INTEGRATION
# =============================================================================
# Connects via Cloud Pub/Sub pull subscription (no public URL required).
# Setup walkthrough: website/docs/user-guide/messaging/google_chat.md.
# 1. Create a GCP project, enable the Google Chat API and Cloud Pub/Sub.
# 2. Create a Service Account with roles/pubsub.subscriber on the
# subscription (NOT project-wide); download the JSON key.
# 3. Configure your Chat app at console.cloud.google.com/apis/credentials
# → Google Chat API → Configuration → Cloud Pub/Sub topic.
# 4. (Optional, for native attachment delivery) Each user runs
# `/setup-files` once in their own DM after Pub/Sub is wired up.
#
# GOOGLE_CHAT_PROJECT_ID= # GCP project hosting the topic (or set GOOGLE_CLOUD_PROJECT)
# GOOGLE_CHAT_SUBSCRIPTION_NAME= # Full path: projects/<id>/subscriptions/<name>
# GOOGLE_CHAT_SERVICE_ACCOUNT_JSON= # Path to SA JSON (or set GOOGLE_APPLICATION_CREDENTIALS)
# GOOGLE_CHAT_ALLOWED_USERS= # Comma-separated emails allowed to talk to the bot
# GOOGLE_CHAT_ALLOW_ALL_USERS=false # Set true to skip the allowlist
# GOOGLE_CHAT_HOME_CHANNEL= # Default space (spaces/XXXX) for cron delivery
# GOOGLE_CHAT_HOME_CHANNEL_NAME= # Display name for the home channel
47 changes: 47 additions & 0 deletions .github/actions/hermes-smoke-test/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Hermes smoke test
description: >
Run the image's built-in entrypoint against `--help` and `dashboard --help`
to catch basic runtime regressions before publishing. Requires the image
to already be loaded into the local Docker daemon under `image`.

Works identically on amd64 and arm64 runners.

inputs:
image:
description: Fully-qualified image tag (e.g. nousresearch/hermes-agent:test)
required: true

runs:
using: composite
steps:
- name: Ensure /tmp/hermes-test is hermes-writable
shell: bash
run: |
# The image runs as the hermes user (UID 10000). GitHub Actions
# creates /tmp/hermes-test root-owned by default, which hermes
# can't write to — chown it to match the in-container UID before
# bind-mounting. Real users doing `docker run -v ~/.hermes:...`
# with their own UID hit the same issue and have their own
# remediations (HERMES_UID env var, or chown locally).
mkdir -p /tmp/hermes-test
sudo chown -R 10000:10000 /tmp/hermes-test

- name: hermes --help
shell: bash
run: |
docker run --rm \
-v /tmp/hermes-test:/opt/data \
--entrypoint /opt/hermes/docker/entrypoint.sh \
"${{ inputs.image }}" --help

- name: hermes dashboard --help
shell: bash
run: |
# Regression guard for #9153: dashboard was present in source but
# missing from the published image. If this fails, something in
# the Dockerfile is excluding the dashboard subcommand from the
# installed package.
docker run --rm \
-v /tmp/hermes-test:/opt/data \
--entrypoint /opt/hermes/docker/entrypoint.sh \
"${{ inputs.image }}" dashboard --help
14 changes: 12 additions & 2 deletions .github/actions/nix-setup/action.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
name: 'Setup Nix'
description: 'Install Nix with DeterminateSystems and enable magic-nix-cache'
description: 'Install Nix and configure Cachix binary cache'

inputs:
cachix-auth-token:
description: 'Cachix auth token (enables push). Omit for read-only.'
required: false
default: ''

runs:
using: composite
steps:
- uses: DeterminateSystems/nix-installer-action@ef8a148080ab6020fd15196c2084a2eea5ff2d25 # v22
- uses: DeterminateSystems/magic-nix-cache-action@565684385bcd71bad329742eefe8d12f2e765b39 # v13
- uses: cachix/cachix-action@1eb2ef646ac0255473d23a5907ad7b04ce94065c # v17
with:
name: hermes-agent
authToken: ${{ inputs.cachix-auth-token }}
continue-on-error: true
44 changes: 44 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Dependabot configuration for hermes-agent.
#
# Deliberately scoped to github-actions only.
#
# We do NOT enable Dependabot for pip / npm / any source-dependency ecosystem
# because we pin source dependencies exactly (uv.lock, package-lock.json) as
# part of our supply-chain posture. Automatic version-bump PRs against those
# pins would undermine the strategy — pins are moved deliberately, after
# review, not on a schedule.
#
# github-actions is the exception: action pins (we use full commit SHAs per
# supply-chain policy) must be updated when upstream actions publish
# patches — usually themselves security fixes. Dependabot opens a PR with
# the new SHA and release notes; we review and merge like any other PR.
#
# Security-update PRs for source dependencies (opened ONLY when a CVE is
# published affecting a currently-pinned version) are enabled separately
# via the repo's Dependabot security updates setting
# (Settings → Code security → Dependabot → Dependabot security updates).
# Those are CVE-only, not schedule-driven, and do not conflict with our
# pinning strategy — they fire when a pinned version becomes known-bad,
# which is exactly when we want to move the pin.

version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "github-actions"
commit-message:
prefix: "chore(actions)"
include: "scope"
groups:
# Batch routine action bumps into one PR per week to reduce noise.
# Security updates still open individually and bypass grouping.
actions-minor-patch:
update-types:
- "minor"
- "patch"
10 changes: 10 additions & 0 deletions .github/workflows/deploy-site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,16 @@ jobs:
run: |
mkdir -p _site/docs
cp -r website/build/* _site/docs/
# llms.txt / llms-full.txt are also published at the site root
# (https://hermes-agent.nousresearch.com/llms.txt) because some
# agents and IDE plugins probe the classic root-level path rather
# than /docs/llms.txt. Same file, two URLs, one source of truth.
if [ -f website/build/llms.txt ]; then
cp website/build/llms.txt _site/llms.txt
fi
if [ -f website/build/llms-full.txt ]; then
cp website/build/llms-full.txt _site/llms-full.txt
fi

- name: Upload artifact
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3
Expand Down
Loading