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
-
Install a Hermes Agent version that exposes the public
GatewayRunner.inject_internal_messageandgateway.config.Platform.TELEGRAMhost seams. -
Configure the profile's launch agent with
ATM_HOME,ATM_IDENTITY,ATM_TEAM,ATM_CHAT_ID, andATM_WORKSPACE_ROOT. -
Install the immutable wheels into that launch agent's Python environment:
python -m pip install --upgrade atm-graft hermes-atm
-
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
-
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-toolsand itsatmtoolset for every configured Hermes platform inconfig.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>
-
Reset the profile gateway. The restart loads the generated hook and publishes the receiver record under
<workspace-root>/.atm/graft/<team>/<identity>.json. -
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)
| File | Size | Uploaded | |
|---|---|---|---|
| hermes_atm-1.6.1.tar.gz | 21.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|