Skip to content

feat(portal): browser terminal into 24/7 tmux Claude Code session#15

Merged
jonathanpeterwu merged 3 commits into
mainfrom
claude/stackmemory-portal-setup-bFRZt
Jun 8, 2026
Merged

feat(portal): browser terminal into 24/7 tmux Claude Code session#15
jonathanpeterwu merged 3 commits into
mainfrom
claude/stackmemory-portal-setup-bFRZt

Conversation

@jonathanpeterwu

Copy link
Copy Markdown
Collaborator

Self-hosted portal that streams a persistent tmux Claude Code session to
the browser over Socket.io + node-pty, designed to run on a small VPS
behind Tailscale.

  • PortalServer (Express + Socket.io + node-pty) attaching to
    tmux new-session -A so the agent survives browser/portal restarts
  • Token auth (auto-generated, 0600) gating both page + WS handshake
  • Embedded xterm.js UI (no build step, ships in dist)
  • stackmemory portal start|status|stop|token CLI
  • Hetzner cloud-init, setup.sh, and systemd unit for 24/7 operation
  • docs/guides/PORTAL.md walkthrough

https://claude.ai/code/session_01Gk8DiqCeG9uMaWT9RprwP1

claude added 3 commits June 8, 2026 03:05
Self-hosted portal that streams a persistent tmux Claude Code session to
the browser over Socket.io + node-pty, designed to run on a small VPS
behind Tailscale.

- PortalServer (Express + Socket.io + node-pty) attaching to
  tmux new-session -A so the agent survives browser/portal restarts
- Token auth (auto-generated, 0600) gating both page + WS handshake
- Embedded xterm.js UI (no build step, ships in dist)
- stackmemory portal start|status|stop|token CLI
- Hetzner cloud-init, setup.sh, and systemd unit for 24/7 operation
- docs/guides/PORTAL.md walkthrough

https://claude.ai/code/session_01Gk8DiqCeG9uMaWT9RprwP1
A knowledge layer every agent (Claude, Codex, OpenCode, Hermes) reads from
and writes to. Each experiment/decision/insight is recorded with a summary
and conclusion, scoped to a repo (projectId) and org (workspaceId), so
mutual thinking compounds across tools and machines.

- BrainStore: local SQLite store (record/recall/supersede), repo+org scoped
- BrainSync: isolated online push/pull (newest-wins, offline-safe) reusing
  the Provenant auth/endpoint — never touches the frame CloudSyncEngine
- stackmemory brain record|recall|list|show|sync|status CLI
- openBrain() resolves scope/db/auth like stackmemory sync
- 14 tests (store scoping, supersede, upsert, sync cursor, conflict, offline)
- docs/guides/BRAIN.md

Agents connect by shelling out to the CLI, matching the existing
Codex/OpenCode/Hermes wrapper integration model.

https://claude.ai/code/session_01Gk8DiqCeG9uMaWT9RprwP1
A meta-orchestration layer one level above a single goal. A VISION.md
(north-star mission + guardrails + ordered objectives + hard limits) drives
a bounded loop that draws work from BOTH the objectives and a monitored
signal inbox, delegates one item per tick to the conductor, and records the
outcome to the shared brain so thinking compounds.

- vision-file: parse/scaffold VISION.md, toggle objective checkboxes
- signals: JSONL inbox for the monitored source (bugs, CI, issues)
- vision-loop: select (signals outrank objectives) -> guardrail-gate ->
  brain-dedupe (no repeats) -> delegate (injected) -> record -> mark done
- guardrails: maxIterations, maxIterationsPerDay, consecutive-failure circuit
  breaker, requireApproval, daily-resetting persisted state
- stackmemory conductor vision init|status|signal|plan|run
- run is plan-only unless --delegate-cmd is given (anti-haywire default)
- 13 tests; docs/guides/VISION.md

https://claude.ai/code/session_01Gk8DiqCeG9uMaWT9RprwP1
@jonathanpeterwu jonathanpeterwu merged commit 4680084 into main Jun 8, 2026
2 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants