Lightweight CLI tool for real-time communication between Claude Code subagents using hooks
Project description
hcom - Claude Hook Comms
Lightweight CLI tool for real-time communication between Claude Code subagents 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.
🦷 Features
- Multi-Terminal Launch - Launch Claude Code subagents in new terminals
- Live Dashboard - Real-time monitoring of all instances
- Multi-Agent Communication - Claude instances talk to each other across projects
- @Mention Targeting - Send messages to specific subagents or teams
- Zero Dependencies - Pure Python stdlib, works everywhere
🎪 Quick Start
Use Without Installing
# 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
Install
# uv
uv tool install hcom
# or pip
pip install hcom
# then use with:
hcom open 3
🦐 Requirements
- Python 3.6+
- Claude Code
🗿 More Examples
# Launch 2 generic instances + 2 specific agents
hcom open 2 backend-coder frontend-coder
# Launch multiple of the same agent
hcom open reviewer reviewer reviewer # 3 separate reviewers
# Launch agents in background with specific prompts
hcom open test-writer --claude-args "-p 'write tests for any new code'"
# Launch watchers that respond to notifications
hcom open reviewer --claude-args "-p 'review when @mentioned'"
# Pass multiple Claude flags
hcom open orchestrator --claude-args "--model claude-3-opus
--resume session_id"
# Launch in specific directories
cd backend && hcom open api-specialist
cd ../frontend && hcom open ui-specialist
# Create named teams that can be @mentioned
cd ~/api && hcom open --prefix api debugger # Creates api-hovoa7
cd ~/auth && hcom open --prefix auth debugger # Creates auth-hovob8
# Message specific teams or instances
hcom send "@api login works but API fails" # Messages all api-* instances
hcom send "@hovoa7 can you check this?" # Message specific instance by name
🥨 Commands
| Command | Description |
|---|---|
hcom open [n] |
Launch n Claude instances (or named agents) |
hcom watch |
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 to chat |
hcom watch --logs |
View message history (non-interactive) |
hcom watch --status |
Show instance status (non-interactive) |
hcom watch --wait [timeout] |
Wait and notify for new messages |
🦖 Configuration
Configuration
Settings can be changed two ways:
Method 1: Environment variable (temporary, per-command/instance)
HCOM_INSTANCE_HINTS="always update chat with progress" hcom open nice-subagent-but-not-great-with-updates
Method 2: Config file (persistent, affects all instances)
Config File Location
~/.hcom/config.json
| Setting | Default | Environment Variable | Description |
|---|---|---|---|
wait_timeout |
1800 | 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 |
50 | 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 in chat" | HCOM_INITIAL_PROMPT |
What new instances are told to do |
first_use_text |
"Essential, concise messages only" | 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 Options) |
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 Code |
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 agents use
echo "HCOM_SEND:message"internally (you usehcom sendfrom terminal) - 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
--resumemaintaining conversation context - Status Detection: Notification hook tracks permission requests and activity
- Agents: When you run
hcom open researcher, it loads an interactive Claude session with a system prompt from.claude/agents/researcher.md(local) or~/.claude/agents/researcher.md(global). Agents can specifymodel:andtools:in YAML frontmatter
Architecture
- Single conversation - All instances share one global conversation
- Opt-in participation - Only Claude Code 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 Options
Terminal Mode
Configure terminal behavior in ~/.hcom/config.json:
"terminal_mode": "new_window"- Opens new terminal windows (default)"terminal_mode": "same_terminal"- Opens in current terminal"terminal_mode": "show_commands"- Prints commands without executing
Default Terminals
- macOS: Terminal.app
- Linux: gnome-terminal, konsole, or xterm
- Windows: Windows Terminal / PowerShell
Running in Current Terminal
# For single instances
HCOM_TERMINAL_MODE=same_terminal hcom open
Custom Terminal Examples
Configure terminal_command in ~/.hcom/config.json to use your preferred terminal:
iTerm2
{
"terminal_command": "osascript -e 'tell app \"iTerm2\" to create window with default profile' -e 'tell current session of current window to write text \"{env} {cmd}\"'"
}
Alacritty
{
"terminal_command": "alacritty -e sh -c '{env} {cmd}'"
}
Kitty
{
"terminal_command": "kitty sh -c '{env} {cmd}'"
}
WezTerm
{
"terminal_command": "wezterm cli spawn --new-window -- sh -c '{env} {cmd}'"
}
tmux
{
"terminal_command": "tmux new-window -n hcom sh -c '{env} {cmd}'"
}
Available Placeholders
{cmd}- The claude command to execute{env}- Environment variables (pre-formatted asVAR1='value1' VAR2='value2'){cwd}- Current working directory
Notes
- Custom commands must exit with code 0 for success
- The
{env}placeholder contains shell-quoted environment variables - Most terminals require wrapping the command in
sh -cto handle environment variables correctly
🦆 Remove
Archive Conversation / Start New
hcom clear
Remove HCOM hooks from current directory
hcom cleanup
Remove HCOM hooks from all directories
hcom cleanup --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.7.tar.gz.
File metadata
- Download URL: hcom-0.1.7.tar.gz
- Upload date:
- Size: 26.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 |
9d7cdc8486788c3c325e20d641a3a457f64126c4e55c78b89f9cc2fcb2514f79
|
|
| MD5 |
85a73bf072b8cf24e02e4fa45cbfcb57
|
|
| BLAKE2b-256 |
685d91fa921e81e34c2fc7c5183965e1a57e0b1c7e67ec1e2fc0cbb9b86215d2
|
File details
Details for the file hcom-0.1.7-py3-none-any.whl.
File metadata
- Download URL: hcom-0.1.7-py3-none-any.whl
- Upload date:
- Size: 23.7 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 |
b971327fdd6e08ef37bb264091eb4885b67720d5a7bc80e5e89d296e69bd107c
|
|
| MD5 |
bc43bb0b098682e9892f843932090123
|
|
| BLAKE2b-256 |
a8fd0fbc62aa5d75a345a952863f8c6664a706583d88f56b81085368f5696ca3
|