Browser Automation + Virtual AV Devices for Video Call System
Budget: $750 – $1,500 USD
Overview
Extend an existing Go HTTP server that manages FaceTime call links. The server already
handles link creation and call management via REST API. You will add:
1. Browser automation — Join video call links in Chrome/Safari
2. Virtual camera + microphone — OS-level devices for the browser to use
3. New API endpoints — Integrate your work into the existing server
4. Compatibility fixes — Update existing code for latest macOS
---
Existing System (Provided)
A Go/Gin HTTP server running on macOS that exposes:
- POST /link/new — Creates a call link, returns URL
- POST /link/join — Host joins the call
- POST /link/admit — Approves pending join requests
- POST /link/leave — Host disconnects
- GET /status — Server health check
Note: The existing codebase was built for macOS 13. The new Liquid Glass UI in macOS 26
has significant layout changes that will require updating the automation scripts.
---
Environment Required
- Mac (Apple Silicon), macOS 26 with Liquid Glass
- Willing to enable Accessibility / Screen Recording permissions
- Second Apple device or Apple ID to receive test calls
---
Milestone 0 – Fix Existing Functionality for macOS 26
Before adding new features:
1. Test all existing endpoints on macOS 26
2. Identify automation that fails due to Liquid Glass UI changes
3. Update scripts to work reliably with new layouts
4. Document what changed
---
Milestone 1 – Browser Joins Call via Web Link
Add functionality so that when a link is created:
1. The link opens in Chrome (or Safari) on the same Mac
2. Browser fills a provided name (e.g., "Demo") in the join form
3. Browser selects specified camera/microphone devices
4. Browser clicks "Join"
5. Returns success/failure to the calling code
This should integrate with the existing server as a new endpoint like POST /browser/join
or a callable module.
Must handle:
- Waiting for page elements to load
- Browser permission prompts for camera/mic access
- Timeouts and error states
---
Milestone 2 – Virtual Camera + Microphone Relay
Create OS-level virtual AV devices:
1. Virtual Camera ("Demo Virtual Camera") visible to Chrome as a video input
2. Virtual Microphone ("Demo Virtual Mic") visible to Chrome as an audio input
3. Relay process that forwards from a configurable source:
- Video: built-in webcam, test pattern, or video file
- Audio: built-in mic, test tone, or audio file
4. Browser automation from Milestone 1 should select these virtual devices
Implementation options:
- OBS Virtual Camera + BlackHole/Loopback for audio (simpler)
- Custom CoreMediaIO DAL plugin + HAL audio plugin (more control)
---
Milestone 3 – Add Participant + Orchestration Endpoint
Create a single endpoint that runs the full flow:
POST /start-call
{
"target": "+1XXXXXXXXXX",
"name": "Demo"
}
This endpoint should:
1. Create a new call link (existing)
2. Open browser and join via web (Milestone 1)
3. Approve the browser's join request (existing)
4. Add the target phone number/Apple ID to the call
5. Wait for the target to connect
6. Host leaves, browser participant + callee remain connected
7. Return status/logs
---
Deliverables
- Fixes for existing endpoints on macOS 26
- Browser automation module integrated into the Go server
- Virtual device setup (installer scripts or documentation)
- AV relay application with configurable sources
- New /start-call orchestration endpoint
- Updated documentation
---
In Your Proposal, State:
- Confirm you have macOS 26 (Liquid Glass)
- Tools for browser automation (Puppeteer/Playwright/AppleScript, Chrome vs Safari)
- Virtual device approach (OBS-based vs custom plugins)
- How you'll make automation robust (element waits, permission handling)
- Confirmation you have:
- Mac with Apple ID
- Second device/Apple ID for receiving test calls
- Relevant experience with macOS development or browser automation
---
Extend an existing Go HTTP server that manages FaceTime call links. The server already
handles link creation and call management via REST API. You will add:
1. Browser automation — Join video call links in Chrome/Safari
2. Virtual camera + microphone — OS-level devices for the browser to use
3. New API endpoints — Integrate your work into the existing server
4. Compatibility fixes — Update existing code for latest macOS
---
Existing System (Provided)
A Go/Gin HTTP server running on macOS that exposes:
- POST /link/new — Creates a call link, returns URL
- POST /link/join — Host joins the call
- POST /link/admit — Approves pending join requests
- POST /link/leave — Host disconnects
- GET /status — Server health check
Note: The existing codebase was built for macOS 13. The new Liquid Glass UI in macOS 26
has significant layout changes that will require updating the automation scripts.
---
Environment Required
- Mac (Apple Silicon), macOS 26 with Liquid Glass
- Willing to enable Accessibility / Screen Recording permissions
- Second Apple device or Apple ID to receive test calls
---
Milestone 0 – Fix Existing Functionality for macOS 26
Before adding new features:
1. Test all existing endpoints on macOS 26
2. Identify automation that fails due to Liquid Glass UI changes
3. Update scripts to work reliably with new layouts
4. Document what changed
---
Milestone 1 – Browser Joins Call via Web Link
Add functionality so that when a link is created:
1. The link opens in Chrome (or Safari) on the same Mac
2. Browser fills a provided name (e.g., "Demo") in the join form
3. Browser selects specified camera/microphone devices
4. Browser clicks "Join"
5. Returns success/failure to the calling code
This should integrate with the existing server as a new endpoint like POST /browser/join
or a callable module.
Must handle:
- Waiting for page elements to load
- Browser permission prompts for camera/mic access
- Timeouts and error states
---
Milestone 2 – Virtual Camera + Microphone Relay
Create OS-level virtual AV devices:
1. Virtual Camera ("Demo Virtual Camera") visible to Chrome as a video input
2. Virtual Microphone ("Demo Virtual Mic") visible to Chrome as an audio input
3. Relay process that forwards from a configurable source:
- Video: built-in webcam, test pattern, or video file
- Audio: built-in mic, test tone, or audio file
4. Browser automation from Milestone 1 should select these virtual devices
Implementation options:
- OBS Virtual Camera + BlackHole/Loopback for audio (simpler)
- Custom CoreMediaIO DAL plugin + HAL audio plugin (more control)
---
Milestone 3 – Add Participant + Orchestration Endpoint
Create a single endpoint that runs the full flow:
POST /start-call
{
"target": "+1XXXXXXXXXX",
"name": "Demo"
}
This endpoint should:
1. Create a new call link (existing)
2. Open browser and join via web (Milestone 1)
3. Approve the browser's join request (existing)
4. Add the target phone number/Apple ID to the call
5. Wait for the target to connect
6. Host leaves, browser participant + callee remain connected
7. Return status/logs
---
Deliverables
- Fixes for existing endpoints on macOS 26
- Browser automation module integrated into the Go server
- Virtual device setup (installer scripts or documentation)
- AV relay application with configurable sources
- New /start-call orchestration endpoint
- Updated documentation
---
In Your Proposal, State:
- Confirm you have macOS 26 (Liquid Glass)
- Tools for browser automation (Puppeteer/Playwright/AppleScript, Chrome vs Safari)
- Virtual device approach (OBS-based vs custom plugins)
- How you'll make automation robust (element waits, permission handling)
- Confirmation you have:
- Mac with Apple ID
- Second device/Apple ID for receiving test calls
- Relevant experience with macOS development or browser automation
---