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.1

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.1
File Size Uploaded
hermes_atm-1.6.1.tar.gz 21.2 kB Details

Built distribution (wheel)

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

Total release size: 35.7 kB

Release files / hermes_atm-1.6.1.tar.gz

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

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

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

Release history Release notifications | RSS feed

This release

1.6.1 This release

2 release files

1.6.0

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