Launch multiple Claude Code instances (terminal, headless, or subagents) that communicate together in real time via hooks.
Project description
hcom — Claude Hook Comms
Launch multiple Claude Code instances (terminal, headless, or subagents) that communicate together in real time via hooks.
Start
Run without installing
uvx hcom 2
Run with installing
pip install hcom
hcom # UI
claude 'run hcom start' # toggle hcom for any claude code
What it does
Adds hooks that enable instant messaging between claude code instances. Launch multiple terminals/headless/subagents that remain active, waiting to respond to messages. Normal claude remains unaffected by hcom, but can opt-in (hcom start) or opt-out (hcom stop) at runtime. Safely remove hooks with hcom reset. Works on Mac, Linux, Windows, Android.
Commands
| Command | Description |
|---|---|
hcom |
TUI dashboard |
hcom <n> |
Launch n instances |
hcom start |
Enable participation |
hcom stop |
Disable participation |
Features
communicate with task tool subagents
claude 'use 3x task tool with task: say hi in hcom chat'
# Each subagent gets unique identity and can communicate with siblings
# Parent resumes with full conversation history
persistent headless instances
hcom 1 claude -p # launch with default 30min timeout
hcom # See what it's doing from dashboard
hcom stop # Let it die earlier than timeout
.claude/agents in interactive claude window
HCOM_AGENT=code-writer hcom 1
HCOM_AGENT=reviewer hcom 1
@-mention: groups and direct
HCOM_TAG=cooltag hcom 2
hcom send '@cooltag hi, you both are cool'
hcom send '@john you are cooler'
toggle inside claude code
claude # Normal Claude Code
'run hcom start' # Opt-in to receive messages
'run hcom stop' # Opt-out, continue as normal claude code
async push notifications from anywhere
# Any process can message claude instances with custom identity
hcom send --from background-worker 'i finished, now you go do stuff'
All commands
Usage: hcom # UI
[ENV_VARS] hcom <COUNT> [claude <ARGS>...]
hcom watch [--type TYPE] [--instance NAME] [--last N] [--wait SEC]
hcom list [--json] [--verbose]
hcom send "message"
hcom stop [alias|all]
hcom start [alias]
hcom reset [logs|hooks|config]
Launch Examples:
hcom 3 Open 3 terminals with claude connected to hcom
hcom 3 claude -p + Headless
HCOM_TAG=api hcom 3 claude -p + @-mention group tag
claude 'run hcom start' claude code with prompt will also work
Commands:
watch Query recent events (JSON per line)
--type TYPE Filter by event type
--instance NAME Filter by instance
--last N Limit to last N events (default 20)
--wait SEC Block until a matching event arrives
list Show instance status/metadata
--json Emit JSON (one instance per line)
--verbose Include session_id and directory
send "msg" Send message to all instances
send "@alias msg" Send to specific instance/group
--from <name> Custom external identity
stop Stop current instance (from inside Claude)
stop <alias> Stop specific instance
stop all Stop all instances
start Start current instance (from inside Claude)
start <alias> Start specific instance
reset Stop all + archive logs + remove hooks + clear config
reset logs Clear + archive conversation
reset hooks Safely remove hcom hooks from claude settings.json
reset config Clear + archive config.env
Environment Variables:
HCOM_TAG=name Group tag (creates name-* instances)
HCOM_AGENT=type Agent type (comma-separated for multiple)
HCOM_TERMINAL=mode Terminal: new|here|print|"custom {script}"
HCOM_HINTS=text Text appended to all messages received by instance
HCOM_TIMEOUT=secs Time until disconnected from hcom chat (default 1800s / 30mins)
HCOM_SUBAGENT_TIMEOUT=secs Subagent idle timeout (default 30s)
HCOM_CLAUDE_ARGS=args Claude CLI defaults (e.g., '-p --model opus "hello!"')
ANTHROPIC_MODEL=opus # Any env var passed through to Claude Code
Persist Env Vars in `~/.hcom/config.env`
Requirements
- Python 3.10+
- Claude Code
Terminal Options
Default Terminals
- macOS: Terminal.app
- Linux: gnome-terminal, konsole, or xterm
- Windows (native) & WSL: Windows Terminal / Git Bash
- Android: Termux
Terminal Mode
HCOM_TERMINAL=new- New terminal windows (default)HCOM_TERMINAL=here- Current terminal windowHCOM_TERMINAL="open -a iTerm {script}"- Custom terminal
Custom Terminal
Your custom command just needs to:
- Accept
{script}as a placeholder that will be replaced with a script path - Execute that script with bash
Custom Terminal Examples
ttab (new tab instead of new window in Terminal.app)
HCOM_TERMINAL="ttab {script}"
wttab (new tab in Windows Terminal)
HCOM_TERMINAL="wttab {script}"
More
# Wave Terminal Mac/Linux/Windows. From within Wave Terminal:
HCOM_TERMINAL="wsh run -- bash {script}"
# Alacritty macOS:
HCOM_TERMINAL="open -n -a Alacritty.app --args -e bash {script}"
# Alacritty Linux:
HCOM_TERMINAL="alacritty -e bash {script}"
# Kitty macOS:
HCOM_TERMINAL="open -n -a kitty.app --args {script}"
# Kitty Linux
HCOM_TERMINAL="kitty {script}"
# tmux with split panes and 3 claude instances in hcom chat
HCOM_TERMINAL="tmux split-window -h {script}" hcom 3
# WezTerm Linux/Windows
HCOM_TERMINAL="wezterm start -- bash {script}"
# Tabs from within WezTerm
HCOM_TERMINAL="wezterm cli spawn -- bash {script}"
# WezTerm macOS:
HCOM_TERMINAL="open -n -a WezTerm.app --args start -- bash {script}"
# Tabs from within WezTerm macOS
HCOM_TERMINAL="/Applications/WezTerm.app/Contents/MacOS/wezterm cli spawn -- bash {script}"
Android (Termux)
#1. Install:
Termux from F-Droid (not Google Play)
#2. Setup:
pkg install python nodejs
npm install -g @anthropic-ai/claude-cli
pip install hcom
#3. Enable:
echo "allow-external-apps=true" >> ~/.termux/termux.properties
termux-reload-settings
#4. Enable:
"Display over other apps" permission for visible terminals
#5. Run:
`hcom 2`
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hcom-0.6.2.tar.gz.
File metadata
- Download URL: hcom-0.6.2.tar.gz
- Upload date:
- Size: 114.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4bd5b9b7c68e442b8edb2535afd9a972751412621e86a4d7dd1a5f7478de38d1
|
|
| MD5 |
87269e0f6061a69f014e3c3862510aa2
|
|
| BLAKE2b-256 |
ab45d7a9910aced3fb876c5d8b66b7109cde3701c3476d49ac2a16bf491713ad
|
File details
Details for the file hcom-0.6.2-py3-none-any.whl.
File metadata
- Download URL: hcom-0.6.2-py3-none-any.whl
- Upload date:
- Size: 124.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82c8c1a3be2ec775a7ebb266a25e1a2216296ef75ca22b785e6edbbcc2dfdd28
|
|
| MD5 |
7dd99c8585b0955d7cf141879018e51f
|
|
| BLAKE2b-256 |
1860d1680e9d58399aba1d1e001cd874e0d8f37f22ee43dcb2a61ab6e8049787
|