Skip to main content

hcom

Hook your coding agents together

CI Latest release License: MIT

CLI tool that agents use to message, watch, and spawn each other across terminals.

Start an agent with hcom in front, then prompt normally.

Use it to coordinate multi-agent pipelines, run different AI CLIs as each other's subagents, or just to avoid copy-pasting.

Works with: claude, codex, opencode, copilot, qoder, grok, pi, omp, agy, cursor, kimi, kilo, gemini

https://github.com/user-attachments/assets/1ce23ed9-f529-4be0-8124-816aa4c2fd43

Install

python - macOS, Linux, Windows:

uv tool install hcom

homebrew - macOS, Linux:

brew install aannoo/hcom/hcom
Other install options
# macOS, Linux, Android
curl -fsSL https://github.com/aannoo/hcom/releases/latest/download/hcom-installer.sh | sh
# Windows
irm https://github.com/aannoo/hcom/releases/latest/download/hcom-installer.ps1 | iex
# Update any existing install
hcom update

Quickstart

Terminal 1:

hcom claude

Terminal 2:

hcom codex

Prompt:

ask the other agent their favorite cake
  • review what claude did and send it fixes

  • spawn 3x opencode, split work, collect results

  • fork yourself to investigate the bug and report back

  • when codex goes idle, send it the next task

Open the TUI dashboard:

hcom

What agents can do

  • Message each other in real time: mid-turn or wake immediately when idle

  • Observe each other: status, transcripts, file edits, live terminal screens, command history.

  • Subscribe and notify on status changes, file edits, collisions, specific events. React automatically.

  • Spawn, fork, resume, kill in any terminal emulator or headless.

How it works

Hooks record activity to a local SQLite database and deliver messages from it.

agent → hooks → db → hooks → other agent

Hooks activate only when an agent is launched with hcom in front. Normal usage is unaffected.

Any other AI tool without hooks can join by running hcom start

In any CLI tool, prompt:

> run this command: `hcom start`

Keep it listening for messages:

> stay connected to hcom
Any process can wake agents with hcom send

Send messages from any process/script:

hcom send -b @luna -- "wake up and do this task"

Chain with hcom events:

hcom events --idle luna --wait 600 && hcom send -b @nova -- "luna is done, review it"

Terminal

Every agent runs in a real terminal you can see, scroll, and interrupt. Any emulator works for spawning. kitty, wezterm, tmux, zellij, waveterm, cmux, herdr also support closing panes from hcom kill.

To configure a custom terminal open/close setup, tell an agent to run:

hcom config terminal --info

Cross-device

Connect agents across machines via MQTT relay.

hcom relay new               # get token
hcom relay connect <token>   # on each device
hcom relay status   # check connection
hcom relay off|on   # toggle

Treat the token like an API/SSH key. See SECURITY.md

Troubleshoot

hcom status   # diagnostics
hcom reset all   # clear and archive: database + hooks + config

Uninstall

Safely remove all hcom hooks:

hcom hooks remove

Then remove binary:

brew uninstall hcom
# or: uv tool uninstall hcom
# or: rm "$(which hcom)"

Reference

Tools

Supported tools

Tool Message delivery Connect
Claude Code automatic hcom claude
Gemini CLI automatic hcom gemini
Codex CLI automatic hcom codex
Antigravity CLI automatic hcom agy
OpenCode automatic hcom opencode
Kilo Code automatic hcom kilo
Pi automatic hcom pi
Oh My Pi automatic hcom omp
Cursor CLI automatic hcom cursor-agent
Kimi automatic hcom kimi
Copilot CLI automatic hcom copilot
Qoder CLI automatic hcom qoder
Grok Build automatic hcom grok
Anything else manual via hcom listen hcom start (run inside tool)
hcom r <session_id>   # Resume a session started outside hcom
hcom f <session_id>   # Fork a session in hcom

Claude Code headless and subagents

Detached background processes in print mode stay alive. Manage through the TUI.

hcom claude -p 'say hi in hcom'   # print mode (separate Agent SDK credits)
hcom claude --headless            # Run normal claude in background pty (works for any tool)

For subagents, run hcom claude, then prompt:

run 2x task tool and get them to talk to each other in hcom

CLI

CLI commands

What you might type from a shell. Agents run their own commands that they learn from the hcom CLI primer (~700 tokens) at launch. hcom <command> --help for full flags.

Spawn

hcom [N] claude|gemini|codex|agy|opencode|kilo|pi|omp|cursor-agent|kimi|copilot|qoder|grok   # launch N agents
hcom r <name|session_id>     # resume agent
hcom f <name|session_id>     # fork session
hcom kill <name|tag:T|all>   # kill + close terminal pane

