A macOS helper application that integrates with Bitfocus Companion / Stream Deck to control Keynote and PowerPoint presentations remotely.
- grab a package from releases or build from source
# Clone the repository
git clone <repository-url>
cd UPC
# Install dependencies
npm install
# Start the application
npm start- Launch the app - A tray icon will appear in your menu bar
- Select folder - Right-click the tray icon and choose "Select Folder" to pick a directory containing your presentation files (.key, .pptx, .ppt)
- Note the auth token - Check the console output for the authentication token (8-character code)
The WebSocket server runs on localhost:8765 and requires authentication using the generated token.
First, authenticate with the server:
{
"type": "auth",
"token": "your-8-char-token"
}// List all presentation files in the selected folder
{ "type": "listFiles" }
// Open a specific presentation file
{ "type": "openFile", "filePath": "/path/to/presentation.key" }// Start slideshow
{ "type": "start" }
// Stop slideshow
{ "type": "stop" }
// Navigate slides
{ "type": "next" }
{ "type": "prev" }
// Get current status
{ "type": "status" }
// Test connection
{ "type": "ping" }All responses include a type field. Common response types:
authResult- Authentication responsestatus- Current presentation statusfileList- Available presentation filescommandResult- Result of a command executionerror- Error message
- Full AppleScript support
- Start/stop slideshow
- Navigate slides (next/prev/goto)
- Get slide count and current position
- Extract presenter notes
- AppleScript support
- Start/stop slideshow
- Navigate slides
- Get slide count and current position
- Notes extraction
- Main Process (
src/main/main.js) - Electron app entry point and tray UI - WebSocket Server (
src/main/websocket-server.js) - Handles Companion communication - Presentation Manager (
src/managers/presentation-manager.js) - Routes commands to appropriate drivers - File Manager (
src/managers/file-manager.js) - Handles presentation file discovery and management - Keynote Driver (
src/drivers/keynote-driver.js) - AppleScript automation for Keynote - PowerPoint Driver (
src/drivers/powerpoint-driver.js) - AppleScript automation for PowerPoint
MIT License - See LICENSE file for details.