Central control system for AI-native streaming with automated cinematography and real-time visualization.
Forge Studio Control Room is the orchestration hub that coordinates:
- OBS automation (scene switching, zoom, transitions)
- Real-time overlays (thinking blocks, tool calls, git status, file tracking)
- Development activity monitoring (terminal, Neovim, git)
- AI reasoning extraction (Claude API, local LLM)
- Mandrel context integration
- Automatic git commit detection and visualization
- Node.js 18+ installed
- OBS Studio with WebSocket Server enabled (Tools → WebSocket Server Settings, Port: 4455)
# Install dependencies
npm install
# Start development server
npm run dev
# Or build and run production
npm run build
npm startServer URLs:
- Control Server:
http://localhost:8000 - Dashboard:
http://localhost:8000/dashboard - Health Check:
http://localhost:8000/api/health
Edit .env file to customize:
PORT=8000 # Server port
OBS_HOST=localhost # OBS WebSocket host
OBS_PORT=4455 # OBS WebSocket port
OBS_PASSWORD= # OBS password (if set)
LOG_LEVEL=info # Logging level✅ OBS Integration
- Connect to OBS WebSocket
- Switch scenes programmatically
- Auto-reconnection on disconnection
- Get scene list and current scene
✅ Real-time Communication
- Socket.io server for browser overlays
- Event broadcasting to all clients
- Client identification and tracking
- Connection monitoring
✅ Dashboard UI
- Real-time OBS status
- Scene switching controls
- Event log with timestamps
- Connection status indicators
✅ RESTful API
- Health check endpoint
- Scene management endpoints
- OBS status endpoint
forge-studio/
├── src/
│ ├── server.ts # Main Express + Socket.io server
│ ├── controllers/
│ │ ├── ObsController.ts # OBS WebSocket wrapper
│ │ └── SocketManager.ts # Socket.io communication
│ ├── config/
│ │ └── config.ts # Configuration management
│ ├── types/
│ │ ├── events.ts # Socket.io event types
│ │ ├── config.ts # Config types
│ │ ├── obs.ts # OBS types
│ │ └── index.ts # Type exports
│ └── utils/
│ └── logger.ts # Winston logger
├── public/
│ ├── dashboard/ # Control dashboard UI
│ │ ├── index.html
│ │ ├── style.css
│ │ └── script.js
│ └── overlays/ # (Future: Browser source overlays)
├── tests/
│ ├── socket-client-test.html # Socket.io test client
│ └── obs-test-instructions.md # Testing guide
├── docs/
│ ├── FSCR-ARCHITECTURE.md # Architecture diagram
│ ├── FORGE-STUDIO-MASTER-PLAN.md # Master plan
│ └── PHASE-1-COMPLETION-REPORT.md # Phase 1.1 report
└── dist/ # Compiled JavaScript
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/health |
Server health check |
| GET | /api/obs/status |
OBS connection status |
| GET | /api/obs/scenes |
List all OBS scenes |
| GET | /api/obs/scene/current |
Get current active scene |
| POST | /api/obs/scene/switch |
Switch to specific scene |
# Get scene list
curl http://localhost:8000/api/obs/scenes
# Switch scene
curl -X POST http://localhost:8000/api/obs/scene/switch \
-H "Content-Type: application/json" \
-d '{"sceneName": "Scene 2"}'# Type checking
npm run type-check
# Build TypeScript
npm run build
# Linting
npm run lint
# Run tests
npm testSee tests/obs-test-instructions.md for comprehensive testing guide.
Quick tests:
- Open dashboard:
http://localhost:8000/dashboard - Open test client:
http://localhost:8000/tests/socket-client-test.html - Switch scenes and verify real-time updates
✅ Phase 1.1 Complete - Foundation & Control Server
Next: Phase 1.2 - Monitor Integrations (Neovim, Terminal, Git)
- Master Plan:
docs/FORGE-STUDIO-MASTER-PLAN.md - Architecture:
docs/FSCR-ARCHITECTURE.md - Phase 1.1 Report:
docs/PHASE-1-COMPLETION-REPORT.md - Test Guide:
tests/obs-test-instructions.md
- Runtime: Node.js 18+
- Language: TypeScript 5.3
- Server: Express 4.18
- Real-time: Socket.io 4.6
- OBS: obs-websocket-js 5.0
- Logging: Winston 3.11
MIT