{"id":50618920,"url":"https://github.com/futureboard/futureboard","last_synced_at":"2026-06-06T09:01:23.984Z","repository":{"id":357582610,"uuid":"1236874179","full_name":"futureboard/Futureboard","owner":"futureboard","description":"An open-source digital audio workstation with Native GPUI, React WebUI, Rust DSP, and native plugin hosting.","archived":false,"fork":false,"pushed_at":"2026-06-01T17:46:29.000Z","size":15399,"stargazers_count":11,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T19:29:32.553Z","etag":null,"topics":["audio","daw","electron","gpui","linux","macos","midi","music","music-production","online","react","rust","song","studio","typescript","webapp","windows"],"latest_commit_sha":null,"homepage":"https://app.futureboard.studio","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/futureboard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"code_of_conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"arizkami","custom":["https://futureboard.studio"]}},"created_at":"2026-05-12T16:50:55.000Z","updated_at":"2026-06-01T18:32:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/futureboard/Futureboard","commit_stats":null,"previous_names":["arizkami/dawproject","arizkami/futureboard","futureboard/futureboard"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/futureboard/Futureboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futureboard%2FFutureboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futureboard%2FFutureboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futureboard%2FFutureboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futureboard%2FFutureboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/futureboard","download_url":"https://codeload.github.com/futureboard/Futureboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futureboard%2FFutureboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33975476,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","daw","electron","gpui","linux","macos","midi","music","music-production","online","react","rust","song","studio","typescript","webapp","windows"],"created_at":"2026-06-06T09:01:20.961Z","updated_at":"2026-06-06T09:01:23.961Z","avatar_url":"https://github.com/futureboard.png","language":"Rust","funding_links":["https://github.com/sponsors/arizkami","https://futureboard.studio"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003c!-- Banner: HTML syntax --\u003e\n\n\u003cimg width=\"2111\" height=\"684\" alt=\"Futureboard Studio banner\" src=\"packages/assets/banner.png\" /\u003e\n\n**A modern open-source Digital Audio Workstation built with Rust, GPUI, TypeScript, WebAssembly, and native audio/plugin infrastructure.**\n\n\u003c!-- Badges --\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![CI](https://img.shields.io/github/actions/workflow/status/futureboard/Futureboard/ci.yml?branch=main\u0026style=for-the-badge\u0026label=CI\u0026logo=github\u0026logoColor=white\u0026color=22c55e\u0026labelColor=0f172a)](https://github.com/futureboard/Futureboard/actions/workflows/ci.yml)\n[![Status](https://img.shields.io/badge/status-pre--alpha-f59e0b?style=for-the-badge\u0026labelColor=0f172a)](ARCHITECTURE.md)\n[![License](https://img.shields.io/badge/license-MIT-22c55e?style=for-the-badge\u0026labelColor=0f172a)](LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-38bdf8?style=for-the-badge\u0026labelColor=0f172a)](CONTRIBUTING.md)\n\n[![Rust](https://img.shields.io/badge/Rust-2024-f97316?style=for-the-badge\u0026logo=rust\u0026logoColor=white\u0026labelColor=0f172a)](https://rustup.rs)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3b82f6?style=for-the-badge\u0026logo=typescript\u0026logoColor=white\u0026labelColor=0f172a)](https://www.typescriptlang.org)\n[![Bun](https://img.shields.io/badge/Bun-runtime-fbf0df?style=for-the-badge\u0026logo=bun\u0026logoColor=black\u0026labelColor=0f172a)](https://bun.sh)\n[![WebAssembly](https://img.shields.io/badge/WebAssembly-DSP-7c3aed?style=for-the-badge\u0026logo=webassembly\u0026logoColor=white\u0026labelColor=0f172a)](https://webassembly.org)\n\n[![GPUI](https://img.shields.io/badge/UI-GPUI-06b6d4?style=for-the-badge\u0026labelColor=0f172a)](https://www.gpui.rs)\n[![VST3](https://img.shields.io/badge/Plugins-VST3-f97316?style=for-the-badge\u0026labelColor=0f172a)](https://steinbergmedia.github.io/vst3_dev_portal/)\n[![CLAP](https://img.shields.io/badge/Plugins-CLAP-a855f7?style=for-the-badge\u0026labelColor=0f172a)](https://cleveraudio.org)\n[![Platforms](https://img.shields.io/badge/Platforms-Windows%20%7C%20macOS%20%7C%20Linux%20%7C%20Web-14b8a6?style=for-the-badge\u0026labelColor=0f172a)](#-getting-started)\n\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n[Architecture](#-architectural-overview) ·\n[Getting Started](#-getting-started) ·\n[Build](#-building-the-native-app) ·\n[Debugging](#-debugging--diagnostics) ·\n[Contributing](#-contributing)\n\n\u003c/div\u003e\n\n---\n\n## Preview\n\n\u003c!-- Image Grid: HTML syntax --\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"25%\" align=\"center\"\u003e\n      \u003cimg src=\"packages/assets/preview_midi_editor.png\" alt=\"Futureboard Studio MIDI editor\" /\u003e\n      \u003cbr /\u003e\n      \u003csub\u003eMIDI Editor\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"25%\" align=\"center\"\u003e\n      \u003cimg src=\"packages/assets/preview_mixer.png\" alt=\"Futureboard Studio mixer\" /\u003e\n      \u003cbr /\u003e\n      \u003csub\u003eMixer\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"25%\" align=\"center\"\u003e\n      \u003cimg src=\"packages/assets/preview_mainwindow.png\" alt=\"Futureboard Studio workspace preview\" /\u003e\n      \u003cbr /\u003e\n      \u003csub\u003eWorkspace\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- Image Grid: Markdown syntax alternative --\u003e\n\n\u003c!--\n| Main Window | MIDI Editor | Mixer | Workspace |\n| --- | --- | --- | --- |\n| ![Main Window](packages/assets/preview_mainwindow.png) | ![MIDI Editor](packages/assets/preview_midi_editor.png) | ![Mixer](packages/assets/preview_mixer.png) | ![Workspace](packages/assets/preview_mainwindow.png) |\n--\u003e\n\n---\n\n\u003e [!WARNING]\n\u003e **Pre-alpha.** Futureboard Studio is under active, early development. Expect breaking changes, incomplete features, missing persistence guarantees, and rough edges.\n\u003e\n\u003e It is **not** ready for production work. Do not trust it with irreplaceable projects yet.\n\u003e\n\u003e There are no stable releases at the moment; nightly builds are snapshots for testing only. See [ARCHITECTURE.md](ARCHITECTURE.md) for how the surfaces and crates fit together.\n\n---\n\n## Table of Contents\n\n- [Architectural Overview](#-architectural-overview)\n- [Core Engines \u0026 Frameworks](#-core-engines--frameworks)\n- [Additional Packages \u0026 Extensions](#-additional-packages--extensions)\n- [Getting Started](#-getting-started)\n- [Building the Native App](#-building-the-native-app)\n- [Bun Scripts Reference](#-bun-scripts-reference)\n- [Debugging \u0026 Diagnostics](#-debugging--diagnostics)\n- [Contributing](#-contributing)\n- [License](#-license)\n\n---\n\n## Architectural Overview\n\nFutureboard Studio is a Digital Audio Workstation whose primary maintained surface is a native Rust application built on **GPUI**, the rendering framework behind the Zed editor.\n\nIt drives an in-process Rust audio engine and is designed around native performance, modern UI rendering, plugin hosting, and cross-platform audio workflows.\n\nSecondary **web** and **Electron** surfaces share layout and engine concepts through a WebAssembly DSP core, but the native application is the main development target.\n\n### Applications\n\n#### Native Version — `apps/native`\n\nThe primary Futureboard Studio desktop application.\n\n- Built with Rust\n- Uses GPUI for native desktop UI\n- Integrates directly with the Rust audio engine\n- Avoids Electron/browser overhead\n- Main target for new development\n\n#### Web Version — `apps/web`\n\nThe browser-based surface.\n\n- Built with React, TypeScript, and Vite\n- Uses the WASM AudioWorklet DSP core\n- Useful for experiments, layout work, and web-compatible workflows\n- Tracks the native app conceptually, but may lag in feature coverage\n\n#### Electron Version — `apps/electron`\n\nThe legacy/secondary desktop wrapper.\n\n- Uses the React frontend\n- Bridges to native audio components via N-API\n- Kept as a reference surface\n- Not the recommended long-term desktop path\n\n#### Server Module — `apps/server`\n\nThe collaboration and file hosting backend.\n\n- Sync infrastructure\n- Project/file hosting\n- Collaboration foundations\n\nSee [ARCHITECTURE.md](ARCHITECTURE.md) for the full surface, engine, and crate breakdown.\n\n---\n\n## Core Engines \u0026 Frameworks\n\nThe core DAW logic, DSP, and user interface systems are split into modular Rust and C++ crates.\n\n### `crates/SphereWebAudioCore`\n\n**Purpose:** Web WASM audio core.\n\nProvides the web-compatible implementation of the DAW transport, flat audio graph, mixer, meters, and DSP runtime. It is compiled to WebAssembly for browser-based playback and processing.\n\n### `crates/SphereDirectAudioEngine`\n\n**Purpose:** Native direct audio engine.\n\nA low-latency audio engine for desktop builds. It targets native system audio APIs and exposes both native Rust/C APIs and JavaScript-facing wrappers where needed.\n\nCurrent audio backend targets include:\n\n- WASAPI on Windows\n- CoreAudio on macOS\n- ALSA on Linux\n\n### `crates/SphereUIComponents`\n\n**Purpose:** Native UI kit and shared CoreUI.\n\nContains Futureboard Studio's desktop components, styling system, layout primitives, and shared UI foundations built around GPUI.\n\n### `crates/SpherePluginHost`\n\n**Purpose:** Native plugin hosting.\n\nConnects native plugin SDKs with the Rust ecosystem. It is responsible for scanning, loading, and hosting plugin formats such as VST3 and CLAP.\n\nSupported or planned plugin formats:\n\n- VST3\n- CLAP\n- VST2 legacy compatibility\n- Audio Units on macOS\n\n### `crates/SphereAudioPlugins`\n\n**Purpose:** Built-in stock plugin DSP.\n\nContains real-time-safe DSP code and parameters for stock insert effects such as EQ, compression, delay, and other Futureboard-native processors.\n\n---\n\n## Additional Packages \u0026 Extensions\n\n- [`plugins/`](plugins/) — Web/React UI and DSP editors for stock plugins\n- [`modules/`](modules/) — High-level companion processors such as noise removal and stem extraction\n- [`extensions/`](extensions/) — Extension templates for building custom DAW extensions\n- [`packages/shared/`](packages/shared/) — Shared fonts, icons, menus, and layout manifests\n- [`packages/assets/`](packages/assets/) — README images, banners, previews, and branding assets\n- [`external/`](external/) — Vendored SDKs and native dependencies\n\n---\n\n## Getting Started\n\n### Prerequisites\n\nYou need the following installed:\n\n| Tool                       | Version              | Used for                                        |\n| -------------------------- | -------------------- | ----------------------------------------------- |\n| [Bun](https://bun.sh)      | latest               | JS/TS package manager, bundler, and task runner |\n| [Rust](https://rustup.rs)  | 1.78+ / edition 2024 | Native app, audio engine, WASM DSP              |\n| `wasm32-unknown-unknown`   | —                    | Web audio core target                           |\n| [CMake](https://cmake.org) | 3.20+                | C++ plugin host and SDK builds                  |\n| C++ toolchain              | —                    | MSVC, Xcode CLT, GCC, or Clang                  |\n\n\u003e [!IMPORTANT]\n\u003e This repository uses **git submodules** for vendored SDKs such as `external/vst3sdk`, `external/clap`, and related native dependencies.\n\u003e\n\u003e Clone with `--recursive`, or initialize submodules after cloning.\n\n### Clone\n\n```bash\ngit clone --recursive https://github.com/futureboard/Futureboard\ncd Futureboard\n```\n\nAlready cloned without submodules?\n\n```bash\ngit submodule update --init --recursive\n```\n\n### Install JS workspace dependencies\n\n```bash\nbun install\n```\n\n### Add the WebAssembly Rust target\n\n```bash\nrustup target add wasm32-unknown-unknown\n```\n\n### Run the Web Version\n\n```bash\nbun run dev:web\n```\n\n### Run the Native GPUI Client\n\n```bash\nbun run dev:native\n```\n\nEquivalent cargo command:\n\n```bash\ncargo run -p futureboard_native\n```\n\n### Run the Collaboration Server\n\n```bash\nbun run dev:server\n```\n\n---\n\n## Building the Native App\n\nThe native desktop client is a Rust binary that links the GPUI UI kit, the direct audio engine, and the native plugin host.\n\nCMake and a C++ toolchain are required because parts of the plugin host and SDK bridge are compiled from native source.\n\n### Debug build\n\n```bash\nbun run build:native:debug\n```\n\nEquivalent cargo command:\n\n```bash\ncargo build -p futureboard_native\n```\n\n### Debug run\n\n```bash\nbun run dev:native\n```\n\nEquivalent cargo command:\n\n```bash\ncargo run -p futureboard_native\n```\n\n### Release build\n\n```bash\nbun run build:native\n```\n\nEquivalent cargo command:\n\n```bash\ncargo build --release -p futureboard_native\n```\n\nThe optimized binary is emitted to:\n\n```text\ntarget/release/futureboard_native\n```\n\nOn Windows, the binary will use the `.exe` extension.\n\n### Package distributable bundles\n\n```bash\n# macOS .app bundle\nbun run bundle:native:mac\n\n# macOS .app + .dmg installer\nbun run bundle:native:mac:dmg\n\n# Windows portable / installer layout\nbun run bundle:native:win\n```\n\nPackaging scripts live in:\n\n```text\npackaging/native/\n```\n\n### Build everything\n\n```bash\nbun run build:all\n```\n\nThis is intended to build the major project surfaces, including WASM, native, and Electron-related outputs.\n\n---\n\n## Platform Notes\n\n### Windows\n\n- Uses WASAPI as the current native Windows audio backend\n- Exclusive mode and MMCSS are planned/used for lower latency paths\n- Build with the MSVC Rust toolchain\n\n```bash\nrustup default stable-msvc\n```\n\n### macOS\n\n- Uses CoreAudio\n- Requires Xcode Command Line Tools\n\n```bash\nxcode-select --install\n```\n\n### Linux\n\n- Uses ALSA currently\n- PipeWire/JACK support may be added later\n- Requires ALSA development headers\n\nDebian/Ubuntu example:\n\n```bash\nsudo apt install libasound2-dev\n```\n\nArch Linux example:\n\n```bash\nsudo pacman -S alsa-lib\n```\n\n---\n\n## Bun Scripts Reference\n\n| Script                  | Description                                     |\n| ----------------------- | ----------------------------------------------- |\n| `dev:web`               | Run the React web app with Vite                 |\n| `dev:native`            | Build and run the native GPUI client            |\n| `dev:server`            | Run the collaboration sync server               |\n| `dev:electron`          | Run web and Electron concurrently               |\n| `build:web`             | Production build of the web app                 |\n| `build:wasm`            | Compile the WASM audio core                     |\n| `build:native`          | Release build of the native client              |\n| `build:native:debug`    | Debug build of the native client                |\n| `build:audio:plugins`   | Check stock plugin crate and extension template |\n| `bundle:native:mac`     | Package macOS `.app` bundle                     |\n| `bundle:native:mac:dmg` | Package macOS `.dmg` installer                  |\n| `bundle:native:win`     | Package Windows distributable                   |\n| `cargo:check`           | Run cargo check                                 |\n| `cargo:build`           | Run cargo build                                 |\n| `cargo:release`         | Run cargo release build                         |\n| `cargo:test`            | Run Rust workspace tests                        |\n| `cargo:clippy`          | Run Rust clippy                                 |\n| `cargo:fmt`             | Format Rust code                                |\n| `cargo:fmt:check`       | Check Rust formatting                           |\n| `check`                 | Run combined checks                             |\n| `lint`                  | Run lint tasks                                  |\n| `fmt`                   | Format project code                             |\n\n---\n\n## Debugging \u0026 Diagnostics\n\nSeveral subsystems expose verbose logging through environment variables.\n\nSet any variable to `1` to enable it.\n\n| Variable                          | Logs                                                           |\n| --------------------------------- | -------------------------------------------------------------- |\n| `FUTUREBOARD_PLUGIN_DEBUG`        | Insert add/set/remove/bypass mutations and engine-sync details |\n| `FUTUREBOARD_PLUGIN_VIEW_DEBUG`   | Native plugin editor lifecycle and view attachment             |\n| `FUTUREBOARD_ROUTING_DEBUG`       | Send, return, and bus routing graph diagnostics                |\n| `GPUI_DISABLE_DIRECT_COMPOSITION` | Windows composition workaround for native plugin UI            |\n| `FUTUREBOARD_PLUGIN_EDITOR_MODE`  | Plugin editor mode selection                                   |\n\n### PowerShell example\n\n```powershell\n$env:FUTUREBOARD_PLUGIN_VIEW_DEBUG=1\ncargo run -p futureboard_native\n```\n\n### Bash example\n\n```bash\nFUTUREBOARD_PLUGIN_VIEW_DEBUG=1 cargo run -p futureboard_native\n```\n\n---\n\n## Repository Layout\n\n```text\nFutureboard\n├─ apps/\n│  ├─ native/\n│  ├─ web/\n│  ├─ electron/\n│  └─ server/\n│\n├─ crates/\n│  ├─ SphereDirectAudioEngine/\n│  ├─ SphereWebAudioCore/\n│  ├─ SphereUIComponents/\n│  ├─ SpherePluginHost/\n│  └─ SphereAudioPlugins/\n│\n├─ packages/\n│  ├─ assets/\n│  └─ shared/\n│\n├─ plugins/\n├─ modules/\n├─ extensions/\n├─ external/\n└─ packaging/\n```\n\n---\n\n## Roadmap\n\nFutureboard Studio is moving toward a usable native DAW foundation.\n\nCurrent priorities include:\n\n- Stable native GPUI application shell\n- Real audio clip editing\n- Timeline drawing and selection workflows\n- MIDI editor improvements\n- Mixer routing\n- Native plugin hosting stabilization\n- VST3 editor embedding\n- CLAP plugin support\n- Project file format\n- Automation lanes\n- Audio export\n- Cross-platform packaging\n- Documentation and contributor onboarding\n\n---\n\n## Contributing\n\nContributions are welcome.\n\nYou can help by:\n\n- Reporting bugs\n- Testing builds\n- Improving documentation\n- Fixing UI issues\n- Improving plugin hosting\n- Working on audio engine features\n- Adding platform support\n- Improving build and packaging scripts\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request.\n\nUI work should also follow:\n\n- [DESIGN.md](DESIGN.md)\n- [AGENTS.md](AGENTS.md)\n\n---\n\n## License\n\nMIT License.\n\nSee [LICENSE](LICENSE) for the full license text.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffutureboard%2Ffutureboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffutureboard%2Ffutureboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffutureboard%2Ffutureboard/lists"}