Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
555 commits
Select commit Hold shift + click to select a range
8a64e15
fix(kanban): ignore stale HERMES_KANBAN_BOARD for removed boards
QuenVix May 19, 2026
afae2dd
fix(kanban): keep board-management commands independent from board ov…
QuenVix May 19, 2026
326c15d
fix(kanban): preserve notifier_profile for dashboard home subscriptions
Zyrixtrex May 19, 2026
b7ea62e
fix(kanban): promote dependents when a parent is archived
Zyrixtrex May 19, 2026
f149e1e
fix(cli): make kanban specify max_tokens configurable
argabor May 19, 2026
bc961c1
fix(kanban): sync slash subcommands with live parser
Que0x May 19, 2026
40c1dec
fix(kanban): promote blocked tasks when parent dependencies complete
bradhallett May 19, 2026
5db0d72
fix(kanban): use 'is not None' check for max_runtime_seconds in creat…
sprmn24 May 19, 2026
f042931
fix(kanban): reset failure counters on unblock_task
bradhallett May 19, 2026
de9bcfc
fix(kanban): fingerprint crash errors to prevent fleet-wide retry exh…
bradhallett May 19, 2026
9281599
fix(kanban): align board_exists with board discovery rules
soynchux May 19, 2026
917e518
fix(kanban): demote ready children when a parent is reopened
Drexuxux May 19, 2026
ca8126b
fix(kanban): serialize DB initialization
psionic73 May 19, 2026
d8ad431
fix(kanban): task_age() tolerates ISO-8601 timestamps
Interstellar-code May 19, 2026
4f6101c
Fix Kanban dashboard initial board selection
moortekweb-art May 19, 2026
8627916
fix(kanban): persist worker session metadata on completion
wesleysimplicio May 19, 2026
0f62013
fix(kanban): make claim ttl configurable
LeonSGP43 May 19, 2026
8bfb456
fix(kanban): pass accept-hooks to worker chat subprocess
LeonSGP43 May 19, 2026
fe5e0bf
feat(kanban): add board-level default workdir (#25430)
zccyman May 19, 2026
f12382f
docs(kanban-worker): document notification routing configuration
LizerAIDev May 19, 2026
c30608c
fix(kanban): preserve worker tools with restricted toolsets
haran2001 May 19, 2026
0b547ae
fix(kanban): make legacy task migration idempotent
ht1072 May 19, 2026
5d079fe
fix: harden Kanban worker Hermes command resolution
hanzckernel May 19, 2026
a5c2836
feat(kanban): allow trimmed task comments
ACR27 May 19, 2026
6c4f11c
fix: show scheduled kanban tasks in dashboard
roycepersonalassistant May 19, 2026
4da4133
fix: assign single-task kanban decompositions
DoGMaTiiC May 19, 2026
2dec760
fix(kanban-dashboard): make Orchestration mode checkbox label static
maxmilian May 19, 2026
4341072
docs(env): add HERMES_KANBAN_DISPATCH_IN_GATEWAY override (#21956)
Bartok9 May 19, 2026
0392cf5
fix(kanban): close sqlite connection on init failure to prevent fd leak
Ade5954 May 19, 2026
b9d38a5
fix(kanban): don't crash dispatched workers when kanban-worker skill …
oemtalks May 19, 2026
fdb374e
fix(packaging): ship dashboard plugin assets in wheel
LeonSGP43 May 19, 2026
713c231
docs(kanban): document worker protocol auto-blocks
helix4u May 19, 2026
666b66a
fix(oneshot): pass fallback_providers from profile config to AIAgent
uzunkuyruk May 19, 2026
e8ce7b8
fix(kanban): reject direct running transitions in dashboard bulk updates
kronexoi May 19, 2026
fb96208
feat(kanban): add initial-status for human-ops cards
shunsuke-hikiyama May 19, 2026
9f008bc
fix(kanban): release scratch workspace and tmux session on task compl…
LeonJS May 19, 2026
a94ddd8
fix(kanban): honor severity thresholds in diagnostics
LeonSGP43 May 19, 2026
d3345cc
test: isolate Kanban env pins in hermetic fixture
steezkelly May 19, 2026
5fdcfd8
feat(kanban): add max_in_progress config to cap concurrent running tasks
SimbaKingjoe May 19, 2026
3a7ed7b
fix(packaging): ship bundled skills in wheel
LeonSGP43 May 19, 2026
365da2d
fix: 4 small surgical bugs
Bartok9 May 19, 2026
206f595
perf(prompt): cache kanban worker guidance at session init
RyanRana May 19, 2026
a846e50
feat(kanban): add --sort option to 'hermes kanban list'
LizerAIDev May 19, 2026
b65dfbb
docs: add kanban codex lane skill
tchanee May 19, 2026
02efad7
feat(kanban): worker visibility endpoints (workers/active, runs/{id},…
Interstellar-code May 19, 2026
9d9f316
chore(release): map contributor email for attribution check
eloklam May 19, 2026
e215558
test(kanban-dashboard): pin enriched 409 detail and inline error wiri…
xxxigm May 19, 2026
78da7ef
docs(codex_app_server): document multi-root Kanban writable_roots (#2…
xxxigm May 19, 2026
d375747
fix(gateway): quiet corrupt kanban dispatcher boards
aqilaziz May 19, 2026
8158494
docs: align kanban readiness docs and smoke tests
bensargotest-sys May 19, 2026
79f6654
feat(kanban): surface per-task model_override in show + tool output
loicnico96 May 19, 2026
3ee7a55
feat(cli): add kanban swarm topology helper
Niraven May 19, 2026
8e193cf
feat(kanban): add optional board parameter to all MCP tools
nnnet May 19, 2026
31fe229
feat(kanban): stamp originating ACP session_id on tasks
awizemann May 19, 2026
f55d94a
feat(kanban): wire dispatcher to dispatch review agents from review c…
thewillhuang May 19, 2026
e286e68
feat(kanban): stale detection for running tasks in dispatcher
thewillhuang May 19, 2026
341912c
feat(kanban): filter tasks by workflow fields and runs by status/outcome
nehaaprasaad May 19, 2026
264e85b
feat(kanban): add respawn guard to block repeat worker storms
fardoche6 May 19, 2026
1a51727
feat(kanban): show dashboard cron jobs across profiles
SerenityTn May 19, 2026
1a883b4
fix(kanban): remove orphan conflict markers from config.py (#28458)
teknium1 May 19, 2026
53cf82a
fix(kanban): remove orphan conflict markers from kanban.py (#28459)
teknium1 May 19, 2026
1733cb3
feat(kanban): configure worktree paths and branches
aqilaziz May 19, 2026
b5c1fe7
feat(skills): add skill bundles — alias /<name> loads multiple skills…
teknium1 May 19, 2026
e382365
feat(kanban): add scheduled status for delayed follow-ups
roycepersonalassistant May 19, 2026
dfcf48b
feat(kanban): drag-to-delete trash zone + bulk delete for task cards
Jpalmer95 May 19, 2026
c4c45f1
docs: add Korean Kanban documentation
pochi-gio May 19, 2026
1912810
fix(tests): catch up six stale tests after compression/aux/kanban cha…
teknium1 May 19, 2026
6fb57bc
fix(telegram): render full clarify choice text in message body, use s…
asdlem May 18, 2026
ab11d09
chore(release): map @asdlem for PR #27852 salvage
teknium1 May 19, 2026
7fad501
fix(telegram): default streaming transport to edit
LeonSGP43 May 15, 2026
21a15b6
fix(telegram): respect reply_to_mode for DM topic reply fallback
liuhao1024 May 11, 2026
b93996c
fix(gateway): route Telegram audio file attachments away from STT pip…
Bartok9 May 13, 2026
785993b
chore(release): map bartok9 noreply for PR #24879 salvage
teknium1 May 19, 2026
edce8a5
fix(send_message): route standalone Telegram sends through TELEGRAM_P…
pepelax May 14, 2026
b58b418
chore(release): map @pepelax for PR #25419 salvage
teknium1 May 19, 2026
362ef91
fix(kanban-dashboard): restore implementations dropped during salvage…
teknium1 May 19, 2026
f55c67a
fix(gateway): roll over Telegram tool progress bubbles
Qwinty May 15, 2026
256c4c1
fix(gateway): scope audio_file_paths outside media_urls guard
teknium1 May 19, 2026
1b3c51b
fix(gateway): keep tool-progress edits alive after Telegram flood con…
erhnysr May 13, 2026
32435df
chore(release): map @erhnysr for PR #25198 salvage
teknium1 May 19, 2026
6be579f
fix(telegram): preserve can_edit after transient network errors in pr…
Bartok9 May 18, 2026
f260aa6
fix(telegram): recover from post-update polling conflict without ente…
CryptoByz May 14, 2026
17f3254
fix(test+release): update conflict retry count for MAX=5; map @CryptoByz
teknium1 May 19, 2026
fbabd56
fix(gateway): route background-process notifications into Telegram DM…
fabiosiqueira May 17, 2026
2994bf4
chore(release): map @fabiosiqueira for PR #27212 salvage
teknium1 May 19, 2026
de4cb55
fix(telegram): route resumed DM topic sends directly
Qwinty May 18, 2026
db50af9
fix(telegram): enforce TELEGRAM_ALLOWED_USERS allowlist on inbound me…
ygd58 May 11, 2026
89d3205
fix(telegram): fail-closed auth fallback when TELEGRAM_ALLOWED_USERS …
liuhao1024 May 12, 2026
8439ddc
test(telegram): stub _is_callback_user_authorized in trigger-gating f…
teknium1 May 19, 2026
5c4b43c
fix(telegram): reset sticky fallback IP on connect failure, retry pri…
falconexe May 12, 2026
e7a3e99
test+release: align stale sticky-IP test for #24511; map @falconexe
teknium1 May 19, 2026
434d508
fix(telegram): propagate extra base_url config
LeonSGP43 May 15, 2026
cf814c9
feat(send_message): auto-detect @username mentions and create Telegra…
fonhal May 18, 2026
9a444a9
test+release: align send_message mocks for MessageEntity import; map …
teknium1 May 19, 2026
ba2572e
fix(telegram): resume typing indicator after inline approval click (#…
briandevans May 18, 2026
d69f0c1
fix(gateway): mark final voice reply as notify-worthy so Telegram del…
briandevans May 18, 2026
7b2bcba
fix: avoid Telegram group reply thread session splits
eliteworkstation94-ai May 18, 2026
b46ef2e
chore(release): map @eliteworkstation94-ai for PR #28157 salvage
teknium1 May 19, 2026
f8eeb57
fix(gateway): avoid duplicate Telegram text after auto-TTS voice replies
Zyrixtrex May 16, 2026
35781ba
chore(release): map @Zyrixtrex for PR #26754 salvage
teknium1 May 19, 2026
4b6d35b
fix(telegram): escape send_slash_confirm preview with format_message
nftpoetrist May 14, 2026
bf6a287
chore(release): map @nftpoetrist for PR #25856 salvage
teknium1 May 19, 2026
af381ef
fix(telegram): retry wrapped connect timeouts
samahn0601 May 18, 2026
e19f4c1
chore(release): map @samahn0601 for PR #27887 salvage
teknium1 May 19, 2026
ed9087f
fix(tts): keep native audio outside Telegram voice delivery
aqilaziz May 15, 2026
470edfa
chore(release): map @aqilaziz for PR #26406 salvage
teknium1 May 19, 2026
ede47a5
fix(gateway): pin Telegram DM-topic routing to user's current topic
karthikeyann May 15, 2026
fc42bb9
chore(release): map @karthikeyann for PR #26609 salvage
teknium1 May 19, 2026
df530b4
fix(send_message): add thread-not-found retry for Telegram forum topi…
kunci115 May 16, 2026
2bb04f6
test(send_message): add thread-not-found retry tests for Telegram for…
kunci115 May 16, 2026
4abaec1
test(send_message): add thread-not-found retry tests for Telegram topics
kunci115 May 16, 2026
38356cc
chore(release): map @kunci115 for PR #27098 salvage
teknium1 May 19, 2026
7682198
fix(gateway): register Telegram commands for groups
chromalinx May 15, 2026
efc3740
test+release: fix test fixture for forum_commands; map @chromalinx
teknium1 May 19, 2026
46ce345
fix(telegram): gate profile bots by allowed topics
booker1207 May 13, 2026
032d4ca
chore(release): map @booker1207 for PR #25132 salvage
teknium1 May 19, 2026
a4fb0a3
fix(cron): route Telegram cron deliveries to a dedicated topic via TE…
konsisumer May 13, 2026
77c4675
fix(telegram): route image documents (.png/.jpg/.webp/.gif) through v…
kiranvk-2011 May 13, 2026
1d37860
test+release: stub auth in test_telegram_documents fixture; map @kira…
teknium1 May 19, 2026
417a653
fix(gateway): prevent Windows Telegram /restart leaving gateway stopped
May 14, 2026
c66efcf
chore(release): map @rak135 for PR #25960 salvage
teknium1 May 19, 2026
3ec28f3
fix(telegram): preserve topic metadata on overflow edits
Qwinty May 17, 2026
9d789f3
feat(telegram): add disable_topic_auto_rename gateway flag
B0Tch1 May 17, 2026
5734c3f
chore(release): map @B0Tch1 for PR #27634 salvage
teknium1 May 19, 2026
95a0955
fix(gateway): restore Telegram DM topic thread_id after session split…
jackjin1997 May 17, 2026
721d47f
chore(release): map @jackjin1997 for PR #27239 salvage
teknium1 May 19, 2026
b38140e
fix(gateway): allow chat-scoped telegram auth without sender user_id
soynchux May 18, 2026
15e89e1
chore(release): map @soynchux for PR #27806 salvage
teknium1 May 19, 2026
16d8e44
fix(telegram): add DM topic typing fallback when message_thread_id re…
fonhal May 18, 2026
d81b888
fix(telegram): report cron topic fallback
el-analista May 14, 2026
4f6fef1
chore(release): map @el-analista for PR #25368 salvage
teknium1 May 19, 2026
1891bee
fix(telegram): wire gt: callback dispatch for gmail-triage buttons
khungate May 14, 2026
e80d308
chore(release): map @khungate for PR #25829 salvage
teknium1 May 19, 2026
b1acf80
feat(telegram): support quick-command-only menus
stevehq26-bot May 18, 2026
17b8121
chore(release): map @stevehq26-bot for PR #28015 salvage
teknium1 May 19, 2026
704872a
fix(telegram): handle channel post updates
brndnsvr May 14, 2026
84a9b81
test: address telegram channel post review
brndnsvr May 14, 2026
f1cefad
test+release: stub auth in channel_posts fixture; map @brndnsvr
teknium1 May 19, 2026
8a80eee
Quiet noisy Telegram gateway errors
May 11, 2026
bb8e9ea
chore(release): map oracle@jarviss-mbp.home for PR #24014 salvage
teknium1 May 19, 2026
ce4d857
Route Telegram multi-bot mentions exclusively
OCWC22 May 12, 2026
e90869e
Document Telegram multi-profile gateway commands
OCWC22 May 12, 2026
fbfe294
fix: ignore Telegram messages for other bots
OCWC22 May 14, 2026
da48be1
chore(release): map @OCWC22 for PR #24581 salvage
teknium1 May 19, 2026
c931dad
feat(telegram): ignore_root_dm with system command lobby
ai-hana-ai May 12, 2026
6d66ad2
docs(telegram): document ignore_root_dm feature
ai-hana-ai May 12, 2026
ce46e6b
chore(release): map @ai-hana-ai for PR #23928 salvage
teknium1 May 19, 2026
a724c3b
feat(telegram): pin incoming user message for duration of agent turn
indigokarasu May 15, 2026
6265b3a
chore(release): map @indigokarasu for PR #26636 salvage
teknium1 May 19, 2026
ad2531b
feat(telegram): skip-STT audio path + 2GB cap via local Bot API server
alber70g May 13, 2026
69b1d31
chore(release): map @alber70g for PR #25280 salvage
teknium1 May 19, 2026
1335ce9
fix(web): add scheduled column to i18n type definitions (#28549)
alt-glitch May 19, 2026
eacce70
docs: comprehensive 2-week sweep of feature/PR coverage gaps (#28497)
teknium1 May 19, 2026
6dd0b35
chore(release): pre-stage AUTHOR_MAP for May 2026 LHF batch group 9 (…
teknium1 May 19, 2026
7f40767
feat(signal): add require_mention filter for group chats
jdelmerico May 19, 2026
03f7bc0
Revert "feat(telegram): pin incoming user message for duration of age…
teknium1 May 19, 2026
22120ef
Revert "feat(telegram): support quick-command-only menus"
teknium1 May 19, 2026
bbd2b46
Revert "feat(send_message): auto-detect @username mentions and create…
teknium1 May 19, 2026
4d44304
Revert "fix(telegram): enforce TELEGRAM_ALLOWED_USERS allowlist on in…
teknium1 May 19, 2026
e2a1a2b
fix(gateway): pre-mark sessions as resume_pending before drain to pre…
LifeJiggy May 19, 2026
276e6cc
fix(matrix): implement thread_require_mention to prevent multi-agent …
justemu May 19, 2026
8c3b065
fix(cli): show active profile in TUI prompt
burjorjee May 19, 2026
6cac56f
fix(tui): preserve dunder identifiers in markdown
helix4u May 19, 2026
0b89628
test(file_ops): add regression tests for git baseline warning in writ…
LifeJiggy May 19, 2026
afffb8d
fix(dashboard): use browser scrollback for chat wheel
YuanHanzhong May 19, 2026
425aba7
fix(cli): ignore stale HERMES_TUI_RESUME env
noctilust May 19, 2026
663ee14
fix(cron): allow emoji ZWJ sequences in prompts
outsourc-e May 19, 2026
b8a9cbd
fix: tolerate unreadable gateway JSONL transcripts
MoonJuhan May 19, 2026
87c6edc
fix(skills): add timeout to Google OAuth urlopen calls
Zyrixtrex May 19, 2026
d759a67
fix: add recovery hints to loop guard warnings
ooovenenoso May 19, 2026
62573f4
fix: guard yaml.safe_load, flock unlock, TOCTOU races, and atomic writes
vanthinh6886 May 19, 2026
4039e2a
chore(release): alias xxxigm noreply for upcoming #27986 salvage (#28…
teknium1 May 19, 2026
12c3983
fix(doctor): attach codex CLI hint to OpenAI Codex auth warning for #…
xxxigm May 19, 2026
a0bd11d
fix(tests): catch up 25 stale tests after recent merges (#28626)
teknium1 May 19, 2026
aedb8ac
feat(update): syntax-validate critical files post-pull, auto-rollback…
teknium1 May 19, 2026
58591d9
feat: show names of user-modified skills in bundled skill sync summary
zccyman May 19, 2026
7f253f5
fix(acp): use tempfile.gettempdir() in workspace auto-approve
Zyrixtrex May 19, 2026
88ee58f
fix(kanban): stale reclaim must not tick failure counter (#28680)
teknium1 May 19, 2026
a3c7531
fix(telegram): address post-merge audit follow-ups (#28670, #28672, #…
teknium1 May 19, 2026
424f2cc
chore(actions)(deps): bump the actions-minor-patch group across 1 dir…
dependabot[bot] May 18, 2026
2692457
chore(actions)(deps): bump docker/login-action from 3.7.0 to 4.1.0
dependabot[bot] May 13, 2026
bbee1dd
chore(actions)(deps): bump docker/build-push-action from 6.19.2 to 7.1.0
dependabot[bot] May 8, 2026
b10b783
chore(actions)(deps): bump actions/setup-python from 5.3.0 to 6.2.0
dependabot[bot] May 15, 2026
7bcdced
fix(kanban): respawn guard defers blocker_auth instead of auto-blocki…
teknium1 May 19, 2026
c498116
chore(actions)(deps): bump actions/checkout from 4.3.1 to 6.0.2
dependabot[bot] May 18, 2026
709e37e
fix(dashboard): add scheduled kanban i18n strings (#28534)
helix4u May 19, 2026
f1254b1
fix(cli): exit prompt_toolkit cleanly on SIGTERM/SIGHUP instead of ra…
teknium1 May 19, 2026
fc90f1b
chore(deps): bump dompurify from 3.3.3 to 3.4.2 in /website
dependabot[bot] May 5, 2026
0b75d24
chore(deps): bump follow-redirects from 1.15.11 to 1.16.0 in /website
dependabot[bot] May 5, 2026
c4bcc77
chore(deps): bump lodash from 4.17.23 to 4.18.1 in /website
dependabot[bot] May 5, 2026
7f1d124
chore(deps): bump lodash-es and langium in /website
dependabot[bot] May 5, 2026
dffcb6f
chore(deps): bump python-multipart from 0.0.22 to 0.0.27
dependabot[bot] May 6, 2026
a9c38c7
chore(deps): bump python-dotenv from 1.2.1 to 1.2.2
dependabot[bot] May 12, 2026
43f8edb
chore(deps): bump fast-uri from 3.1.0 to 3.1.2 in /website
dependabot[bot] May 8, 2026
070eeaa
chore(deps): bump @babel/plugin-transform-modules-systemjs in /website
dependabot[bot] May 9, 2026
ff0a703
fix(web): consume bundled design system assets (#26391)
austinpickett May 19, 2026
ec244e5
chore(deps): bump webpack-dev-server from 5.2.3 to 5.2.4 in /website …
dependabot[bot] May 19, 2026
a3ef217
chore(deps): bump ws in /ui-tui/packages/hermes-ink (#28183)
dependabot[bot] May 19, 2026
39c41d0
chore(deps): bump mermaid from 11.13.0 to 11.15.0 in /website (#24011)
dependabot[bot] May 19, 2026
7c622b6
fix(kanban): migrate task session index after columns
quocanh261997 May 19, 2026
7552e0f
fix(kanban): also hoist idx_events_run + drop redundant inner create
kshitijk4poor May 19, 2026
5a33176
fix(discord): define view classes after lazy discord.py install
EloquentBrush0x May 19, 2026
b0af1d0
Merge pull request #28829 from NousResearch/bb/tui-no-history-truncation
OutThisLife May 19, 2026
ae74b15
chore: add erikengervall to AUTHOR_MAP (#28855)
daimon-nous[bot] May 19, 2026
273ff5c
feat(firecrawl): add integration tag for Hermes usage in browser and …
erikengervall May 19, 2026
ebe0b77
fix(model-switch): mark bare custom provider as current
LeonSGP43 May 11, 2026
57af46f
Revert "feat(firecrawl): add integration tag for Hermes usage in brow…
teknium1 May 19, 2026
2a7308b
fix(update): quarantine hermes.exe vs concurrent Windows instance (#2…
teknium1 May 19, 2026
f007ef8
fix(windows): hide cron script subprocess consoles
nekwo May 16, 2026
95683c0
fix(windows): hide local subprocess consoles
nekwo May 16, 2026
d948de3
fix(gateway): harden Windows gateway install lifecycle
nekwo May 16, 2026
a19eb54
test(gateway-windows): make ctypes.windll monkeypatch tolerant on non…
teknium1 May 19, 2026
a614209
fix(agent): set tool_name on tool-result messages at construction time
justinccdev May 19, 2026
7c2ff74
fix(tui): termux-gate scrollback preservation, touch-friendly defaults
adybag14-cyber May 19, 2026
2b41f9d
Merge pull request #28914 from justincc/fix/fix-blank-tool-names-at-m…
ethernet8023 May 19, 2026
57145ca
feat: add BrowseShSource adapter for browse.sh skills catalog
Kylejeong2 May 19, 2026
90be1be
fix: register browse-sh in per-source limits and --source choices
Kylejeong2 May 19, 2026
890b2eb
fix(browse-sh): fetch SKILL.md via /api/skills/{slug}+skillMdUrl
teknium1 May 19, 2026
3f55256
docs(skills): document browse.sh source (#28939)
teknium1 May 19, 2026
e13f242
fix(cli): preserve setup config picker writes
stepanov1975 May 8, 2026
6a159be
fix(runtime): treat 'ollama'/'vllm'/'llamacpp' aliases like 'custom' …
teknium1 May 19, 2026
784febe
perf(cli): defer openai._base_client import via sys.meta_path finder …
teknium1 May 19, 2026
544c31b
perf(agent-loop): cut 47% of per-conversation function calls via 3 ta…
teknium1 May 19, 2026
aa4e492
chore(deps): bump ws from 8.20.0 to 8.20.1 in /ui-tui
dependabot[bot] May 19, 2026
60bb98e
fix(install.ps1): pin PortableGit instead of hitting rate-limited Git…
teknium1 May 19, 2026
d9829ab
fix(model): match custom provider by active base url
helix4u May 19, 2026
28ab420
🐛 fix(cli): handle no-remote worktree cleanup
BlackishGreen33 Apr 17, 2026
c9d5ef2
🐛 fix(cli): handle missing remote tracking refs
BlackishGreen33 Apr 17, 2026
64a9a19
fix(xai-oauth): pin inference base_url to x.ai origin (#28952)
teknium1 May 19, 2026
34120a0
fix(kanban): worker-initiated block must not be auto-promoted (#28712)
xxxigm May 19, 2026
d35f893
test(kanban): cover sticky blocks for worker-initiated kanban_block (…
xxxigm May 19, 2026
448a3f9
fix(discord): transcribe native voice notes
helix4u May 19, 2026
93734c2
fix(dingtalk): transcribe native voice notes
teknium1 May 20, 2026
6cb9917
perf(compression): defer feasibility check to first compression attem…
teknium1 May 20, 2026
e2fd462
ci(tests): add pytest-timeout 60s hard cap to break suite-teardown de…
teknium1 May 20, 2026
a0c0312
feat(web): add xAI Web Search provider plugin
Jaaneek May 20, 2026
6bd4311
perf(terminal): adaptive subprocess poll cuts ~195ms off every tool c…
teknium1 May 20, 2026
43c7a1b
docs(web-search): document xAI Web Search backend (#29052)
teknium1 May 20, 2026
05f0264
fix(windows): drop duplicate creationflags kwarg in LocalEnvironment.…
jquesnelle May 20, 2026
c2a4782
fix(nix): refresh npm lockfile hashes
github-actions[bot] May 20, 2026
62713c8
Merge pull request #29059 from NousResearch/jq/fix-windows-creationfl…
jquesnelle May 20, 2026
0c6eb96
Merge pull request #28947 from NousResearch/dependabot/npm_and_yarn/u…
ethernet8023 May 20, 2026
340d2b6
docs(xai-oauth): note X Premium+ also unlocks Grok OAuth (#29055)
teknium1 May 20, 2026
697d38a
feat: auto-launch Chromium-family browser for CDP
H-Ali13381 May 8, 2026
6a6766f
test(cli): cover Brave binary CDP launch detection
H-Ali13381 May 19, 2026
5e74355
fix(lint): skip per-file shell linter when LSP will handle the file (…
OutThisLife May 20, 2026
2589656
fix(chat_completions): strip tool_name from messages for strict provi…
savanne-kham May 19, 2026
42c4288
fix(chat_completions): broaden tool_name strip docstring + AUTHOR_MAP
teknium1 May 20, 2026
edb2d91
feat(web): migrate dashboard checkboxes to @nous-research/ui + DS pol…
austinpickett May 20, 2026
94daea4
Merge remote-tracking branch 'origin/main' into autofix/29307-supply-…
hermes-agent May 20, 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
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,7 @@ BROWSER_INACTIVITY_TIMEOUT=120
# TELEGRAM_ALLOWED_USERS= # Comma-separated user IDs
# TELEGRAM_HOME_CHANNEL= # Default chat for cron delivery
# TELEGRAM_HOME_CHANNEL_NAME= # Display name for home channel
# TELEGRAM_CRON_THREAD_ID= # Forum topic ID for cron deliveries; overrides TELEGRAM_HOME_CHANNEL_THREAD_ID for cron so replies work in topic mode

# Webhook mode (optional — for cloud deployments like Fly.io/Railway)
# Default is long polling. Setting TELEGRAM_WEBHOOK_URL switches to webhook mode.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/contributor-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
check-attribution:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0 # Full history needed for git log

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/deploy-site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ jobs:
name: github-pages
url: ${{ steps.deploy.outputs.page_url }}
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 20
cache: npm
cache-dependency-path: website/package-lock.json

- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.11'

Expand Down
26 changes: 13 additions & 13 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
digest: ${{ steps.push.outputs.digest }}
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: recursive

Expand All @@ -65,7 +65,7 @@ jobs:
# to gha with a per-arch scope; the push step below reuses every
# layer from this build.
- name: Build image (amd64, smoke test)
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
file: Dockerfile
Expand All @@ -82,7 +82,7 @@ jobs:

- name: Log in to Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'release'
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
Expand All @@ -99,7 +99,7 @@ jobs:
- name: Push amd64 by digest
id: push
if: github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'release'
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
file: Dockerfile
Expand Down Expand Up @@ -142,7 +142,7 @@ jobs:
digest: ${{ steps.push.outputs.digest }}
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: recursive

Expand All @@ -153,7 +153,7 @@ jobs:
# to gha with a per-arch scope; the push step below reuses every
# layer from this build.
- name: Build image (arm64, smoke test)
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
file: Dockerfile
Expand All @@ -170,15 +170,15 @@ jobs:

- name: Log in to Docker Hub
if: github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'release'
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Push arm64 by digest
id: push
if: github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'release'
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
file: Dockerfile
Expand Down Expand Up @@ -232,7 +232,7 @@ jobs:
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Log in to Docker Hub
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down Expand Up @@ -324,15 +324,15 @@ jobs:
cancel-in-progress: false
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 1000

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Log in to Docker Hub
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down Expand Up @@ -445,15 +445,15 @@ jobs:
cancel-in-progress: false
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 1000

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Log in to Docker Hub
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docs-site-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
docs-site-checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
Expand All @@ -26,7 +26,7 @@ jobs:
run: npm ci
working-directory: website

- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.11'

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/history-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
check-common-ancestor:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0 # full history both sides for merge-base

Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
timeout-minutes: 10
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0 # need full history for merge-base + worktree

Expand Down Expand Up @@ -167,7 +167,7 @@ jobs:
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install uv
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
Expand All @@ -191,10 +191,10 @@ jobs:
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Set up Python
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v5
with:
python-version: "3.11"

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/nix-lockfile-fix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ jobs:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}

- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: main
token: ${{ steps.app-token.outputs.token }}
Expand Down Expand Up @@ -194,7 +194,7 @@ jobs:

Triggered by @${{ github.actor }} — [workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}).

- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: ${{ steps.resolve.outputs.owner }}/${{ steps.resolve.outputs.repo }}
ref: ${{ steps.resolve.outputs.ref }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
runs-on: ${{ matrix.os }}
timeout-minutes: 30
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/nix-setup
with:
cachix-auth-token: ${{ secrets.CACHIX_AUTH_TOKEN }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/osv-scanner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ permissions:
jobs:
scan:
name: Scan lockfiles
uses: google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@c51854704019a247608d928f370c98740469d4b5 # v2.3.5
uses: google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@9a498708959aeaef5ef730655706c5a1df1edbc2 # v2.3.8
with:
# Scan explicit lockfiles rather than recursing, so we only look at
# the three sources of truth and skip vendored / test / worktree dirs.
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/skills-index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ jobs:
if: github.repository == 'NousResearch/hermes-agent'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.11'

Expand Down Expand Up @@ -53,7 +53,7 @@ jobs:
# Only deploy on schedule or manual trigger (not on every push to the script)
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with:
Expand All @@ -66,7 +66,7 @@ jobs:
cache: npm
cache-dependency-path: website/package-lock.json

- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.11'

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/supply-chain-audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0

Expand Down Expand Up @@ -145,7 +145,7 @@ jobs:
if: contains(github.event.pull_request.changed_files_url, 'pyproject.toml') || true
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0

Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ concurrency:
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 20
timeout-minutes: 30
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y ripgrep
Expand All @@ -46,7 +46,7 @@ jobs:
- name: Run tests
run: |
source .venv/bin/activate
python -m pytest tests/ -q --ignore=tests/integration --ignore=tests/e2e --tb=short -n auto
python -m pytest tests/ -q --ignore=tests/integration --ignore=tests/e2e --tb=short -n auto --timeout=30 --timeout-method=signal
env:
# Ensure tests don't accidentally call real APIs
OPENROUTER_API_KEY: ""
Expand All @@ -58,7 +58,7 @@ jobs:
timeout-minutes: 15
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y ripgrep
Expand Down
9 changes: 5 additions & 4 deletions .github/workflows/upload_to_pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
name: Build distribution 📦
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
# On workflow_dispatch, check out the confirmed tag.
Expand All @@ -43,7 +43,7 @@ jobs:
fi

- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.13'

Expand Down Expand Up @@ -71,10 +71,11 @@ jobs:
test -f hermes_cli/web_dist/index.html || { echo "ERROR: web_dist not built"; exit 1; }
test -f hermes_cli/tui_dist/entry.js || { echo "ERROR: tui_dist not built"; exit 1; }

- name: Bundle install.sh into wheel
- name: Bundle install scripts into wheel
run: |
mkdir -p hermes_cli/scripts
cp scripts/install.sh hermes_cli/scripts/install.sh
cp scripts/install.ps1 hermes_cli/scripts/install.ps1

- name: Build wheel and sdist
run: uv build --sdist --wheel
Expand Down Expand Up @@ -144,7 +145,7 @@ jobs:

- name: Sign with Sigstore
if: env.skip_sign != 'true'
uses: sigstore/gh-action-sigstore-python@f514d46b907ebcd5bedc05145c03b69c1edd8b46 # v3.0.0
uses: sigstore/gh-action-sigstore-python@04cffa1d795717b140764e8b640de88853c92acc # v3.3.0
with:
inputs: >-
./dist/*.tar.gz
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/uv-lockfile-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ jobs:
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install uv
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5
Expand Down
Loading