hcom launch flags:

Flag Purpose
--tag <name> Group label — agents can be addressed as @tag
--terminal <preset> Where windows open: default (auto-detect), kitty, wezterm, tmux, cmux, iterm, etc…
--dir <path> Directory where the agent launches
--headless Run in background pty with no terminal window
--device <name> Spawn on a remote device (via relay)
--hcom-prompt <text> Initial user prompt
--hcom-system-prompt <text> Append to system prompt

Anything else is forwarded to the tool: --model sonnet, --yolo, etc.

Other commands

hcom                           # TUI dashboard
hcom send -b @luna -- hey      # one-off message to an agent
hcom list                      # show all active agents
hcom term [name]               # view/inject into an agent's PTY screen
hcom events --wait <filters>   # Block until match for scripting
hcom update                    # update hcom version

hcom run docs --cli for all commands.

Config

Configuration

Config lives in ~/.hcom/config.toml. Precedence: defaults < config.toml < env vars.

hcom config                           # show all values with sources
hcom config <key>                     # get
hcom config <key> <value>             # set
hcom config <key> --info              # detailed help for a key
hcom config -i <name> <key> <value>   # per-agent override at runtime

Keys

Key Purpose
tag Group label — launched agents become tag-name
hints Text appended to every message the agent receives
notes Text appended to bootstrap (one-time, at launch)
auto_approve Auto-approve safe hcom commands (send/list/events/…)
auto_subscribe Event subscription presets: collision, created, stopped, blocked
name_export Export instance name to a custom env var
title_mode Terminal/tab title behavior: combined (default), label, or off
terminal Where new agent windows open (hcom config terminal --info)
timeout Idle timeout for headless Claude (seconds)
subagent_timeout Keep-alive for Claude subagents (seconds)
claude_args / gemini_args / codex_args / opencode_args / kilo_args / pi_args / omp_args / cursor_args / kimi_args / copilot_args / qoder_args / grok_args Default args passed to the tool

Scope

hcom config tag mycrew                        # global
hcom config -i luna hints "respond in JSON"   # per-agent
HCOM_TAG=dev hcom 3 claude                    # per-launch env

Per-project isolation

export HCOM_DIR="$PWD/.hcom"   # isolate hcom state (db, logs) to this folder
rm -rf "$HCOM_DIR"             # clean up

Run hcom config <key> --info or hcom run docs --config for the full per-key reference.

Edit ~/.hcom/env to set external env vars passed to every launched agent.

Workflow Scripts

Multi-agent workflows

Bundled and user scripts (~/.hcom/scripts/) for multi-agent patterns:

hcom run                  # list available scripts
hcom run debate "topic"   # run one
hcom run docs             # tell agent to run this to create any new workflow

Included scripts

Tell agent to run them:

  • hcom run confess — An agent (or background clone) writes an honesty self-eval. A spawned calibrator reads the target's transcript independently. A judge compares both reports and sends back a verdict via hcom message.

  • hcom run debate — A judge spawns and sets up a debate with existing agents. It coordinates rounds in a shared thread where all agents see each other's arguments, with shared context of workspace files and transcripts.

  • hcom run fatcow — headless agent reads every file in a path, subscribes to file edit events to stay current, and answers other agents on demand.

  • hcom run onidle — waits for an agent to go idle, then types text into another agent (hcom run onidle luna nova 'luna is done, review it') or launches a new one with it as the prompt (hcom run onidle luna codex 'review what luna just did').

Custom scripts: drop *.sh or *.py into ~/.hcom/scripts/ — auto-discovered, override bundled scripts of the same name. Ask an agent to author one; hcom run docs --scripts is the authoring guide.

Contributing

Issues and PRs welcome. Build from source and dev setup: CONTRIBUTING.md

License

MIT

Metadata

Release files for hcom 0.7.29

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

Built distributions (wheels)

Table of built distributions (wheels) for hcom 0.7.29
File
hcom-0.7.29-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
hcom-0.7.29-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
hcom-0.7.29-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
hcom-0.7.29-py3-none-manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64 Details
hcom-0.7.29-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
hcom-0.7.29-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
hcom-0.7.29-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details
hcom-0.7.29-py3-none-android_24_arm64_v8a.whl Python 3 none Android API level 24+ ARM64 v8a Details

Total release size: 54.7 MB

Release files / hcom-0.7.29-py3-none-win_amd64.whl

