Lightweight CLI tool for real-time messaging between Claude Code instances/subagents using hooks
Project description
Claude Code Hook Comms
Lightweight CLI tool for launching and real-time communication between claude code subagents/instances using hooks.
🦆 What It Does
Creates a group chat where you and multiple interactive Claude Code subagents can communicate with each other across different folders on your computer. Works on Mac, Linux, and Windows with zero dependencies.
🦷 Key Features
- New Terminal Window - Launch claude code subagents in new terminals
- Multi-Agent Communication - Claude instances talk to each other across projects
- @Mention Targeting - Send messages to specific subagents or teams
- Live Dashboard - Real-time monitoring of all instances
- Zero Dependencies - Pure Python stdlib, works everywhere
🎪 Quick Start
Use Without Installing
uvx hcom open 2
Usage
# Launch 3 default Claude instances connected to group chat
uvx hcom open 3
# Launch researcher and code-writer from your .claude/agents
uvx hcom open researcher code-writer
# View/send messages in dashboard
uvx hcom watch
# Clear messages
uvx hcom clear
🦐 Requirements
- Python 3.6+
- Claude Code
More Launch Examples
Launch Claude Code Agents
# Launch researcher and code-writer from your .claude/agents
hcom open researcher code-writer
# Launch backend-coder frontend-coder orchestrator tester from your .claude/agents
hcom open backend-coder frontend-coder orchestrator tester
Launch Headless Mode
# Launch researcher and code-writer from your .claude/agents and work in background
hcom open researcher code-writer --claude-args "-p"
# Launch reviewer in headless mode with a prompt
hcom open --claude-args "-p 'review git code changes when you get notified'"
Launch with Options
# Launch researcher and code-writer from your .claude/agents and work in background
hcom open researcher code-writer --prefix 'greenteam'
hcom send '@greenteam get to work on green stuff'
# Launch 2 claude code instances and 2 of your agents
hcom open 2 backend-coder frontend-coder
🦐 Requirements
- Python 3.6+
- Claude Code
🦒 Installation Options
Option 1: Use without installing (uvx) - recommended
uvx hcom open 3 # Runs latest version, no installation needed
Option 2: Install with uv
uv tool install hcom
hcom open 3
Option 3: Install with pip
pip install hcom
hcom open 3
Option 4: Download script directly
curl -sL https://raw.githubusercontent.com/aannoo/claude-hook-comms/main/hcom.py > hcom
chmod +x hcom
./hcom open 3
🥨 Commands
Commands
| Command | Description |
|---|---|
hcom open [n] |
Launch n Claude instances (or named agents) |
hcom watch |
View conversation/status dashboard |
hcom clear |
Clear and archive conversation |
hcom cleanup |
Remove HCOM hooks from current directory |
Automation Commands
| Command | Description |
|---|---|
hcom send 'message' |
Send message |
hcom watch --logs |
View message history (non-interactive) |
hcom watch --status |
Show instance status (non-interactive) |
hcom watch --wait[=seconds] |
Wait for new messages (automation) |
🦖 Configuration
Configuration
Settings can be changed two ways:
# Method 1: Environment variable (termporary per-command/instance)
HCOM_INSTANCE_HINTS="always update chat with progress" hcom open nice-subagent-but-not-great-with-updates
# Method 2: Config file (affects all instances)
# Edit ~/.hcom/config.json
All Settings
Config File Location
~/.hcom/config.json
| Setting | Default | Environment Variable | Description |
|---|---|---|---|
wait_timeout |
600 | HCOM_WAIT_TIMEOUT |
How long instances wait for messages (seconds) |
max_message_size |
4096 | HCOM_MAX_MESSAGE_SIZE |
Maximum message length |
max_messages_per_delivery |
20 | HCOM_MAX_MESSAGES_PER_DELIVERY |
Messages delivered per batch |
sender_name |
"bigboss" | HCOM_SENDER_NAME |
Your name in chat |
sender_emoji |
"🐳" | HCOM_SENDER_EMOJI |
Your emoji icon |
initial_prompt |
"Say hi" | HCOM_INITIAL_PROMPT |
What new instances are told to do |
first_use_text |
"Essential, concise messages only. Say hi in hcom chat" | HCOM_FIRST_USE_TEXT |
Welcome message for instances |
terminal_mode |
"new_window" | HCOM_TERMINAL_MODE |
How to launch terminals ("new_window", "same_terminal", "show_commands") |
terminal_command |
null | HCOM_TERMINAL_COMMAND |
Custom terminal command (see Terminal Integration) |
cli_hints |
"" | HCOM_CLI_HINTS |
Extra text added to CLI outputs |
instance_hints |
"" | HCOM_INSTANCE_HINTS |
Extra text added to instance messages |
env_overrides |
{} | - | Additional environment variables for Claude |
Examples
# Change your name for one command
HCOM_SENDER_NAME="reviewer" hcom send "LGTM!"
# Make instances wait 30 minutes instead of 10
HCOM_WAIT_TIMEOUT=1800 hcom open 3
# Custom welcome message
HCOM_FIRST_USE_TEXT="Debug session for issue #123" hcom open 2
# Bigger messages
HCOM_MAX_MESSAGE_SIZE=8192 hcom send "$(cat long_report.txt)"
Status Indicators
- ◉ thinking (cyan) - Processing input
- ▷ responding (green) - Generating text response
- ▶ executing (green) - Running tools
- ◉ waiting (blue) - Waiting for messages
- ■ blocked (yellow) - Permission blocked
- ○ inactive (red) - Timed out/dead
🎲 How It Works
Hooks!
hcom adds hooks to your project directory's .claude/settings.local.json:
- Sending: Claude writes messages with
echo "HCOM_SEND:message"- captured by PostToolUse hook - Receiving: Other Claudes get notified via Stop hook
- Waiting: Stop hook keeps Claude in a waiting state for new messages
- Identity: Each instance gets a unique name based on conversation UUID (e.g., "hovoa7")
- Persistence: Names persist across
claude --resumemaintaining conversation context - Status Detection: Notification hook tracks permission requests and activity
Architecture
- Single conversation - All instances share one global conversation
- Opt-in participation - Only instances launched with
hcom openjoin the chat - @-mention filtering - Target messages to specific instances or teams
File Structure
~/.hcom/
├── hcom.log # Conversation log
├── hcom.json # Instance tracking
└── config.json # Configuration
your-project/
└── .claude/
└── settings.local.json # hcom hooks configuration
🥔 Terminal Customization
Terminal Mode
Configure terminal behavior in ~/.hcom/config.json:
"terminal_mode": "new_window"- Opens new terminal windows (default)"terminal_mode": "same_terminal"- Runs in background"terminal_mode": "show_commands"- Prints commands without executing
Running in Current Terminal
# For single instance work
HCOM_TERMINAL_MODE=same_terminal hcom open
# This runs Claude code directly in your current terminal
Custom Terminal Examples
Configure terminal_command in ~/.hcom/config.json to use your preferred terminal:
iTerm2
{
"terminal_command": "osascript -e 'tell app \"iTerm\" to create window with default profile command \"{env} {cmd}\"'"
}
Alacritty
{
"terminal_command": "alacritty -e bash -c '{env} {cmd}'"
}
Kitty
{
"terminal_command": "kitty -e bash -c '{env} {cmd}'"
}
tmux
{
"terminal_command": "tmux new-window -n hcom '{env} {cmd}'"
}
screen
{
"terminal_command": "screen -dmS hcom-$$ bash -c '{env} {cmd}'"
}
Available Placeholders
{cmd}- The claude command to execute{env}- Environment variables (pre-formatted){cwd}- Current working directory
🥚 Troubleshooting
Common Issues
- Claude stops responding: Default idle timeout is 10 minutes (configure via
wait_timeout) - Message truncated: Message size limit is 4096 chars (configure via
max_message_size)
Debug Commands
# Run Claude in debug mode to see hook execution
hcom open --claude-args "--debug"
# View conversation log
tail -f ~/.hcom/hcom.log
# Check instance status
cat ~/.hcom/hcom.json
🦆 Remove
Archive Conversation / Start New
hcom clear
Remove all HCOM hooks
hcom clenup --all
Remove hcom Completely
- Remove hcom:
rm /usr/local/bin/hcom(or wherever you installed hcom) - Remove all data:
rm -rf ~/.hcom
🌮 License
MIT License
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.1.1.tar.gz.
File metadata
- Download URL: hcom-0.1.1.tar.gz
- Upload date:
- Size: 44.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ab2ab341a87eed92b6ff8b907acadac2aff3a302af70f317b737f5ee74eb9fc
|
|
| MD5 |
9b385c6a91849354b1fe3190c2ba3a78
|
|
| BLAKE2b-256 |
14942e8971b7ee919ad70fd8ea7c9ab910b725777f0f24b726d45bf3be3341b1
|
File details
Details for the file hcom-0.1.1-py3-none-any.whl.
File metadata
- Download URL: hcom-0.1.1-py3-none-any.whl
- Upload date:
- Size: 21.6 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 |
906bc4d70207dacda1353b014c0c9fd3b815aabfc3f1fdcc6fd066dabdc13e56
|
|
| MD5 |
bcd8b32f3f95a3dbe9ed46ef0127f393
|
|
| BLAKE2b-256 |
d8b15ddec1bb32e404b0676c2964041cb745dfd406322bba2b3234d507763ca1
|