Repository navigation
feat(deploy): make the edge dashboard the Agent session host - #19
Conversation
The SDK pinned Claude Code 2.1.278, and the API now refuses current models below 2.1.280, so every Claude turn failed with a 400. 0.3.302 ships Claude Code 2.1.302. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019aNLCPRnTShag1gmMkfSeF
…hing to do The sticky bar stayed on the main Settings page with "No unsaved changes" and a disabled Save button, covering the content beneath it on a phone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019aNLCPRnTShag1gmMkfSeF
The Cloudflare deployment had no session host: its capacity command knew only the maintenance policy, sessions needed systemd, and no provider CLI was on the controller's PATH. New session showed an empty provider list and "Shared host capacity is unavailable". - wolfstar-host-capacity admits sessions: capacity, reserve, bind, reconcile, release, cancel, and completed, against the slot policy and free memory. A bound reservation names its helper by PID and start time. - A process host runs each session helper as a detached process group where there is no systemd. The helper proves its identity from the same unit record. - The Container turns Agent sessions on by default, names the host Edge, and puts the managed tools on PATH. Claude Code sessions use the CLI the Agent SDK ships. - The Worker sends WebSocket upgrades through the Durable Object fetch, because a terminal stream cannot cross RPC. - The Sessions page says when no provider is installed, and the Hosts panel uses the host's own name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019aNLCPRnTShag1gmMkfSeF
|
Architecture Inside the changed components — 2 viewsComponent view — Edge WebSocket tunnel WebSocket upgrade tunneling through Cloudflare Edge Worker and Durable Object container fetch Component view — Terminal process host & admission Interactive session reservation, detached process host, and capacity tracking without systemd Data flow The other flows — 1 sequence
Review ✨ Nothing flagged · reviewed Tip After a push, tick Redraw to draw the latest commit 🪧 More tips
Thanks for using PR Lens! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out on X, Bluesky, Mastodon, Reddit or LinkedIn |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
The It also fails now and then on my machine against this branch (1 run in 3), and I re-ran the failed job once. If it fails again I will treat it as real and look further. Generated by Claude Code |
🔗 Linked issue
None. Issues are disabled on this repository.
❓ Type of change
📚 Description
On the Cloudflare deployment, every Claude turn failed with a 400 ("Claude Code 2.1.278 does not support this model"), New session showed an empty provider list with "Shared host capacity is unavailable", and the Settings action bar sat over the page with nothing to do. The edge had no Agent session host: its capacity command only knew the maintenance policy, sessions needed systemd, and no provider CLI was on the controller's PATH.
@anthropic-ai/claude-agent-sdkmoves from 0.3.278 to 0.3.302, which ships Claude Code 2.1.302. The API refuses current models below 2.1.280.container/wolfstar-host-capacitynow answers the terminal commands (capacity,reserve,bind,reconcile,release,cancel,completed) against the slot policy and free memory. A bound reservation names its helper by PID and start time, so a reused PID never passes for a live session. There is no manual override on a single-account host.src/terminal-process-host.tsstarts each session helper as a detached process group where there is no systemd, and the helper proves its identity from the same unit record. Hogwild keeps systemd.server.agent_sessionsin Settings still turns them off), the host is named Edge, the managed tools are on PATH, and Claude Code sessions run the CLI the SDK ships.fetch, because a terminal stream cannot cross RPC.A restart or a deploy of the Container ends every session, and the Sessions page shows it as interrupted.
Generated by Claude Code