Download URL hcom-0.7.29-py3-none-win_amd64.whl
Size 7.7 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
0f2dd9ee7973255c76440df21d2c54053e70568fa36ae8a87a17239cf9800310
BLAKE2b-256 checksum
How to use checksums
ccfedb999adc6ea88841aa040c9e770355eabdce3fc7ee383786ef6d78ba81e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / hcom-0.7.29-py3-none-musllinux_1_2_x86_64.whl

Download URL hcom-0.7.29-py3-none-musllinux_1_2_x86_64.whl
Size 7.2 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
8a7f8c50d3c294a88434b877e946206ba72b7320798a81d02252491712d90e7b
BLAKE2b-256 checksum
How to use checksums
14a62aacb29c7299194b521695ad4317b68c54a31f7476b6b6acb4f1468731d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / hcom-0.7.29-py3-none-musllinux_1_2_aarch64.whl

Download URL hcom-0.7.29-py3-none-musllinux_1_2_aarch64.whl
Size 6.6 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
2fe5d01ff53e97cf3d1b56bcea3bb9cae5cd800078a6ee31e222514f0046b0cf
BLAKE2b-256 checksum
How to use checksums
19f963c5ff4ecbcc9ae23c0e7e8635a4ef27780179dc1f3a122e341d6bfd0bfe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / hcom-0.7.29-py3-none-manylinux_2_28_aarch64.whl

Download URL hcom-0.7.29-py3-none-manylinux_2_28_aarch64.whl
Size 6.4 MB
Tags Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
d7ff3cfe960a4f8c95695fa5668b1ab5dca5b7317851d9d47c0f2f1c23994e16
BLAKE2b-256 checksum
How to use checksums
a8a5907882685dc37f9076ecd47928e7830472e65b32914cb37ba0c17e6a7b00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / hcom-0.7.29-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL hcom-0.7.29-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 7.0 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
1114ee37a6d4faf944f95553b413306d03746ae25b64281f8a5c165acd63d46b
BLAKE2b-256 checksum
How to use checksums
357ae5cc248efc24a5d8ef6545aca719efbb8a29fe868d7eaa2c29647415e5d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / hcom-0.7.29-py3-none-macosx_11_0_arm64.whl

Download URL hcom-0.7.29-py3-none-macosx_11_0_arm64.whl
Size 6.4 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5b3f5bab58386508e7f954ed32c1ae232cee6a969201dcd0e145b5f041492da2
BLAKE2b-256 checksum
How to use checksums
36385388c900a275eb7c87f4250e074068164b49585a550200d20db71a33694a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / hcom-0.7.29-py3-none-macosx_10_12_x86_64.whl

Download URL hcom-0.7.29-py3-none-macosx_10_12_x86_64.whl
Size 6.9 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
d39645621b5d24b9c90489e7f1820c4c24a09045e4994a5956fa87d76eedbedb
BLAKE2b-256 checksum
How to use checksums
227c80192c75cc9a4c43de0ae08c61559c328ec49dc151f41a8906d30aeb6d24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / hcom-0.7.29-py3-none-android_24_arm64_v8a.whl

Download URL hcom-0.7.29-py3-none-android_24_arm64_v8a.whl
Size 6.6 MB
Tags Android API level 24+ ARM64 v8a Python 3
SHA-256 checksum
How to use checksums
76eb616c0053ca3980b4c9cfe3dd69661684a396d1f6051668756a8d2afb80b2
BLAKE2b-256 checksum
How to use checksums
a9dbb69f3424cd525a5bf27ebeccf36cdf9926fcbefa83eb88f6ca03a67b5404
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release history Release notifications | RSS feed

0.7.30

8 release files

This release

0.7.29 This release

8 release files

0.7.26

8 release files

0.7.24

8 release files

0.7.22

6 release files

0.7.19

6 release files

0.7.18

6 release files

0.7.17

6 release files

0.7.13

6 release files

0.7.12

6 release files

0.7.11

6 release files

0.7.9

6 release files

0.7.8

6 release files

0.7.7

6 release files

0.7.6

6 release files

0.7.5

6 release files

0.7.4

6 release files

0.7.3

6 release files

0.7.2

6 release files

0.7.1

6 release files

0.7.0

6 release files

0.6.22

6 release files

0.6.21

6 release files

0.6.20

6 release files

0.6.19

4 release files

0.6.18

4 release files

0.6.13

2 release files

0.6.12

2 release files

0.6.11

1 release file

0.6.10

2 release files

0.6.9

2 release files

0.6.8

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

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