hermes-agent/website/docs/guides
Teknium 47d5177a7d
fix(plugins): thread-safe lazy-singleton helpers; fix honcho TOCTOU (#24759) (#42150)
* fix(plugins): add thread-safe lazy-singleton helpers, fix honcho TOCTOU (#24759)

get_honcho_client() and fal's _load_fal_client() used unlocked
check-then-init: racing threads both ran the expensive build and the
loser's client (open connection) leaked.

Rather than one-off locks, add plugins/plugin_utils.py with two
reusable primitives every plugin author can drop in:
- lazy_singleton: decorator for zero-arg accessors
- SingletonSlot: manual slot for config-keyed accessors (first wins)

Both use double-checked locking; factory runs at most once; failed
builds aren't cached. honcho is the reference consumer; fal's sibling
TOCTOU gets a matching double-checked lock. Plugin dev guide documents
the pattern so future plugins don't reintroduce the race.

Closes #24759

* test(honcho): update reset test for SingletonSlot internals

test_reset_clears_singleton poked the removed _honcho_client module
global directly. Assert through the slot's public peek() surface
instead, matching the #24759 refactor.
2026-06-08 09:35:22 -07:00
..
_category_.json docs: add Guides & Tutorials section, restructure sidebar 2026-03-08 19:37:34 -07:00
automate-with-cron.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
automation-templates.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
aws-bedrock.md docs(bedrock): fix IAM permissions, add quickstart entry, add fallback provider, fix deployment section 2026-05-05 13:41:14 -07:00
azure-foundry.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
build-a-hermes-plugin.md fix(plugins): thread-safe lazy-singleton helpers; fix honcho TOCTOU (#24759) (#42150) 2026-06-08 09:35:22 -07:00
cron-script-only.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
cron-troubleshooting.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
daily-briefing-bot.md docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782) 2026-05-28 02:41:36 -07:00
delegation-patterns.md feat(delegation): uncap max_spawn_depth (floor 1, no ceiling) (#39772) 2026-06-05 04:46:02 -07:00
github-pr-review-agent.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
google-gemini.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
local-llm-on-mac.md fix(context): align guidance with 64k minimum 2026-05-24 23:23:12 -07:00
local-ollama-setup.md fix(context): align guidance with 64k minimum 2026-05-24 23:23:12 -07:00
microsoft-graph-app-registration.md docs(msgraph): add Azure app registration walkthrough + env var reference 2026-05-08 09:27:26 -07:00
migrate-from-openclaw.md docs: replace invalid 'hermes config get <key>' with 'hermes config show' 2026-05-29 12:06:22 -07:00
minimax-oauth.md docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782) 2026-05-28 02:41:36 -07:00
oauth-over-ssh.md docs(xai-oauth): note bare-code manual-paste from #33880 2026-05-29 00:57:13 -07:00
operate-teams-meeting-pipeline.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
pipe-script-output.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
python-library.md docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782) 2026-05-28 02:41:36 -07:00
run-hermes-with-nous-portal.md fix(cli): harden hermes portal SystemExit handling + finish model-pick doc sweep 2026-06-04 02:33:33 +05:30
run-nemotron-3-ultra-free.md fix(docs): update all install instructions everywhere 2026-06-04 21:07:45 -04:00
team-telegram-assistant.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
tips.md docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782) 2026-05-28 02:41:36 -07:00
use-mcp-with-hermes.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
use-soul-with-hermes.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
use-voice-mode-with-hermes.md docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782) 2026-05-28 02:41:36 -07:00
webhook-github-pr-review.md fix(website): cross-locale doc links + drop empty ko locale (#31895) 2026-05-24 23:16:20 -07:00
work-with-skills.md docs: replace invalid 'hermes config get <key>' with 'hermes config show' 2026-05-29 12:06:22 -07:00
xai-grok-oauth.md fix(xai): route video models by modality 2026-06-01 19:00:30 -07:00