backnotprop / backnotprop/plannotator

Remote and multi-session session router: URL surfacing, decision receipt, and host launch behavior

Open
#899 0 comments 0 reactions 0 assignees View on GitHub
triage
Dominant language
TypeScript
Stars
8.7k
Forks
649
Avg merge
11h 12m
Merged PRs (30d)
109

Description

Provenance stamp: This issue was triaged on June 13, 2026 as part of the older-than-two-month GitHub issue triage exercise.

Source issues: #102, #154, #158, #192, #518

## Summary

Several old issues point at the same underlying problem: Plannotator still needs a dependable session router for users who run multiple agent sessions, remote sessions, non-interactive commands, or host environments that cannot open a normal browser tab.

The common requirement is not only "open a URL." The requirement is that the right plan or review session is visible, reachable, and connected back to the agent process that is waiting for the user's decision.

## What the source issues requested

- #102 requested support for concurrent Claude Code sessions without fixed-port conflicts. It suggested either a port list/range or a single UI that can multiplex active plans.
- #154 reported that `plannotator review` launched from a Claude Code skill could start the server but fail to open the browser in a non-TTY environment. It asked for browser opening to be reliable or for the URL to be printed in a way the caller can use.
- #158 requested a multi-instance daemon that can collect plans from many Claude sessions, show which sessions are waiting, replace repeated plans from the same session, and avoid disruptive popups.
- #192 requested a usable remote workflow for SSH and cloud sessions, including a local-browser URL and a safe return path from the browser decision to the original waiting session.
- #518 reported host-specific behavior with cmux, where Plannotator opened a new small pane instead of a useful tab and did not auto-close correctly.

## Triage determination

These are one product area. Treating them separately would lead to partial fixes that help one host but leave the core session-lifecycle problem intact. The replacement issue should track a router-level design that covers local, remote, multi-session, and host-specific launch behavior.

## Acceptance criteria

- One long-lived Plannotator runtime can host multiple active plan, review, and annotate sessions.
- Each session has a stable identity that includes enough context to prevent approving the wrong waiting agent process.
- Remote sessions expose a usable URL through the best available host channel.
- A browser decision returns a clear receipt such as `applied to waiting session`, `stale plan`, or `session no longer waiting`.
- Non-TTY and skill-launched commands expose a useful URL instead of silently relying on browser launch.
- Repeated plans from the same agent session update or replace the prior waiting session instead of opening confusing duplicate views.
- Host launch policy is explicit for browser, Glimpse, VS Code, cmux, SSH, headless, and no-browser environments.
- The old source issues can be closed after this issue is created and their specific requirements are represented here.

## Notes

Related implementation work already exists around the daemon and router. This issue should stay focused on the user-visible contract and decision handoff, not on preserving any particular internal server shape.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.