https://github.com/pmarreck/llmsend
Inter-Claude-Code-session messaging via tmux + inbox files (skill plugin)
https://github.com/pmarreck/llmsend
Last synced: 19 days ago
JSON representation
Inter-Claude-Code-session messaging via tmux + inbox files (skill plugin)
- Host: GitHub
- URL: https://github.com/pmarreck/llmsend
- Owner: pmarreck
- License: mit
- Created: 2026-05-07T20:47:04.000Z (about 1 month ago)
- Default Branch: yolo
- Last Pushed: 2026-05-07T20:50:42.000Z (about 1 month ago)
- Last Synced: 2026-05-07T22:32:54.899Z (about 1 month ago)
- Size: 8.79 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# llmsend
[](LICENSE)
A Claude Code skill for sending messages between Claude Code sessions
running related projects. Each project runs its own Claude Code
instance in its own tmux session; this skill lets them coordinate via
a hybrid file-based inbox and live tmux notification.
## Why
When you run multiple related projects (e.g. a library and several
consumers, or a stack of sibling projects with cross-cutting concerns)
each in its own Claude Code session, they need to communicate without
relying on you-the-human to relay every message by hand. `llmsend`
codifies a battle-tested pattern: a durable inbox file plus a live
tmux ping.
## How it works
- **Sender** drops a markdown note in `/inbox/`,
then sends two `tmux send-keys` calls to the recipient's session —
the message text plus the kitty CSI u submit escape (`\e[13u`),
which fires Claude Code's submit handler.
- **Recipient** sees the ping arrive in their prompt area as if the
user typed it, reads the note (which becomes part of their
context), deletes it, and optionally replies using the same flow.
The file is the durable record (survives session crashes, grep-able,
audit-trail-friendly). The ping is the live notification (recipient
picks up the message at their next prompt rather than at their next
manual inbox poll).
See `skills/LLMsend/SKILL.md` for the full protocol — sender steps,
recipient steps, prerequisites, failure modes.
## Install
### Via Claude Code's plugin system (recommended)
This repo doubles as a single-plugin marketplace. Add it once, then
install:
```
/plugin marketplace add pmarreck/llmsend
/plugin install llmsend@llmsend
```
Update later with:
```
/plugin marketplace update llmsend
/plugin install llmsend@llmsend # re-runs install on the updated version
```
### Manual install (no marketplace)
```sh
git clone https://github.com/pmarreck/llmsend ~/Documents-CloudManaged/llmsend
ln -sfn ~/Documents-CloudManaged/llmsend/skills/LLMsend ~/.claude/skills/LLMsend
```
The symlink is so Claude Code's user-level skill loader picks it up at
`~/.claude/skills/LLMsend/SKILL.md`. Restart your Claude Code session
to load the skill into the available-skills list.
## Prerequisites
- Each project runs in a tmux session named after the project (by
convention: the project directory's basename).
- Both Claude Code instances run under a terminal that handles
kitty's enhanced keyboard mode (kitty itself, WezTerm, recent
Ghostty, etc.). Without this, the submit-escape lands as a draft
requiring manual Enter.
- Filesystem access between sender and recipient project trees
(same machine, or a shared mount).
## License
MIT (see `LICENSE`).