hermes-agent/tools
Teknium 6b626f9d41 feat(gateway): add X Chat (encrypted X DMs) platform plugin
Connects the Hermes gateway to X's end-to-end encrypted direct messages
via the official X Chat API. All plaintext stays local: inbound
encoded_event blobs are decrypted with the Chat XDK (chatxdk) and
outbound replies are encrypted + signed before they reach X.

- plugins/platforms/xchat/: adapter (polling inbound, encrypted send,
  typing, group mention gating, allowlist/pairing, cron standalone
  sender), async httpx API client with OAuth2 refresh-token rotation,
  Chat XDK crypto wrapper, and a resume-safe 'hermes xchat setup'
  CLI (token -> user id -> keygen -> rate-limit-aware key registration)
- tools/lazy_deps.py + pyproject.toml: chatxdk lazy-install entry
  (platform.xchat) + xchat extra for packagers
- hermes_cli/main.py: resolve a deferred bundled platform's CLI
  subcommand when invoked as 'hermes <platform>' — also fixes
  'hermes photon' being unreachable since the lazy-load perf change
  (#54448)
- docs: messaging guide, env-var reference, sidebar, platform tables
- tests: 24 offline unit tests (dispatch, dedup, backlog seeding,
  KeyChange handling, mention gating, registry parity, crypto wrapper)
2026-08-12 16:24:23 -07:00
..
computer_use feat(vision): disclose downscale factor and crop offset for coordinate mapping 2026-08-10 01:23:38 -07:00
environments fix(windows): SSH ControlMaster gating + stop hijacking the user's python (#84452) 2026-08-12 02:56:33 -07:00
neutts_samples
wakewords
__init__.py
ansi_strip.py
approval.py fix(security): approval system covers Windows destructive commands and paths (#84428) 2026-08-12 02:43:23 -07:00
async_delegation.py fix(gateway,relay): stop frozen-preview finals and dropped idle-session delegation callbacks (#82592) 2026-08-11 09:56:13 +10:00
audio_container.py
binary_extensions.py
blueprints.py fix(cron): surface initial scheduler registration failures 2026-08-07 17:45:06 +05:30
browser_camofox.py
browser_camofox_state.py
browser_cdp_tool.py
browser_dialog_tool.py
browser_supervisor.py
browser_tool.py fix(browser): apply safety checks to browser_exec URLs 2026-08-10 10:45:44 -07:00
browser_use_cli.py Disable Browser Use telemetry by default 2026-08-12 16:10:25 -07:00
budget_config.py
checkpoint_manager.py
clarify_gateway.py
clarify_tool.py
close_terminal_tool.py fix(agent): the desktop's tools reach it on remote and cloud backends too 2026-08-06 19:35:47 -06:00
code_execution_tool.py refactor(tools): unify probe caches and dedupe the exclusion log 2026-08-12 17:42:34 +05:30
computer_use_tool.py
credential_files.py fix(docker): close the cold-container and multi-backend gaps in attachment delivery 2026-08-08 05:44:18 -07:00
cronjob_tools.py fix: use is_job_runnable/effective_job_state in remaining pause-check sites 2026-08-08 13:48:00 +05:30
daemon_pool.py
debug_helpers.py
delegate_tool.py fix(docker): per-session container isolation and session-scoped workspace mounts 2026-08-09 14:35:02 -07:00
delegation_live_log.py
delegation_output_schema.py feat(delegation): optional structured-output schema on delegate_task 2026-08-07 09:07:42 -07:00
desktop_ui.py
discord_tool.py
env_passthrough.py
env_probe.py
fal_common.py
feishu_doc_tool.py
feishu_drive_tool.py
file_operations.py fix(search): keep grep fallback root searchable 2026-08-13 01:34:00 +05:30
file_state.py
file_tools.py fix(file-safety): approval-gate ~/.ssh/config writes instead of hard-denying (#84663) 2026-08-12 11:04:45 -07:00
flux3_video_tool.py
focus_pane_tool.py fix(agent): the desktop's tools reach it on remote and cloud backends too 2026-08-06 19:35:47 -06:00
fuzzy_match.py refactor(tools): extract IDENTICAL_STRINGS_ERROR constant 2026-08-12 15:21:47 +05:30
homeassistant_tool.py
hook_output_spill.py
image_generation_tool.py Add more FAL models to nous portal (#82019) 2026-08-08 19:59:12 -04:00
image_source.py fix(image_gen): confine generation source images to the terminal backend 2026-08-08 04:19:38 -07:00
interrupt.py
kanban_tools.py fix(kanban): guard request_review against live-claim theft 2026-08-10 12:43:46 -07:00
lazy_deps.py feat(gateway): add X Chat (encrypted X DMs) platform plugin 2026-08-12 16:24:23 -07:00
managed_tool_gateway.py fix(gateway): read auth.json as UTF-8 in _read_nous_provider_state 2026-08-08 12:32:23 -07:00
mcp_dashboard_oauth.py
mcp_oauth.py
mcp_oauth_manager.py
mcp_schema_cache.py
mcp_stdio_watchdog.py
mcp_tool.py fix: Windows MCP PATHEXT resolution + python3 -> python in cross-platform skills (#84429) 2026-08-12 02:43:28 -07:00
memory_tool.py fix: finish the missing-encoding sweep — BOM-tolerant reads for user-edited stores 2026-08-08 12:32:23 -07:00
microsoft_graph_auth.py
microsoft_graph_client.py
neutts_synth.py
open_preview_tool.py fix(agent): the desktop's tools reach it on remote and cloud backends too 2026-08-06 19:35:47 -06:00
openrouter_client.py
osv_check.py
patch_parser.py fix(tools): skip degenerate identical hunks in V4A validation 2026-08-12 15:21:47 +05:30
path_security.py
process_registry.py fix: warn agents off driving interactive console TUIs via pty on Windows (#84364) 2026-08-12 01:15:17 -07:00
project_tools.py
react_to_message_tool.py fix(agent): the desktop's tools reach it on remote and cloud backends too 2026-08-06 19:35:47 -06:00
read_extract.py feat(read): jq retrieval hint in notebook output truncation marker 2026-08-10 01:28:57 -07:00
read_preview_tool.py fix(agent): the desktop's tools reach it on remote and cloud backends too 2026-08-06 19:35:47 -06:00
read_terminal_tool.py fix(agent): the desktop's tools reach it on remote and cloud backends too 2026-08-06 19:35:47 -06:00
read_window_tool.py fix(desktop): say why read_window_below cannot see the windows 2026-08-08 22:17:38 -05:00
registry.py fix(tools): bound the exception text dispatch writes into its own log line 2026-08-08 14:56:38 +05:30
schema_sanitizer.py feat(mcp): collapse const-only anyOf/oneOf unions to property enums 2026-08-07 08:58:25 -07:00
self_repo_guard.py fix(tools): keep non-bash -c invocations covered by the shell guard 2026-08-08 14:56:38 +05:30
send_message_tool.py
session_search_tool.py
shell_heredoc.py perf(tools): linear-time masking rebuild + last-opener early exit 2026-08-12 13:57:59 +05:30
skill_linter.py fix: suppress windows-footgun false positives in linter pattern list 2026-08-08 11:12:27 -07:00
skill_manager_tool.py fix(tools): mirror must-differ guidance in skill_manage new_string schema 2026-08-12 15:21:47 +05:30
skill_provenance.py
skill_usage.py
skills_ast_audit.py
skills_guard.py fix: Windows agent-loop papercuts — path splitting, hashing, autocomplete, screenshots, OS detection (#84419) 2026-08-12 01:45:18 -07:00
skills_hub.py fix: Windows agent-loop papercuts — path splitting, hashing, autocomplete, screenshots, OS detection (#84419) 2026-08-12 01:45:18 -07:00
skills_sync.py
skills_sync_client.py
skills_tool.py fix: finish the missing-encoding sweep — BOM-tolerant reads for user-edited stores 2026-08-08 12:32:23 -07:00
slash_confirm.py
terminal_hints.py
terminal_tool.py fix(tools): mirror misplaced-arg recovery on the terminal side 2026-08-12 15:36:23 +05:30
thread_context.py
threat_patterns.py
tirith_security.py
todo_tool.py
tool_backend_helpers.py
tool_output_limits.py
tool_result_storage.py
tool_search.py
transcription_tools.py fix(stt): close idle-unload races — strong model ref, single long-lived watcher 2026-08-07 19:26:12 +05:30
tts_streaming.py
tts_text_normalize.py
tts_tool.py fix(file-safety): approval-gate ~/.ssh/config writes instead of hard-denying (#84663) 2026-08-12 11:04:45 -07:00
url_safety.py
video_generation_tool.py Add more FAL models to nous portal (#82019) 2026-08-08 19:59:12 -04:00
vision_tools.py perf(cli): sub-400ms warm startup — probe-mode check_fns, lazy MCP SDK, banner snapshot, parallel worktree add 2026-08-10 10:40:19 -07:00
voice_mode.py fix(voice): early-exit sliding window on match, clear barge phase in finally, fix test helper 2026-08-07 14:38:02 +05:30
wake_word.py fix(wake-word): capture at native input rate 2026-08-08 13:49:24 +05:30
web_tools.py
website_policy.py
working_diff.py fix(tools): decode git output as UTF-8 in working_diff on Windows 2026-08-08 12:34:46 -07:00
write_approval.py
x_search_tool.py
xai_http.py fix(auth): cover remaining auth.json readers across modules 2026-08-08 12:32:23 -07:00
xai_video_tools.py
yuanbao_tools.py