The open-source Ableton-style music composer for the web.
139
stars
74
commits
TypeScript
primary language
Aug 31, 2026
updated
A free, open-source music composition tool for beat-making, loops, and arrangements — built with Web Audio, WASM, and modern web tech.
| ComposeYogi | Traditional DAWs |
|---|---|
| Open source | Closed source |
| Runs in browser | Heavy desktop installs |
| Free forever | Paid subscriptions |
| Community-driven | Vendor-controlled |
| Hackable & extensible | Locked ecosystems |
# Clone the repository
git clone git@github.com:AppsYogi-com/ComposeYogi.git
cd ComposeYogi
# Install dependencies
npm install
# Start development server
npm run dev
Open http://localhost:3000 in your browser.
npm run build
npm start
# Clone the repository
git clone git@github.com:AppsYogi-com/ComposeYogi.git
cd ComposeYogi
# Start with Docker Compose
docker-compose up -d
# Access at http://localhost:3000
# Build the image
docker build -t composeyogi .
# Run the container
docker run -p 3000:3000 composeyogi
docker pull appsyogi/composeyogi:latest
docker run -p 3000:3000 appsyogi/composeyogi:latest
| Category | Technology |
|---|---|
| Framework | Next.js 15 with App Router |
| Language | TypeScript |
| Audio Engine | Tone.js |
| State Management | Zustand + Zundo |
| Styling | Tailwind CSS |
| UI Components | Radix UI |
| Drag & Drop | @dnd-kit |
| Persistence | IndexedDB via idb |
| i18n | next-intl |
composeyogi.com/
├── app/ # Next.js App Router
│ └── [locale]/ # i18n routing
│ ├── compose/ # Main DAW page
│ └── page.tsx # Landing page
├── components/
│ ├── compose/ # DAW components
│ │ ├── editors/ # Clip editors (DrumSequencer, PianoRoll, WaveformEditor)
│ │ ├── AudioVisualizer.tsx
│ │ ├── BrowserPanel.tsx
│ │ ├── EditorPanel.tsx
│ │ ├── Inspector.tsx
│ │ ├── TrackList.tsx
│ │ └── Transport.tsx
│ └── ui/ # Reusable UI primitives
├── lib/
│ ├── audio/ # Tone.js wrappers, recording, export
│ ├── store/ # Zustand stores
│ ├── persistence/ # IndexedDB operations
│ ├── canvas/ # Canvas renderers
│ └── design/ # Design tokens — the source of every colour
├── design/ # The design system: rules, artboards, previews
├── hooks/ # Custom React hooks
├── types/ # TypeScript definitions
├── tests/ # Vitest suites
└── messages/ # i18n translation files
ARCHITECTURE.md goes deeper: how scheduling, state and persistence actually work, and which invariants a change must not break.
Press / in the studio for the full, always-current list — it renders
from the shortcut registry in lib/shortcuts/, and every shortcut is rebindable
from that same panel.
The ones worth knowing before you open it:
| Action | Shortcut |
|---|---|
| Play / Pause | Space |
| Stop (return to start) | Enter |
| Record | R |
| Loop | L |
| Undo / Redo | Cmd/Ctrl + Z / Shift + Z |
| Shortcut reference | / |
ROADMAP.md is the single source of truth for what has shipped and what is coming next. It is kept in step with every release, so this README does not repeat it.
Shipped so far: a full multi-track studio with recording and latency calibration, 64 instruments, piano roll and drum sequencer, MIDI/WAV/MP3/JSON export, offline PWA support, and local-first persistence with autosave.
Contributions are welcome! Please read our Contributing Guide and Code of Conduct before submitting a Pull Request.
npm run dev # Start dev server with Turbopack
npm run build # Production build
npm run start # Start production server
npm test # Run the test suite (Vitest)
npm run check # Locales + types + lint + tests — what CI runs
New to the codebase? ARCHITECTURE.md explains how the
audio engine, state and persistence fit together, and where the sharp edges are.
Issues labelled good first issue
are scoped to be picked up without reading the whole thing first.
Building anything visual? design/ is the design system —
tokens, usage rules and artboards. Every colour, radius and duration in the
product comes from one source, and npm run check fails if a component invents
its own. Read it before you start; it will save you a review round.
This project is licensed under the MIT License - see the LICENSE file for details.
ComposeYogi is built on the belief that creative tools should be:
We welcome contributors, musicians, designers, and developers.
If you find ComposeYogi useful, please consider:
Made with ❤️ by AppsYogi
74 commits
TypeScript
90.9%
JavaScript
4.6%
HTML
2.3%
CSS
2.0%
The open-source Ableton-style music composer for the web.
139
stars
74
commits
TypeScript
primary language
Aug 31, 2026
updated
A free, open-source music composition tool for beat-making, loops, and arrangements — built with Web Audio, WASM, and modern web tech.
| ComposeYogi | Traditional DAWs |
|---|---|
| Open source | Closed source |
| Runs in browser | Heavy desktop installs |
| Free forever | Paid subscriptions |
| Community-driven | Vendor-controlled |
| Hackable & extensible | Locked ecosystems |
# Clone the repository
git clone git@github.com:AppsYogi-com/ComposeYogi.git
cd ComposeYogi
# Install dependencies
npm install
# Start development server
npm run dev
Open http://localhost:3000 in your browser.
npm run build
npm start
# Clone the repository
git clone git@github.com:AppsYogi-com/ComposeYogi.git
cd ComposeYogi
# Start with Docker Compose
docker-compose up -d
# Access at http://localhost:3000
# Build the image
docker build -t composeyogi .
# Run the container
docker run -p 3000:3000 composeyogi
docker pull appsyogi/composeyogi:latest
docker run -p 3000:3000 appsyogi/composeyogi:latest
| Category | Technology |
|---|---|
| Framework | Next.js 15 with App Router |
| Language | TypeScript |
| Audio Engine | Tone.js |
| State Management | Zustand + Zundo |
| Styling | Tailwind CSS |
| UI Components | Radix UI |
| Drag & Drop | @dnd-kit |
| Persistence | IndexedDB via idb |
| i18n | next-intl |
composeyogi.com/
├── app/ # Next.js App Router
│ └── [locale]/ # i18n routing
│ ├── compose/ # Main DAW page
│ └── page.tsx # Landing page
├── components/
│ ├── compose/ # DAW components
│ │ ├── editors/ # Clip editors (DrumSequencer, PianoRoll, WaveformEditor)
│ │ ├── AudioVisualizer.tsx
│ │ ├── BrowserPanel.tsx
│ │ ├── EditorPanel.tsx
│ │ ├── Inspector.tsx
│ │ ├── TrackList.tsx
│ │ └── Transport.tsx
│ └── ui/ # Reusable UI primitives
├── lib/
│ ├── audio/ # Tone.js wrappers, recording, export
│ ├── store/ # Zustand stores
│ ├── persistence/ # IndexedDB operations
│ ├── canvas/ # Canvas renderers
│ └── design/ # Design tokens — the source of every colour
├── design/ # The design system: rules, artboards, previews
├── hooks/ # Custom React hooks
├── types/ # TypeScript definitions
├── tests/ # Vitest suites
└── messages/ # i18n translation files
ARCHITECTURE.md goes deeper: how scheduling, state and persistence actually work, and which invariants a change must not break.
Press / in the studio for the full, always-current list — it renders
from the shortcut registry in lib/shortcuts/, and every shortcut is rebindable
from that same panel.
The ones worth knowing before you open it:
| Action | Shortcut |
|---|---|
| Play / Pause | Space |
| Stop (return to start) | Enter |
| Record | R |
| Loop | L |
| Undo / Redo | Cmd/Ctrl + Z / Shift + Z |
| Shortcut reference | / |
ROADMAP.md is the single source of truth for what has shipped and what is coming next. It is kept in step with every release, so this README does not repeat it.
Shipped so far: a full multi-track studio with recording and latency calibration, 64 instruments, piano roll and drum sequencer, MIDI/WAV/MP3/JSON export, offline PWA support, and local-first persistence with autosave.
Contributions are welcome! Please read our Contributing Guide and Code of Conduct before submitting a Pull Request.
npm run dev # Start dev server with Turbopack
npm run build # Production build
npm run start # Start production server
npm test # Run the test suite (Vitest)
npm run check # Locales + types + lint + tests — what CI runs
New to the codebase? ARCHITECTURE.md explains how the
audio engine, state and persistence fit together, and where the sharp edges are.
Issues labelled good first issue
are scoped to be picked up without reading the whole thing first.
Building anything visual? design/ is the design system —
tokens, usage rules and artboards. Every colour, radius and duration in the
product comes from one source, and npm run check fails if a component invents
its own. Read it before you start; it will save you a review round.
This project is licensed under the MIT License - see the LICENSE file for details.
ComposeYogi is built on the belief that creative tools should be:
We welcome contributors, musicians, designers, and developers.
If you find ComposeYogi useful, please consider:
Made with ❤️ by AppsYogi
74 commits
TypeScript
90.9%
JavaScript
4.6%
HTML
2.3%
CSS
2.0%