Skip to main content

hermes-atm installation

hermes-atm is the package-owned Hermes gateway hook for ATM graft nudges. It installs one receiver for one Hermes profile and injects delivered nudges through the public GatewayRunner.inject_internal_message(..., mode="queue"|"steer") API according to the additive ATM nudge kind. It does not open an ATM database, select a Hermes adapter, or require any post-install source edits.

Required settings

Collect these values before installation. Keep the chat identifier in local profile configuration or the launch agent; do not put it in source, commits, or shared install notes.

Setting Purpose Must match
profile Hermes profile to receive nudges Gateway launch profile
profile_home Directory containing that profile's hooks/ directory ATM roster home_dir
identity ATM agent/member name ATM roster member name
team ATM team containing the member ATM roster team
chat_id Hermes session chat binding Gateway's configured session
atm_home ATM durable home ATM_HOME for the profile
workspace_root Canonical graft endpoint root ATM roster workspace_root exactly
platform Hermes gateway platform telegram by default; api_server for headless gateways
launch_agent_plist Gateway LaunchAgent plist Its first ProgramArguments entry must be the Python running this installer

The workspace_root equality is mandatory. ATM post-send delivery resolves a recipient endpoint from roster metadata. If the receiver is installed beneath one root while the roster names another, atm send can persist a message but the nudge will fail closed because it cannot find or contact the receiver.

Clean installation sequence

  1. Install a Hermes Agent version that exposes the public GatewayRunner.inject_internal_message and gateway.config.Platform.TELEGRAM host seams.

  2. Configure the profile's launch agent with ATM_HOME, ATM_IDENTITY, ATM_TEAM, ATM_CHAT_ID, and ATM_WORKSPACE_ROOT.

  3. Install the immutable wheels into that launch agent's Python environment:

    python -m pip install --upgrade atm-graft hermes-atm
    
  4. Publish the same profile and graft root to ATM's roster. Run this using the profile's ATM identity and team:

    atm teams update-member <team> <identity> \
      --home-dir <profile-home> \
      --workspace-root <workspace-root> \
      --harness hermes
    
  5. Run the package installer with the launch agent's Python. The command validates the public Hermes capability and interpreter match before it writes the standard generated hook and the package-owned native-tools plugin. It also declaratively enables hermes-atm-native-tools and its atm toolset for every configured Hermes platform in config.yaml; do not make those configuration edits by hand:

    python -m hermes_atm install \
      --profile <profile> \
      --profile-home <profile-home> \
      --identity <identity> \
      --team <team> \
      --chat-id "$ATM_CHAT_ID" \
      --atm-home "$ATM_HOME" \
      --workspace-root "$ATM_WORKSPACE_ROOT" \
      --platform <telegram|api_server> \
      --launch-agent-plist <gateway-launch-agent.plist>
    
  6. Reset the profile gateway. The restart loads the generated hook and publishes the receiver record under <workspace-root>/.atm/graft/<team>/<identity>.json.

  7. From the same profile identity, send a localhost message to the profile and require an autonomous reply. Only that reply proves the full path: ATM send, receiver, Hermes queue injection, and agent context processing.

Native ATM tools

The same installer registers exactly four native Hermes tools through the public plugin API: atm_send, atm_read, atm_list, and atm_ack. They use the typed atm-graft client and the installed profile's identity, team, and workspace; tool arguments cannot override those profile settings. atm_read marks the selected message read without changing acknowledgement state by default; pass peek=true to inspect without marking it, atm_list returns bounded metadata, and atm_ack acknowledges one pending message through the canonical send path. Successful tool results are the same canonical JSON outcome objects emitted by atm --json; the parity regression test covers list, read, send, and acknowledgement results. Administrative and advanced CLI operations remain atm CLI operations.

List rows expose row.from. The older row.from_agent alias remains available for compatibility and emits one DeprecationWarning per process.

For the reproducible native-tool proof, see NATIVE_TOOLS_PROOF.md. The implementation checklist and validation record are in TASKLIST.md.

Do not edit hooks/hermes-atm/handler.py, HOOK.yaml, or config.json after installation. To change package behavior, publish a new wheel, reinstall it, rerun python -m hermes_atm install, reset the gateway, and repeat the proof.

Release files for hermes-atm 1.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hermes-atm 1.6.0
File Size Uploaded
hermes_atm-1.6.0.tar.gz 21.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hermes-atm 1.6.0
File Interpreter ABI Platform
hermes_atm-1.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 35.8 kB

Release files / hermes_atm-1.6.0.tar.gz

Download URL hermes_atm-1.6.0.tar.gz
Size 21.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4029b2fe5f37f0dfdf13bc513604085a1e8d97b0e8c2fcc9b9471d68e5109909
BLAKE2b-256 checksum
How to use checksums
d2b8f070b268b4b39ad978bb7b60ec1ad6eb333c193f954ce448be56ca028f57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.4

Release files / hermes_atm-1.6.0-py3-none-any.whl

Download URL hermes_atm-1.6.0-py3-none-any.whl
Size 14.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f4d9f0b68e0a419acfa2af004acea98325d13c3a8dc0fecaf06aacbcee94cfba
BLAKE2b-256 checksum
How to use checksums
4e7f213b8d9f6162519cf64d99b1291272b2ed7f4ddaaee1761789157ee1b72c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.4

Release history Release notifications | RSS feed

1.6.1

2 release files

This release

1.6.0 This release

2 release files

1.5.0

2 release files

1.4.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page