Skip to content

Codev client on the t3code server: workspace/architect/builder tree, tiled builder panes, mobile and remote #146

Description

@pseudoseed

Goal

Replace Tower's PTY/terminal layer and the v2 client with a Codev client written against a self-hosted t3code server.

Codev keeps porch, protocols, gates, specs/plans/reviews, CMAP, and the architect/builder model. t3code provides process control, worktrees, interrupts, remote access, mobile, and multi-machine.

Wanted UI

  • Left sidebar tree: workspace → architects → that architect's builders, with live status on every row (working / turning / gated).
  • Tiled builder panes inside a workspace so 4-6 builders are visible at once, plus a pane for the architect.
  • Mobile pages through the same content rather than tiling.
  • Reachable from an iPad over the tailnet, served from a Mac or Mac Studio.
  • One client connected to more than one machine's server at once.

Verified before filing

  • Headless drive of a t3code session works: a 262-line Node client authenticated via OAuth token exchange, created a worktree-backed thread, started a turn, streamed typed events, and interrupted a running turn. SHOULD_NOT_FINISH never printed — a real process kill, not a simulated keystroke. Script and log at /Users/chris/dev/t3code-spike/.
  • Fully self-hosted. docs/internals/t3-connect.md: "T3 Connect is disabled in a fresh clone." Their Clerk relay is opt-in.
  • Remote access over a tailnet without cloud: npx t3 pair --tailscale.
  • Multi-environment connection from one client is documented.
  • MIT licensed.
  • Interrupted turns report session status ready, not interrupted. activeTurnId: null is the settled signal.

Not yet verified — gating this issue

  1. A thread surviving a long multi-turn protocol run with shell commands executed externally between turns.
  2. A porch gate: pausing a thread indefinitely, approving out of band, and resuming the same thread.
  3. Stability of the t3code RPC contract over time.

Known gaps t3code does not cover

  • No workspace/architect/builder tree. Its sidebar is a flat pinned thread list.
  • No tiling of multiple threads. Split view exists only for terminals within one thread.
  • No gate concept. Session status is starting/running/ready/settled; a builder blocked on plan-approval looks identical to one that finished. Porch would encode gate state via thread.meta.update title, thread.pin, and thread.activity.append.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/towerTower, afx, terminals, messagingspecApproved specification exists

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions