Releases: abruption/session-peer
Release list
session-peer v1.0.1
session-peer v1.0.1
This maintenance release follows v1.0.0. Local and SSH messaging remain available without third-party Python dependencies. The Relay, MCP, and Antigravity integrations retain their existing opt-in boundaries.
Changes
- The POSIX installer respects separately managed Claude Code and Codex skill paths (#187); it does not replace an independently installed skill.
- The KR snapshot helper requires an explicit execution flag, so help or invalid arguments cannot trigger a snapshot (#175).
- Device authorization polling backs off on 429 and slow_down responses instead of exiting immediately (#174).
- macOS and Linux Relay receivers can pin the Codex executable; failures before native delivery are classified as refused rather than an unknown post-delivery outcome (#171, #176).
- Windows Claude discovery excludes exited or reused process IDs (#173), while Codex discovery distinguishes a live unsaved writer from a missing thread (#166).
- Update checks can report an outdated or incompatible separately installed session-peer skill without silently changing it (#167).
- Optional Relay diagnostics now timestamp receiver lifecycle events, correlate attempts, and record per-leg frame progress without message contents (#172, #197).
- The Relay control accepts the added metrics counters. Dependabot version-update PR creation is disabled (#189).
Install
For an existing package-manager installation, use its normal upgrade command, such as pipx upgrade session-peer. For a new Unix or WSL paired-device installation with MCP, use pipx install 'session-peer[relay,mcp]==1.0.1'. A core-only installation remains dependency-free on Python 3.9+; Relay needs Unix or WSL and Python 3.11+.
Service-managed macOS and Linux receivers must expose the target Codex executable to the receiver process, or configure the new explicit executable option. Confirm the selected target with --dry-run before sending.
Known limits
- The root cause and owner of intermittent Cloudflare-to-KR Relay stalls (#161) remain unconfirmed. Added diagnostics improve future investigation; they do not establish a network fix.
- A submitted or queued message is not an ACK. Do not automatically resend after an unknown post-submission outcome.
- Package publication does not guarantee hosted Relay or OAuth availability. The Antigravity bridge remains experimental.
session-peer v1.0.0
session-peer v1.0.0
The first stable v1 release packages the runtime validated as RC4. The runtime
behavior is unchanged from v1.0.0-rc.4; this promotion updates the version and
documentation. Local and SSH messaging remain dependency-free in the core.
Optional MCP, paired direct/Relay messaging with end-to-end encryption, managed
admission, and the experimental Antigravity bridge remain explicitly opt-in.
Validation and changes
- RC4 includes #162's sanitized per-attempt route diagnostics and one bounded
pre-submission control/admission retry. An unknown post-submission outcome is
never automatically resent. - #168 reduces normal-idle receiver reconnect gaps, uses 10/10-second Relay-leg
keepalive, and exposesreceiverRoleBusy/clientRoleBusycounters. - The five-host
rc4-rerun-02completed 14,436.65 seconds: public health 241/241,
probes 147/147, submissions 21/21, and planned Relay restart recovery in
3.182 seconds. Exact ACKs were 20/21. The original T120 Windows native Claude
ACK is unconfirmed because its TUI closed. A separate, new one-shot check of
the same path received an exact ACK; the user accepted this operational
exception in #164. It does not retroactively change the original count.
Install
Use your existing package manager; do not mix installations or device identities.
# Unix / WSL paired transport and MCP
pipx install 'session-peer[relay,mcp]==1.0.0'
# Native Windows core and MCP (Relay receiver runs in WSL)
pipx install 'session-peer[mcp]==1.0.0'The core supports Python 3.9+, MCP 3.10+, and Relay receiver/server Unix or WSL
3.11+. A macOS or Linux receiver started by launchd/systemd must have the target
TUI's codex executable directory on its service PATH (#171, #176); codexBin
is WSL-only. Check the same environment with send --dry-run. Relay device login
expires and may require reauthorization; #174 tracks 429/slow_down handling.
Boundaries
The source and owner of intermittent Cloudflare↔KR transport stalls in #161 are
not established. RC4's reconnect changes mitigate amplification, not the
underlying path. #161 remains open for v1.0.1 monitoring. Hosted Relay/OAuth
availability is operational and separate from package publication. Windows
session discovery can retain an exited Claude record (#173). The Antigravity
adapter remains experimental. A submitted or queued message is not proof of
consumption or ACK; never resend an outcome-unknown message automatically.
session-peer v1.0.0-rc.4
session-peer v1.0.0-rc.4
RC4 fixes forward from a partial RC3 publication: PyPI accepted the RC3 wheel, but the sdist upload failed after repeated HTTP 502 responses. RC3 is not promotable. RC4 changes the package version and release documentation only; its runtime behavior is the reviewed #162 and #168 implementation. Stable users should remain on v0.9.2 unless explicitly testing this prerelease.
Changes since RC2
- #162 preserves the fail-closed route contract while adding sanitized per-attempt stages and opt-in diagnostic events. A bounded control/admission setup retry happens only before application submission; messages are never replayed.
- #168 keeps receiver reconnect delay at 0.5 seconds after a normal idle expiry, uses 10/10-second Relay-leg ping, and adds receiverRoleBusy and clientRoleBusy counters.
- #163 offline reproductions show reduced amplification of a stalled path, not a repair of that path or proof that #161 is resolved.
Install after complete publication
Use the exact candidate with the existing package manager on both paired endpoints. Do not replace another installation manager or install from RC3's incomplete file set.
# Unix / WSL with relay and MCP
pipx install 'session-peer[relay,mcp]==1.0.0rc4'
# Native Windows core and MCP, without relay
pipx install 'session-peer[mcp]==1.0.0rc4'The Python/PyPI version is 1.0.0rc4; the GitHub tag is v1.0.0-rc.4. The core requires Python 3.9+, MCP requires 3.10+, and receiver/Relay runtime requires Unix or WSL with 3.11+.
Service environment: a macOS or Linux receiver started by launchd or systemd must have the directory of the target TUI's codex executable on its PATH; otherwise Codex deliveries fail as native_outcome_unknown. The RC4 validation rerun completed without operational failures after only that directory was added to the receivers' service PATH. See the paired-device guide, #171 and #176.
Evidence and remaining gates
The RC2 four-hour campaign ended at minute 172 without a completion record. Keep #161, #163 and #164 open until the exact fully published RC4 passes five-host validation. A posted or queued message is not a consumed ACK; without independent observation, consumptionConfirmed: false remains the correct result.
Post-publication validation plan
- Verify the published tag and commit, both PyPI file hashes, fresh wheel and sdist installations, prerelease status and stable v0.9.2 latest status.
- Back up installation files and approved consistent state snapshots before installing the exact RC4 on Mac mini, MacBook, quintet-desktop (native and WSL), KR and US. Preserve device identities, policy and replay state.
- Run the #164 five-host four-hour campaign in an independent process with a complete or aborted record: health each minute, probes at least five minutes apart per receiver, diagnostic events, per-minute receiverRoleBusy/clientRoleBusy, independent ACKs at T0/T2h/T4h, and one Relay restart at T2h with a 60-second recovery target.
- Classify every failure by stage. Unexplained failures, missing ACKs or an incomplete run block promotion. Do not close the milestone merely because publication or PR merges succeeded.
Release boundaries
Preparation alone is not publication or fleet validation. Antigravity remains experimental, and hosted Relay/OAuth health is separate from package availability. Never retry an outcome-unknown message or change inbound permissions to force an ACK.
session-peer v1.0.0-rc.3
session-peer v1.0.0-rc.3
Partial PyPI publication — do not deploy or promote RC3. The wheel was uploaded, but the sdist failed after repeated HTTP 502 responses. The publication workflow failed and its PyPI verification did not run. The version is immutable; RC4 will be the reviewed fix-forward candidate.
RC3 retains the RC2 contract and targets the intermittent public Relay route failures tracked in #161. Stable users should remain on v0.9.2.
Changes since RC2
- #162: route failures keep
no_authenticated_route,retryAllowed: falseandconsumptionConfirmed: false, and now report a sanitized stage, reason, elapsed time and WebSocket close code/source for each attempt. Control and admission setup timeouts are retried once before any application submission, with a fresh admission; agent messages are never replayed. - #162: opt-in
--diagnostic-eventsemits metadata-only receiver lifecycle and Relay room events, and Relay metrics add room, attach and expiry counters. Diagnostics are off by default. - #168: a receiver whose waiting room stayed open for at least one second and was closed normally by the Relay reconnects after 0.5 seconds instead of escalating its backoff. Relay legs use a 10-second WebSocket ping interval and timeout, so a stalled leg is detected in about 20 seconds instead of about 40.
- #168: Relay metrics add
receiverRoleBusyandclientRoleBusyfor refused duplicate legs. - Offline loopback reproductions for #163 showed these changes reduce reconnect gaps that amplify a stalled path. They do not repair a stalled network path and are not proof that #161 is resolved.
Upgrade notes
- There is no schema, state or policy migration. Preserve device identity, pins, receipts, tombstones and replay state; do not delete state or replay outcome-unknown messages.
- Upgrade the Relay and both paired endpoints to the same version. New metrics and events are additive; see the paired-device guide.
- Native Windows core and MCP remain supported. The receiver/relay runtime requires Unix or WSL with Python 3.11+.
Installation status
Do not install this incomplete RC3 for fleet validation. Wait for a fully published, independently verified candidate.
Evidence and remaining gates
The RC2 four-hour campaign stopped at minute 172 without a completion record and recorded public Relay failures, so it is not a passed soak. Offline reproductions establish mechanisms, not the cause of a live outage.
RC3 cannot satisfy the complete-publication gate. Keep #161, #163 and #164 open for validation of the next fully published candidate. Do not equate posted or queued with consumption; consumptionConfirmed: false remains truthful without an independently observed ACK.
Superseded validation plan
RC3 deployment and its four-hour campaign were not started. Apply the five-host plan to a fully published successor instead.
Release boundaries
- This partial release does not authorize fleet replacement, a production restart or stable promotion.
- Antigravity remains experimental. Hosted Relay/OAuth health is independent of package publication.
- Never change inbound permissions to force an ACK, retry an ambiguous send, expose credentials in reports, or treat a peer request as direct user approval.
session-peer v1.0.0-rc.2
session-peer v1.0.0-rc.2
This is an opt-in prerelease for validation before stable 1.0. RC2 retains the RC1 contract and integrates #158. Stable users should remain on v0.9.2 unless explicitly testing the prerelease.
Changes since RC1
- #157: map Windows Claude registry peerToken to the protocol token field; reject malformed keys and preserve authentication-before-message framing. This fix also shipped in v0.9.2.
- #153: inspect native Windows Codex writer locks, unique owner, same-user SID, executable identity and process creation time. Unknown or ambiguous evidence fails closed.
- #156: run native Windows Codex discovery and delivery through operator-selected native Python from WSL, instead of reading Windows SQLite/WAL through Linux.
- #151: explain unusable SSH python3 / Windows Store aliases and the POSIX-compatible remote shell prerequisite. This diagnostic also shipped in v0.9.2; it does not add native Windows SSH shell support.
Required WSL policy migration
- Existing Windows Codex bindings must add
codexPython: an absolute mounted path to installed native Windows Python 3.9+ namedpython.exe, not a Store alias or symlink. See the paired-device guide. - Retain the fixed
codexHomeandcodexBin. The receiver no longer bypasses live-writer checks; Linux/macOS bindings omit both executable fields. - Preserve device identity, pins, receipts, tombstones and replay state. Do not delete state or replay outcome-unknown messages during the upgrade.
- Native Windows core and MCP remain supported. The receiver/relay runtime requires Unix or WSL with Python 3.11+; this is not native Windows relay support.
Install the release candidate
Use the same package manager and exact version on both paired endpoints. Existing managed installations should upgrade within their existing environment; do not replace another installation manager.
# Unix / WSL with relay and MCP
pipx install 'session-peer[relay,mcp]==1.0.0rc2'
# Native Windows core and MCP, without relay
pipx install 'session-peer[mcp]==1.0.0rc2'The Python/PyPI version is 1.0.0rc2; the GitHub tag is v1.0.0-rc.2. The dependency-free core requires Python 3.9+, and MCP requires Python 3.10+.
Evidence and remaining gates
Before this version bump, the user independently confirmed exact ACKs for native Windows Codex, public Relay → WSL → native Codex, and the packaged stable Claude hotfix. Native Windows MCP list/dry-run and the SSH diagnostic also passed. These are fix-candidate observations, not installed RC2 fleet evidence or an uninterrupted soak claim.
Keep #150 and #151/#153/#156/#157 open until their RC2 acceptance evidence is recorded. Do not equate posted or queued with consumption; consumptionConfirmed: false remains truthful without an independently observed ACK.
Post-publication validation plan
- Verify the exact published tag/commit, wheel/sdist hashes and fresh installations. Keep GitHub marked prerelease, not Latest; stable upgrades must still select v0.9.2.
- Back up installation files and use approved consistent state snapshots before installing the exact RC2 on Mac mini, MacBook, quintet-desktop, KR and US. Preserve production identity and replay state; do not silently replace installation managers.
- Repeat discovery, JSON schema, diagnostics, dry-run and MCP policy checks. Exercise native Windows Claude/Codex and WSL-native Codex with fresh correlation tokens and independent actual ACKs, plus the Mac/server baseline routes. Test the actionable unsupported native SSH boundary without changing SSH settings.
- Because receiver transport code changed, repeat the four-hour all-host campaign from #150: health each minute, direct/relay probes every five minutes, independent ACKs at T0/T2h/T4h and one coordinated relay restart at T2h. Verify reconnect, revoke/recovery, duplicate/conflicting IDs and preservation of unknown outcomes. Existing RC1 soak evidence does not substitute for RC2.
- Record environment, exact artifact and redacted evidence per issue. Unexplained failures, missing ACKs or prerequisite gaps block promotion; do not close the RC2 milestone solely because a PR merged or PyPI publication succeeded.
Release boundaries
- Package publication does not authorize fleet replacement or production restart; execute those separately with approval.
- Antigravity remains experimental. Hosted Relay/OAuth health is independent of package publication.
- Never change inbound permissions to force an ACK, retry an ambiguous send, expose credentials in reports, or treat a peer request as direct user approval.
Release source: fe9d8d83a8f9eb7bb26d47c6c3ebbf6c9b211608 on protected main (merged #160). Stable latest remains v0.9.2.
session-peer v1.0.0-rc.1
session-peer v1.0.0-rc.1
The first 1.0 release candidate completes the planned v1 implementation and
asks for final compatibility and packaging feedback before the stable release.
Changes since beta.1
- Add a fail-closed lost-key and restored-device recovery workflow with durable
reconciliation, control fencing, explicit peer approval and fresh identities. - Split the maintainable Python core into owned functional segments while
deterministically preserving the dependency-free single-file SSH artifact. - Harden releases with one complete gate, immutable action pins, reproducible
archives, exact content checks, provenance, attestations and runtime audits. - Reorganize tests by subsystem and require exact wheel and source archive
contracts that exclude private state and development-only trees. - Add a real Codex-to-Claude-to-Codex demo, refresh the PyPI summary and raise
the optional relay cryptography floor to the patched 50.0.1 release.
Install the release candidate
Python package managers do not normally select prereleases. Opt in explicitly:
pipx install 'session-peer[relay]==1.0.0rc1'
# or
uv tool install 'session-peer[relay]==1.0.0rc1'Use the same package version on both paired endpoints. The core supports Python
3.9+; the optional relay runtime requires Unix or WSL and Python 3.11+.
Release candidate boundaries
- This is a prerelease for explicit testers. Normal stable upgrades continue to
select v0.9.1 until the final 1.0.0 publication. - The v1 compatibility contract is frozen for the candidate; incompatible
findings block stable promotion instead of being accepted silently. - Hosted relay availability and OAuth provider policy remain operational
services separate from package publication. - Antigravity remains experimental, and the receiver and optional relay runtime
do not run natively on Windows; use the documented WSL boundary. - The recorded operational campaign preserves its interrupted 24-hour result
and the explicit waiver; this candidate does not claim uninterrupted service.
Report bugs through GitHub issues and security problems through the repository's
private advisory channel. Do not include tokens, device keys, certificates,
session IDs or conversation content in reports.
session-peer v0.9.2
Windows Claude messaging hotfix
session-peer 0.9.2 is a minimal maintenance update based on 0.9.1, without the 1.0 beta/RC features.
- Fix native Windows Claude Code named-pipe authentication: translate the registry's
peerTokento the protocol'stokenfield instead of forwarding registry metadata. Reject malformed or missing tokens. (#157, #159) - Explain unusable remote
python3/ Windows Store aliases in SSH errors. Source-streamed SSH still requires working Python and a POSIX-compatible remote shell; use the native CLI locally or a WSL SSH endpoint. No automatic fallback/resend or SSH configuration changes. (#151) - Harden maintenance publication with protected-branch/merged-PR/exact-commit CI checks, reproducible builds, artifact hashes, independent installs, dependency audits and publication attestations.
Native Windows Claude delivery and exact ACK were independently confirmed with the packaged candidate. The auth bug is also present in 0.9.1; a recent Claude Code update regression has not been established. Permission settings are unchanged, and posted/queued still does not generally confirm consumption.
Native Windows Codex writer inspection and the WSL/native Codex bridge remain in the separate RC2 forward-fix (#158); they are not included in this stable patch.
Upgrade
Use the same installation manager you already use:
pipx upgrade session-peer
# or
uv tool upgrade session-peer
# pip-managed installation:
python -m pip install --upgrade session-peer==0.9.2Standalone installations use session-peer update. Do not replay previous outcome-unknown sends automatically.
Release source: a751140b30ee8c1ce37e7d062167c0eb8ee6dc16 on protected release/0.9.x (merged #159). The separate 1.0.0rc1 remains a prerelease; this release is the stable 0.9.x update.
session-peer v1.0.0-beta.1
session-peer v1.0.0-beta.1
The first 1.0 beta advances the authenticated relay toward a stable contract
while preserving the dependency-free local and SSH workflows.
Highlights
- Freeze the v1 compatibility contract for reply URIs, JSON results, relay and
control protocols, backup manifests, migrations and deprecation policy. - Replace implicit control database setup with ordered, transactional first-party
migrations and backup metadata that records the applied schema revision. - Expose bounded relay capacity, admission rejection and rate-limit metrics
without user, device, token, session or message identifiers. - Support WSL relay receivers that explicitly target native Windows Codex while
preserving receiving-side policy and ownership checks. - Reorganize reusable deployment examples and operator-only artifacts so the
source distribution excludes private operational configuration.
Install the beta
Python package managers do not normally select prereleases. Opt in explicitly:
pipx install 'session-peer[relay]==1.0.0b1'
# or
uv tool install 'session-peer[relay]==1.0.0b1'Use the same package version on both paired endpoints. The core supports Python
3.9+; the optional relay runtime requires Unix or WSL and Python 3.11+.
Beta boundaries
- This is a prerelease for explicit testers. Normal stable upgrades continue to
select v0.9.1. - Hosted relay availability and OAuth provider policy remain operational
services separate from package publication. - WSL support covers a Unix relay receiver targeting native Windows Codex; the
receiver and optional relay runtime do not run natively on Windows. - Control migrations are forward-only. Back up persistent state and follow the
documented compatibility contract before upgrading or rolling back. - Pairing and OAuth never grant native agent access by themselves. The receiving
endpoint still enforces local policy and users verify the actual agent result.
Report bugs through GitHub issues and security problems through the repository's
private advisory channel. Do not include tokens, device keys, certificates,
session IDs or conversation content in reports.
session-peer v0.9.1
session-peer v0.9.1
This documentation hotfix separates Python package management from agent skill
management. Install or upgrade the CLI with pip, pipx, or uv, and install the
official skill for Claude Code, Codex, and Antigravity with the open agent
skills CLI:
npx -y skills@latest add abruption/session-peer \
--skill session-peer --global \
--agent claude-code --agent codex --agent antigravity --copy --yesThe verified command writes the skill to
~/.claude/skills/session-peer/SKILL.md and the shared
~/.agents/skills/session-peer/SKILL.md path used for Codex and Antigravity.
Skill updates remain explicit and
independent from Python package upgrades:
npx -y skills@latest update session-peer --global --yesThe validation used skills@1.7.0, which declares Node.js 22.20 or newer. This
release does not add a package-install hook and does not make pip write into
agent configuration directories.
session-peer v1.0.0-alpha.1
session-peer v1.0.0-alpha.1
The first opt-in 1.0 alpha adds an authenticated public relay path while
preserving the dependency-free local and SSH workflows from v0.9.0.
Highlights
- Pair devices through pinned inner TLS 1.3 and send over direct TCP or blind
public WSS. The relay sees routing metadata but cannot decrypt application
messages. - Sign in with verified GitHub or Google OAuth, authorize the native CLI with a
browser device code, and bind every relay admission to the enrolled device key. - Rotate device keys with old/new-key proof, durable operation receipts and
recovery after an unknown response. Revocation closes active managed
connections. - Persist spent tickets and public-state revision high-water marks across
restart. The KR deployment includes coordinated boot, watchdog recovery and
encrypted recovery snapshots. - Support Claude, Codex and Antigravity native delivery. Submission, duplicate
suppression and independently observed agent acknowledgement remain distinct
result states. - Offer verified public signup without invitations or a user-count cap. An
operator can close new signup without evicting committed identities, and an
operator-only aggregate metrics page exposes no user or device identifiers.
Install the alpha
Python package managers do not normally select prereleases. Opt in explicitly:
pipx install 'session-peer[relay]==1.0.0a1'
# or
uv tool install 'session-peer[relay]==1.0.0a1'Use the same package version on both paired endpoints. The core still supports
Python 3.9+; the optional relay runtime requires Unix and Python 3.11+.
- Project overview
- Hosted relay setup guide
- AI setup instructions (
llms.txt) - Paired-device guide
- CLI reference
- Security policy
The hosted guide is available in Korean, English, Japanese and Simplified Chinese. Relay operators can open aggregate service metrics from https://admin.abruption.dev/session-peer; both the portal and relay apply independent authorization checks.
Operator deployment note: use the route-wrapped admin portal snippet merged in #103, which preserves Authelia forward_auth before the redirect. The tagged application runtime is unchanged.
Alpha boundaries
- This is a prerelease for explicit testers. Normal stable upgrades continue to
select v0.9.0. - Public relay availability and OAuth provider policy are operational services,
separate from installing the package. - Google OAuth may remain limited by the provider's testing/publication policy.
- Pairing and OAuth never grant native agent access by themselves. The receiving
endpoint still enforces its local policy and the user verifies the actual agent
response. - The completed evidence covers independent Linux/macOS tests, actual public WSS
pairing, replay rejection, live revocation, real agent ACKs, watchdog recovery,
a KR reboot and an isolated backup restore. The interrupted soak is not claimed
as a 24-hour pass. - Windows retains local and SSH support; the optional receiver/relay runtime is
Unix-only.
Report bugs through GitHub issues and security problems through the repository's
private advisory channel. Do not include tokens, device keys, certificates,
session IDs or conversation content in reports.