jackpoint
v0.5.0
Published
Matrix bridge for Claude Code - get mobile notifications when Claude needs input and respond via chat
Readme
Jackpoint
A bidirectional Matrix bridge for Claude Code. Get notifications on your phone when Claude needs input, and respond directly from Matrix.
Why?
When running long Claude Code sessions, you don't want to babysit your terminal. Jackpoint sends you a Matrix DM when Claude:
- Asks a question
- Needs permission for a tool
- Stops and waits for input
You can respond from your phone, and the message gets injected back into the terminal.
Architecture
┌─────────────────┐ hooks (IPC) ┌──────────────────┐
│ Claude Code │ ──────────────────────► │ Jackpoint │
│ (terminal) │ │ (Node.js) │
│ │ ◄────────────────────── │ │
└─────────────────┘ tmux send-keys └──────────────────┘
▲ │
│ ▼
┌──────────────┐
│ Matrix DM │
│ (mobile) │
└──────────────┘Requirements
- Node.js 18+
- tmux (for bidirectional communication)
- A Matrix account (e.g., on matrix.org)
- Claude Code CLI
Installation
# Clone the repo
git clone https://github.com/yourusername/jackpoint.git
cd jackpoint
# Install dependencies
npm install
# Link globally
npm linkSetup
Run the setup wizard to configure your Matrix credentials:
jackpoint --setupYou'll be prompted for:
- Matrix homeserver URL (default: https://matrix.org)
- Your Matrix username
- Your Matrix password
- Recipient user ID (who receives notifications - usually yourself on mobile)
Credentials are stored in ~/.jackpoint/ (not in the repo).
Usage
Start Claude Code with Matrix integration:
# Must be inside tmux
jackpoint claudeWith arguments:
jackpoint claude --model sonnet
jackpoint claude --resumeMatrix Commands
In your Matrix DM, you can use these commands:
| Command | Description |
|---------|-------------|
| /lines [n] | Show last n lines of terminal output (default: 30) |
| /help | Show available commands |
Any other message is sent directly to Claude as input.
Debug Mode
MATRIX_DEBUG=1 jackpoint claudeHow It Works
- Wrapper Pattern:
jackpoint claudewraps Claude Code and injects hooks via--settingsflag - IPC Socket: Hooks ping a Unix socket instead of doing Matrix I/O directly
- Matrix Listener: Listens for incoming Matrix messages and injects them via
tmux send-keys - Session Persistence: Matrix rooms persist by tmux pane (hostname:session:window.pane)
Project Structure
├── claude-matrix.js # Main CLI entry point
├── matrix-bridge.js # Matrix API layer
├── matrix-listener.js # Inbound message handler
└── lib/
├── config.js # Configuration management
├── hook-injector.js # Generates Claude hook settings
├── hook-ping.js # Lightweight hook script
├── ipc-server.js # Unix socket server
└── silence-sdk.js # Suppresses noisy SDK logsLicense
ISC
