Built by @brotherxyz_ on X.
Music, microphone, and local listening — in one floating mixer.
macOS developer preview · Bun + TypeScript + Swift · MIT licensed
Get started · Walkthrough · FAQ · Roadmap
The actual Mac app. Mix stopped; sources muted.
Built for X Spaces hosts, co-hosts, and approved speakers who want music and voice controls within reach. Choose a music app, pick your mic and speakers or headphones, and manage the mix without leaving your conversation.
- Music on your terms. Capture one app, adjust its level, and keep voice separate.
- Devices you already use. Select your microphone and local output directly from the mixer.
- Deliberate sharing. Start with sources muted; stop audio with one clearly labeled action.
- A compact desktop companion. Drag, resize, and keep the panel above your other windows.
Developer preview: current code runs on macOS and requires OBS, BlackHole and developer tools. Windows support and signed installers are planned. This app does not create or join an X Space. Review the verification and security limits before testing.
- Windows and Mac installation plan
- Current Mac source setup
- Controls and daily walkthrough
- FAQ and troubleshooting
- Privacy and local data
- Security policy
- Contribute
- Public-release plan and checklist
| Control | What changes |
|---|---|
| Music | Level and mute for one selected app sent to the mix |
| Mic | Choose a physical microphone; adjust its level and mute in the mix |
| Local output | Choose speakers/headphones and adjust the Mac’s default output volume; local listening only |
| Music source picker | Retargets a CoreAudio process tap to another app |
| Setup | Selects a microphone and builds the Spaces Mixer scene collection in OBS |
The Mic and Local Output strip labels are device selectors. Stop sharing before changing the mic; it stays muted until you start sharing and deliberately unmute it. Local Output changes the Mac’s default listening device and uses that device’s existing volume. Display/digital outputs without software volume show “Use device volume.” See device selection.
It does not mix several independent music apps, route arbitrary device channels, or supply an X login/integration. Those are potential future features, not controls that exist today.
Music app → CoreAudio process tap → BlackHole 16ch ─┐
├→ OBS → BlackHole 2ch → browser microphone
Physical microphone ─────────────────────────────┘
The recorded working configuration uses Firefox for music and Brave for the Space. Keep music and the Space in separate browsers: echo cancellation can remove a browser's own playback. Capture targets an app's processes, including relevant child processes, rather than OBS's per-app capture; other music apps can be selected, but compatibility must be verified per app.
Who this is for: people already on the speaker panel as a host, co-host, or approved speaker. Setup assumes that speaking role is established. On your Mac, confirm that the client you use for the Space can select BlackHole 2ch as its microphone; that device-routing check is part of setup and release testing.
The intended setup is download → install → choose music, mic and headphones → test → start sharing. End users should not need Terminal, Git, Bun, or Swift tools. A guided installer handles missing audio components with explicit OS approval where required.
Windows support needs a platform-specific capture/device backend and desktop shell; it is not available in the current Mac code. Signed Windows and Mac packages and guided setup are planned in the installer specification.
Read Getting started first. Source builds require macOS 14.2+ APIs, compatible OBS, both BlackHole drivers, Bun, and Swift command-line tools. The actual baseline is macOS 15.7.4 and Bun 1.3.10 on one Mac; other versions and architectures are unverified.
From the downloaded source folder:
bun test
./start.shThe panel uses http://127.0.0.1:4780. There are 131 tests in the current working tree. Tests do not require OBS and do not certify that audio reaches a Space.
The existing implementation has localhost binding, foreign-Origin rejection for mutations and sockets, JSON-only mutation intent, authenticated OBS preparation, config backups and atomic replacement, OBS timeouts/reconnect serialization, acknowledged mute, final fader flush, offline keyboard guards, and no wheel/scroll fader control. The panel uses local fonts.
The current implementation also validates Host/Origin and request schemas, bounds request/socket resources, restricts native navigation, isolates OBS profile changes, rejects unsafe setup during active outputs, and verifies Stop sharing before quitting. Startup leaves capture stopped and both mixer inputs muted. Credentials and backups are private; preparation rotates the OBS password while OBS is closed.
131 tests pass. The native window, startup persistence, live Firefox music capture, stable trim, source selection, verified close and OBS restart were observed on the test Mac. Spoken-mic/listening acceptance, clean-machine testing, OBS incoming-network isolation and independent review remain open. These results are not a security certification. See current status.
The mixer’s own source is licensed under MIT. See dependency and distribution notes. OBS and BlackHole are installed separately; their source and binaries are not bundled here. No affiliation with X, OBS, or BlackHole is implied.
A collapsible sound-pad drawer, independent effects volume, imports and curated sound packs are recorded in the v2 notes. Deferred; not implemented in this preview.