Skip to main content

session-peer

PyPI PyPI downloads per week PyPI downloads per month CI License: MIT

English · 한국어 · 日本語 · 简体中文

Find and message Claude Code and Codex sessions from one CLI, locally or over SSH.

Ask another session to review a change, report progress, or pick up a task. session-peer uses native agent inboxes and queues; the receiving agent decides how to respond.

Demo

Codex sends a request to Claude Code and receives an explicit ACK

A real local request and reply using session-peer 1.0.2: Codex contacts Claude Code and receives ACK DEMO-READY. CLI and message excerpts are anonymized and re-rendered in this ~22-second animation, not a screen recording; send success alone is not an ACK.

Quick Start

Install

Python 3.9+. The core local/SSH CLI has no third-party Python dependencies. Source version: 1.2.0. At the 2026-10-16 publication checkpoint, the last verified published stable release was 1.1.2.

Published maintenance version 1.1.2 addresses #298; see the historical preparation notes. Package publication and operational deployment are separate.

Check GitHub Releases and PyPI for available versions. The preparation notes record the dated scope and remaining gates; a source version alone does not establish package availability.

Experimental handoff is opt-in: local POSIX Claude supports receipt ACKs; Codex and SSH support correlation-only submission, not ACK observation. See the handoff guide for the shipped scope and remaining acceptance gates.

pipx install session-peer
session-peer --version
session-peer list

Use uv tool install session-peer instead if you prefer uv. Native Windows, virtual-environment pip, and standalone/SSH installation variants are in the installation guide.

For SSH discovery, replace the example host worker with your host or alias. Then replace the fictional session name and full UUID with the listed destination:

session-peer list --host worker
session-peer send --to api-worker --message "Report progress"
session-peer send --host worker --to 'codex:00000000-0000-4000-8000-000000000001' --message "Review the change"

The SSH destination needs Python and the target agent's native inbox or queue, but not an installed session-peer CLI. For a custom Codex home, pass the listed codexHome with --codex-home; use --dry-run to validate without sending. Use the destination account that owns the session (--host USER@HOST). SSH access and receiver permissions still apply.

posted / queued confirms submission, not consumption, ACK, or completion. Ask for an explicit reply when needed. Ordinary sends refuse inactive Codex destinations by default and do not start them. Never automatically retry an uncertain send.

The optional agent skill is installed separately from the runtime; see the installation guide for its Skills CLI command.

Update

Use the same manager that installed the runtime:

pipx upgrade session-peer
# or: uv tool upgrade session-peer
# or, in its virtual environment: python -m pip install --upgrade session-peer

For local installations, session-peer update replaces standalone runtime files; package-managed installs receive upgrade guidance instead. It never updates agent skills: use their original installer (Skills CLI, or install.sh only for an installer-owned compatibility copy). The compatibility copy is separate from the independently released skill; existing manager-owned skills are preserved. See update details and remote limitations.

Docs

Paired devices / encrypted Relay require Unix, Python 3.11+, and session-peer[relay], with pinned identities and explicit receiver policy. Package publication does not guarantee hosted-service availability. The blind Relay cannot decrypt application message content. MCP / Codex plugin requires Python 3.10+ and session-peer[mcp]; MCP wake requires both send and wake capabilities. Wake runs only when explicitly requested and can start a turn, consume usage, and change project files. The Antigravity bridge remains experimental.

English is canonical; Korean, Japanese, and Simplified Chinese guides are kept aligned. Translations do not change the CLI output language.

License

MIT.

Support and security

Use GitHub Issues for bugs and features. Report vulnerabilities privately under the security policy, not in public issues. Redact secrets, conversation text, session IDs, and personal paths from shared diagnostics.

For private questions or an alternative security contact, email support@abruption.dev with [session-peer] in the subject. Support is best effort, with no guaranteed response time. Emails are reviewed manually, never automatically published as issues. English and Korean reports are welcome.

Metadata

Release files for session-peer 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for session-peer 1.2.0
File Size Uploaded Provenance
session_peer-1.2.0.tar.gz 1.0 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for session-peer 1.2.0
File Interpreter ABI Platform
session_peer-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.2 MB

Release files / session_peer-1.2.0.tar.gz

Download URL session_peer-1.2.0.tar.gz
Size 1.0 MB
Tags Source
SHA-256 checksum
How to use checksums
89263e1a9fd4277dfb475556039ac83225a34cb4a89360d5e800ed0657cf90ed
BLAKE2b-256 checksum
How to use checksums
857f3aafe1bae1c453785e4e431dcb33e1745c9eb3886b8769800267f7c5ec54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / session_peer-1.2.0-py3-none-any.whl

Download URL session_peer-1.2.0-py3-none-any.whl
Size 192.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fa2c60a9927deac393bb979590d564bcc80879831536a5a2d782d2ad3ea55fe0
BLAKE2b-256 checksum
How to use checksums
095019670c165aa3d971a17f0223d7caff62bb9f5830504b87c77fdc353df7f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Security for session-peer 1.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for session_peer-1.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page