Applications that connect OBS Studio to a central website for remote control.
- π Python Bridge - Cross-platform command-line tool (Setup Guide)
- π macOS App - Native macOS application (Bridge Documentation)
- πͺ Windows App - Native Windows 11 application (Windows Documentation) A complete system for scheduling and remotely controlling OBS (Open Broadcaster Software) recording sessions. This monorepo contains multiple interconnected applications that work together to provide a comprehensive OBS remote control and scheduling solution.
βββββββββββββββ WebSocket ββββββββββββββββββββ
β Website β ββββββββββββββββββββββββββΊ β OBS Bridge β
β (Server) β (Bridge initiates) β (Your Platform) β
βββββββββββββββ ββββββββββ¬ββββββββββ
β
β Local
β WebSocket
β
ββββββΌββββββ
β OBS β
β Studio β
ββββββββββββ
This system allows you to:
- **Schedule OBS recording sessions** through a web interface
- **Remotely control OBS instances** from anywhere via WebSocket
- **Manage multiple OBS installations** from a central control panel
- **Administer bookings, users, and schedules** through an admin dashboard
## π¦ Project Structure
This repository contains five main components:
### 1. **Bridge** (`/bridge`)
A **native macOS application** that connects OBS Studio to the central server for remote control.
**Tech Stack:** Swift, SwiftUI, macOS 13.0+
**Features:**
- Native macOS interface with real-time status indicators
- Secure credential storage
- Auto-connect on startup
- Activity logging
- Settings panel for easy configuration
**Getting Started:**
```bash
cd bridge
open OBSBridge.xcodeproj
# Build and run in Xcode (βR)
π Full Documentation | Quick Start Guide
- β Connects OBS to your website (outbound connection, firewall friendly)
- β Remote control OBS from anywhere
- β Real time event streaming (scene changes, streaming status, etc.)
- β Supports multiple OBS commands
- β Automatic reconnection handling
- β Secure password authentication
- β Native applications for macOS and Windows with GUI
- β Cross-platform Python CLI version
π Windows Quick Start Guide
π Continue reading below for Python setup
A NestJS-based backend that provides WebSocket and REST APIs for controlling OBS instances.
Tech Stack: NestJS, TypeScript, WebSocket, Express
Features:
- WebSocket server for OBS client connections
- REST API for sending commands to OBS
- Client registration and management
- Automatic health checks (ping every 30s)
- Event handling from OBS
- Demo control panel included
Getting Started:
cd server-api
npm install
npm run start:dev
# Server runs on http://localhost:8000Key Endpoints:
ws://localhost:8000/obs- WebSocket endpointGET /api/clients- List connected clientsPOST /api/command/:clientId- Send command to specific clientPOST /api/action/:clientId/:action- Quick actions (start-stream, stop-stream, etc.)GET /health- Health check
π Full Documentation
A React-based user interface for browsing schedules and booking recording sessions.
Tech Stack: React, TypeScript, Vite, Tailwind CSS, shadcn/ui
Features:
- Interactive calendar for date selection
- Available time slot browsing
- OBS instance and scene selection
- Responsive design with dark/light mode
- User profile management
Getting Started:
cd frontend
npm install
npm run dev
# Open http://localhost:5173π Full Documentation
A Next.js admin dashboard for managing bookings, users, schedules, and OBS instances.
Tech Stack: Next.js 14, TypeScript, React, Tailwind CSS, shadcn/ui
Features:
- Booking management interface
- User administration
- Schedule configuration
- OBS instance monitoring
- Settings management
Getting Started:
cd admin-panel
npm install
npm run dev
# Open http://localhost:3000π Full Documentation
A Python-based alternative bridge for cross-platform OBS connectivity.
Tech Stack: Python 3.7+, obs-websocket-py
Features:
- Cross-platform support (Windows, macOS, Linux)
- Command-line interface
- Automatic reconnection
- Configuration via
.envfile
Getting Started:
# Install dependencies
pip install -r requirements.txt
# Configure
cp .env.example .env
# Edit .env with your settings
# Run
python obs_bridge.pyπ See Python Bridge Configuration below for details
Get the entire system running in 5 minutes! See QUICKSTART.md for detailed instructions.
- OBS Studio 28+
- Node.js 18+
- Python 3.7+ (for Python bridge)
- macOS 13+ (for native bridge app)
-
Enable OBS WebSocket:
- Open OBS β Tools β WebSocket Server Settings
- Enable WebSocket server, set password, note port (4455)
-
Start the API Server:
cd server-api npm install && npm run start:dev
-
Connect a Bridge:
Option A - Python Bridge:
# Configure .env with OBS settings python obs_bridge.pyOption B - macOS Native App:
cd bridge open OBSBridge.xcodeproj # Build and configure in Xcode
-
Open Control Panel:
http://localhost:8000
ββββββββββββββββββββ REST/WS ββββββββββββββββββββ
β Admin Panel β ββββββββββββββββββββββββββΊβ β
β (Next.js) β β API Server β
ββββββββββββββββββββ β (NestJS) β
β β
ββββββββββββββββββββ REST/WS β Port: 8000 β
β Frontend β ββββββββββββββββββββββββββΊβ β
β (React) β β WebSocket: /obs β
ββββββββββββββββββββ ββββββββββ¬ββββββββββ
β
β WebSocket
ββββββββββββ΄βββββββββββ
β β
βββββββββββΌβββββββ βββββββββββΌβββββββ
β Bridge β β Bridge β
β (macOS/Python)β β (macOS/Python)β
ββββββββββ¬ββββββββ ββββββββββ¬ββββββββ
β β
β Local WS β Local WS
β β
ββββββββΌβββββββ ββββββββΌβββββββ
β OBS Studio β β OBS Studio β
β Instance 1 β β Instance 2 β
βββββββββββββββ βββββββββββββββ
Python Bridge (.env):
OBS_HOST=localhost
OBS_PORT=4455
OBS_PASSWORD=your-password
WEBSITE_URL=ws://localhost:8000/obs
CLIENT_ID=obs-client-1Server API:
PORT=8000- Open OBS Studio
- Tools β WebSocket Server Settings
- Enable WebSocket server
- Set password and note port (default: 4455)
- Apply settings
Send commands via REST API or WebSocket:
Common Commands:
StartStreaming- Start streamingStopStreaming- Stop streamingStartRecording- Start recordingStopRecording- Stop recordingGetStreamingStatus- Get current statusGetSceneList- List all scenesSetCurrentScene- Switch scene
Example:
curl -X POST http://localhost:8000/api/action/my-client/start-streamSee server-api/README.md for complete API documentation.
# Root dependencies (example server)
npm install
# Server API
cd server-api && npm install
# Frontend
cd ../frontend && npm install
# Admin Panel
cd ../admin-panel && npm install
# Python bridge
pip install -r requirements.txtEach project has its own development server. Open separate terminals:
# Terminal 1 - API Server
cd server-api && npm run start:dev
# Terminal 2 - Frontend
cd frontend && npm run dev
# Terminal 3 - Admin Panel
cd admin-panel && npm run dev
# Terminal 4 - Python Bridge
python obs_bridge.py# Test OBS connection
cd bridge && ./test-obs-connection.sh
# Server API tests
cd server-api && npm run test
# Frontend tests
cd frontend && npm run testThe Python bridge (obs_bridge.py) provides cross-platform OBS connectivity.
Installation:
pip install -r requirements.txtConfiguration:
cp .env.example .env
# Edit .env with your OBS and server settingsUsage:
python obs_bridge.pyFeatures:
- Cross-platform (Windows, macOS, Linux)
- Automatic reconnection
- Event forwarding
- Command execution
- Secure authentication
Bridge can't connect to OBS:
- Ensure OBS is running
- Verify WebSocket is enabled in OBS settings
- Check password and port in configuration
API server not starting:
- Check if port 8000 is available
- Install dependencies:
npm install - Check Node.js version (18+)
Frontend/Admin panel won't load:
- Verify API server is running
- Check browser console for errors
- Clear browser cache
See individual project READMEs for detailed troubleshooting.
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT
For issues and questions:
- Check project-specific READMEs in each folder
- Review QUICKSTART.md for setup help
- Review TROUBLESHOOTING.md for common issues