Web Development
Setup
Prerequisites
- Node.js 22.12+
- Bun 1.0+
- pnpm 8+
Install & Run
Project Structure
Server Development
Core Services
| Service | File | Purpose |
|---|---|---|
| PtyManager | server/pty/pty-manager.ts | PTY lifecycle + input/resize |
| SessionManager | server/pty/session-manager.ts | On-disk session metadata + stdout/stderr paths |
| TerminalManager | server/services/terminal-manager.ts | Server-side terminal state + VT snapshots |
| CastOutputHub | server/services/cast-output-hub.ts | Stdout tail + pruning (lastClearOffset) |
| GitStatusHub | server/services/git-status-hub.ts | Git status updates for sessions |
| WsV3Hub | server/services/ws-v3-hub.ts | Unified WebSocket v3 transport (/ws) |
API Routes
- HTTP:
/api/...(sessions, git, config, worktrees) - WebSocket:
/ws(binary v3 framing; seedocs/websocket.md)
PTY Management
Client Development
Lit Components
WebSocket Client
Terminal Integration
Build System
Development Build
Production Build
Bun Compilation
Testing
Unit Tests
E2E Tests
Performance
Optimization Techniques
| Technique | Implementation | Impact |
|---|---|---|
| Multiplexed transport | /ws WebSocket v3 framing | One socket for all sessions |
| Snapshot previews | VT snapshot v1 (SNAPSHOT_VT) | Fast previews / hard resync |
| Virtual scrolling | ghostty-web scrollback | Handles 100K+ lines |
| Service worker | Cache static assets | Instant load |
Benchmarks
Debugging
Server Debugging
Client Debugging
Common Issues
| Issue | Solution |
|---|---|
| CORS errors | Check server CORS config |
| WebSocket fails | Verify port/firewall |
| Terminal garbled | Check encoding (UTF-8) |
| Build fails | Clear node_modules |