2Collab is a self-hosted coordination surface for solo developers and 1-3 person teams working with local coding agents. The shared service coordinates work, authority, evidence, and integrations; trusted developer machines execute agent runtimes locally.
This repository contains substantial local implementations of Foundation, GitHub coordination, Outline collaboration, and bounded automation. It is not yet a production-complete v1: local tests and fixture journeys are implementation proof, while the two-machine/seven-day Foundation observation and provider-backed GitHub, Outline, and real-PR automation exits remain external acceptance obligations.
Read these documents in order:
- Documentation entry point
- Decision precedence
- Canonical Product Spec
- System architecture
- Domain model
- Execution authority
- Security model
- UX foundation and mockups
- Acceptance matrix
- Master implementation plan
- Implementation handoff
The Product Spec is canonical. Derived guidance, plans, ADRs, mockups, and code must not silently override it.
src/servercontains the import-safe Hono service, coordination modules, connector adapters, authority enforcement, and durable workflow services.src/clicontains the localcollabcommand entry point.src/sharedcontains stable cross-entry-point types and metadata.src/webcontains the React application and source-owned shadcn/ui components.docscontains the canonical specification, derived architecture, accepted decisions, UX evidence, acceptance criteria, and implementation plans.testscontains unit, integration, protocol, runner, drill, and browser journeys. Passing fixtures never promote a live acceptance row.scriptscontains portable Bun-based contributor and release checks.
- Bun 1.3.10
- Docker with Compose v2 for the container path
- Chromium installed through Playwright for browser verification
bun ci
bun run devThe web development server binds to 127.0.0.1. The coordination server also defaults to loopback in development.
Useful checks:
bun run format:check
bun run lint
bun run typecheck
bun run test
bun run build
bunx playwright install chromium
bun run test:e2e
bun run audit:publicbun run build:cli produces a binary for the current operating system and architecture. Do not treat that host-native output as a portable release artifact.
Evidence validators are available through bun run evidence:verify, bun run github:evidence:validate, bun run outline:evidence:validate, and bun run automation:evidence:validate. Live promotion additionally requires a clean, exact-revision evidence envelope with artifact, lockfile, manifest, report, and reviewer provenance.
The exact configuration gate is self-contained and does not require secrets:
docker compose config --quietBefore starting the container, copy the example environment, replace the session secret with at least 32 random characters, and create the configured secret files. Empty/default configuration values make inspection possible but remain invalid at runtime:
cp .env.example .env
docker compose up --buildCompose publishes the service on 127.0.0.1:3210 by default and stores future service state in the collab-data named volume. Set COLLAB_BIND_HOST deliberately if an ingress design requires another bind address. Tailscale Serve and Cloudflare Tunnel can normally reach the loopback default without exposing the port on every host interface.
Check the service:
curl --fail http://127.0.0.1:3210/healthzNative and Orca runners execute as their machine owner. Unless a future execution adapter provides enforceable isolation, repository restrictions are ADVISORY, not a sandbox guarantee. The server never receives developer git credentials, arbitrary executable commands, interactive terminal traffic, or durable raw agent transcripts.
Report vulnerabilities privately as described in SECURITY.md.
Read CONTRIBUTING.md and AGENTS.md before changing behavior. Contributions should be test-first, narrowly scoped, and backed by exact verification evidence.
2Collab is available under the MIT License.