You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Single daemon process per machine manages session lifecycle, serves
browser UIs at /s/<sessionId>, and exposes control APIs. CLI commands
auto-start the daemon and create sessions via HTTP. Includes session
store, auth tokens, lock files, event broadcasting, and goal-setup
daemon integration.
@@ -99,6 +100,8 @@ Plannotator has one server implementation:
99
100
100
101
Claude Code runs this server through the released `plannotator` binary entrypoint. OpenCode and Pi do not package their own server implementations; they call the same binary through the plugin protocol in `packages/shared/plugin-protocol.ts`. Runtime-agnostic logic (store, validation, types) lives in `packages/shared/`.
101
102
103
+
Daemon-backed commands run through one long-running `plannotator` process per user/machine environment. `plannotator daemon start|status|stop` manage that lifecycle, while normal plan/review/annotate/archive commands auto-start a compatible daemon and create session-scoped browser URLs at `/s/<sessionId>`. Browser API calls must use `/s/<sessionId>/api/...`; root `/api/...` routes are not a daemon session boundary.
104
+
102
105
## Installation
103
106
104
107
**Via plugin marketplace** (when repo is public):
@@ -216,6 +219,24 @@ During normal plan review, an Archive sidebar tab provides the same browsing via
216
219
217
220
## Server API
218
221
222
+
### Daemon Runtime (`packages/server/daemon/`)
223
+
224
+
The daemon is the single long-running Bun server used by normal plan/review/annotate/archive commands. It owns a session store and exposes browser sessions at `/s/<sessionId>`. Session browser APIs are scoped under `/s/<sessionId>/api/...`; root `/api/...` is not a valid daemon session API boundary.
Released binaries ship with SHA256 sidecars and [SLSA build provenance](https://slsa.dev/) attestations from v0.17.2 onwards. See the [installation docs](https://plannotator.ai/docs/getting-started/installation/#verifying-your-install) for version pinning and verification commands.
25
25
26
-
The released binary owns Plannotator's browser server runtime for Claude Code, OpenCode, and Pi. See [Single Binary Runtime](../../docs/single-binary-runtime.md) for the plugin client boundary and daemon-next design.
26
+
The released binary owns Plannotator's browser server runtime for Claude Code, OpenCode, and Pi. See [Single Binary Runtime](../../docs/single-binary-runtime.md) for the plugin client boundary and daemon runtime design.
27
27
28
28
---
29
29
@@ -84,6 +84,19 @@ When Claude Code calls `ExitPlanMode`, this hook intercepts and:
84
84
|`PLANNOTATOR_BROWSER`| Custom browser to open plans in. macOS: app name or path. Linux/Windows: executable path. |
85
85
|`PLANNOTATOR_SHARE_URL`| Custom share portal URL for self-hosting. Default: `https://share.plannotator.ai`. |
86
86
87
+
## Daemon Runtime
88
+
89
+
Plan, review, annotate, and archive sessions are created through one long-running `plannotator` daemon. Normal commands auto-start a compatible daemon when needed.
90
+
91
+
```bash
92
+
plannotator daemon status
93
+
plannotator daemon stop
94
+
plannotator daemon start
95
+
plannotator sessions
96
+
```
97
+
98
+
`daemon status` reports the daemon PID, endpoint, protocol version, and active session count. If the running daemon was started with different remote/port settings, stop it and retry with the desired `PLANNOTATOR_REMOTE` / `PLANNOTATOR_PORT` values.
99
+
87
100
## Remote / Devcontainer Usage
88
101
89
102
When running Claude Code in a remote environment (SSH, devcontainer, WSL), set `PLANNOTATOR_REMOTE=1` (or `true`) and these environment variables:
0 commit comments