Skip to main content

messenger (Inter-session Communication)

messenger enables fire-and-forget messaging between Claude Code sessions running in tmux. Send prompts, delegate tasks, and orchestrate multiple sessions from a single terminal.

Note: For reply functionality with response waiting, use sesh-messenger.

Installation

gitlab-install @session-tools/session-messenger

Quick Start

# Discover running Claude sessions
messenger discover

# List discovered sessions
messenger list

# Send a prompt to another session (fire-and-forget)
messenger send worker-1 "Implement the login API"

# Type only (don't press Enter)
messenger send worker-1 --no-submit "Draft message"

# Approve permission request
messenger approve worker-1

CLI Commands

Session Discovery

CommandDescription
messenger discoverAuto-discover running Claude Code sessions
messenger listList all registered sessions
messenger register <name> <tmux-id>Manually register a session
messenger unregister <name>Remove a session from registry

Messaging

CommandDescription
messenger send <session> <prompt>Send message (fire-and-forget, submits by default)
messenger send <session> --no-submit <prompt>Type only (don't press Enter)
messenger send <session> --from <session> <prompt>Specify sender session (for inbox queuing)

Permission Approval

CommandDescription
messenger approve <session>Approve permission (default: Yes)
messenger approve <session> 1Approve with Yes
messenger approve <session> 2Approve with Yes + don't ask again

Inbox Management

CommandDescription
messenger inboxView your inbox
messenger inbox <session>View session's inbox
messenger inbox --countGet unread count only
messenger inbox --clearClear all messages in inbox
messenger inbox --watchWatch inbox and notify periodically
messenger inbox --watch --notify-interval <s>Set notification interval (default: 60s)

Event Management

CommandDescription
messenger event listList events
messenger event latest [session]Get latest event

Configuration

CommandDescription
messenger configShow current configuration

Exit Codes

CodeMeaning
0Success
1Error
5Rejected (session waiting for permission)
6Queued to inbox (target busy)

How It Works

Session Discovery

When you run messenger discover:

  1. Lists all tmux sessions
  2. Captures each session's screen content
  3. Detects Claude Code patterns (claude.com, ? for shortcuts, etc.)
  4. Registers discovered sessions with short names

Prefix Handling

Many tools prefix tmux session names (e.g., logsession-v2-my-task). Messenger automatically strips configured prefixes:

# Now "logsession-v2-my-task" is registered as "my-task"
messenger send my-task "Hello" # → sends to logsession-v2-my-task

Inbox System

When a target session is busy (e.g., Claude is processing), messages are queued to the inbox:

# Check if you have messages
messenger inbox --count

# Read your messages
messenger inbox

# Clear inbox after reading
messenger inbox --clear

tmux Integration

Messenger uses tmux commands internally:

  • tmux send-keys -l - Input text (without Enter)
  • tmux send-keys Enter - Press Enter
  • tmux capture-pane - Read screen content
  • tmux has-session - Check session exists

Usage Examples

Basic Messaging

# Send message (fire-and-forget, submits automatically)
messenger send worker "Do the task"

# Type only (don't submit)
messenger send worker --no-submit "Draft message"

Permission Management

# Approve permission with default (Yes)
messenger approve worker

# Approve with "Yes + don't ask again"
messenger approve worker 2

Inbox Usage

# View my inbox
messenger inbox

# Just get count
messenger inbox --count

# View worker's inbox
messenger inbox worker

# Watch for new messages
messenger inbox --watch --notify-interval 30

Manager-Worker Pattern

Orchestrate parallel work across multiple sessions:

# From manager session, delegate to workers
messenger send worker-1 "Implement feature A"
messenger send worker-2 "Implement feature B"
messenger send worker-3 "Write documentation"

Session Collaboration

Pass work between sessions:

# Session A completes, hands off to Session B
messenger send session-b "Tests are ready. Please review and merge."

Safe Review Before Execute

For sensitive operations, use --no-submit:

# Input text but don't press Enter
messenger send production --no-submit "DROP TABLE users"

# Switch to production session manually to review before pressing Enter

Integration with logsession

# Start sessions with logsession
logsession start manager-1 --detach
logsession start worker-1 --detach
logsession start worker-2 --detach

# Discover and message
messenger discover
messenger send worker-1 "Start working on auth module"

File Locations

~/.messenger/
└── logs/ # Messenger logs

Version Info

  • Current Version: 3.0.3
  • License: SSPL-1.0
  • Repository: GitLab