Skip to main content

Launch multiple Claude Code instances (terminal, headless, or subagents) that communicate together in real time via hooks.

Project description

hcom — Claude Hook Comms

PyPI - Version PyPI - License Python Version DeepWiki

Launch multiple Claude Code instances (terminal, headless, or subagents) that communicate together in real time via hooks.

Demo

Start

Run without installing

uvx hcom 2

Install

pip install hcom   # or: uv tool install hcom

Use

hcom                     # UI - launch, monitor, message
claude 'run hcom start'  # activate hcom for any claude code

What it does

hcom adds hooks then launches terminals with Claude Code that remain active, waiting to respond to messages. Normal claude remains unaffected by hcom, but can opt-in/out with hcom start/hcom stop. Safely remove hcom hooks with hcom reset. Works on Mac, Linux, Windows, Android.

Commands

Command Description
hcom Interactive dashboard
hcom <n> Launch n instances
hcom start Enable participation
hcom stop Disable participation

Examples

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 after Task completes 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

All commands
Usage: hcom   # UI
       [ENV_VARS] hcom <COUNT> [claude <ARGS>...]
       hcom watch [--logs|--status|--wait [SEC]]
       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              messaging/status/launch UI (same as hcom no args)
    --logs           Print all messages
    --status         Print instance status JSON
    --wait [SEC]     Wait and notify for new message

  send "msg"         Send message to all instances
  send "@alias msg"  Send to specific instance/group

  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 log
  reset hooks        Safely remove hcom hooks from claude settings.json
  reset config       Clear + backup 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 window
  • HCOM_TERMINAL="open -a iTerm {script}" - Custom terminal

Custom Terminal

Your custom command just needs to:

  1. Accept {script} as a placeholder that will be replaced with a script path
  2. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hcom-0.6.1.tar.gz (97.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hcom-0.6.1-py3-none-any.whl (95.7 kB view details)

Uploaded Python 3

File details

Details for the file hcom-0.6.1.tar.gz.

File metadata

  • Download URL: hcom-0.6.1.tar.gz
  • Upload date:
  • Size: 97.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for hcom-0.6.1.tar.gz
Algorithm Hash digest
SHA256 0e0bc47fc7d705334a45af9f99f308061fee4219f5c7e22eba5db9f8c2fbb5e0
MD5 3a030f5ff0a3790ec1d18c8c48e7e349
BLAKE2b-256 441ded1cd9e00830b62d0df15016567efbb6ab8782fe82e30b42119833dbfbc5

See more details on using hashes here.

File details

Details for the file hcom-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: hcom-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 95.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for hcom-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b16a65e6213ccc28bc8483fc3566dadd632b62323cafeaefaceaae16c3e105bb
MD5 63fa014f7d9c9c88fbd2adf010eea22d
BLAKE2b-256 f552b280705636aadca293caac4676d9c8e74813310759d95982da029a2e1082

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page