Skip to content

Ship a Docker self-host image - #141

Merged
badcuban merged 1 commit into
mainfrom
feat/docker-self-host
Aug 10, 2026
Merged

Ship a Docker self-host image#141
badcuban merged 1 commit into
mainfrom
feat/docker-self-host

Conversation

@badcuban

Copy link
Copy Markdown
Collaborator

Ship a Docker self-host image and fix what testing it exposed

The article-of-record audience runs orchestrators on VPSes and homelabs;
Threadlines could already serve them headless but had no packaged way to
do it. docker/Dockerfile builds a service appliance from the published
npm package: Claude Code and Codex CLIs baked in, tini for agent process
trees, non-root user, home volume for data and provider credentials,
/workspace for repos, healthcheck, and auto-bootstrap disabled (a
service must not mint a project from its own working directory).
docker/README.md is the two-command operator guide.

Two fixes fell out of the cold-user verification:

  • THREADLINES_ADVERTISED_HOST: startup URLs advertised the container's
    internal address, which no client can reach. An operator-set host now
    wins over interface resolution.

  • effect PubSub patch: every abrupt websocket disconnect logged "Failed
    to publish disconnected-session auth update" with a TypeError from
    inside effect's PubSub - an interrupted poller leaves an undefined
    hole in the pollers list and the publish path dereferences it. The
    patch skips holes. Reproduced deterministically (pair, open app, kill
    the browser context), clean after; upstream report worth filing.

The article-of-record audience runs orchestrators on VPSes and homelabs;
Threadlines could already serve them headless but had no packaged way to
do it. docker/Dockerfile builds a service appliance from the published
npm package: Claude Code and Codex CLIs baked in, tini for agent process
trees, non-root user, home volume for data and provider credentials,
/workspace for repos, healthcheck, and auto-bootstrap disabled (a
service must not mint a project from its own working directory).
docker/README.md is the two-command operator guide.

Two fixes fell out of the cold-user verification:

- THREADLINES_ADVERTISED_HOST: startup URLs advertised the container's
  internal address, which no client can reach. An operator-set host now
  wins over interface resolution.

- effect PubSub patch: every abrupt websocket disconnect logged "Failed
  to publish disconnected-session auth update" with a TypeError from
  inside effect's PubSub - an interrupted poller leaves an undefined
  hole in the pollers list and the publish path dereferences it. The
  patch skips holes. Reproduced deterministically (pair, open app, kill
  the browser context), clean after; upstream report worth filing.
@vercel

vercel Bot commented Aug 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
threadlines Ready Ready Preview Aug 10, 2026 6:53pm

Request Review

@github-actions github-actions Bot added size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 10, 2026
@badcuban
badcuban merged commit d46b290 into main Aug 10, 2026
15 checks passed
@badcuban
badcuban deleted the feat/docker-self-host branch August 10, 2026 19:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant