# Soundfish > A browser editor and content-addressed URL protocol for 1–16-bar MIDI loops and self-contained song arrangements with explicit notes and drums tracks, authored mix, effects, and automation. The Soundfish skill and published @hraness/soundfish Bun CLI inspect and verify self-contained #s1 loops and #a1 songs, then export lossless Soundfish JSON or interoperable MIDI. Provider links carry no fragments. A hosted agent may receive the document and CLI output; only a fully local, offline model and runner keep them on the user's device. ## When to use Soundfish Use Soundfish to create, edit, play, or share a 1–16-bar MIDI loop, build a song from loop sections, or export Soundfish JSON and Standard MIDI. Notes, drums, mix, effects, and automation travel in a complete Soundfish link. The CLI can also help turn authorized media into local loop and song files for review. ## How to call Soundfish - **Chat app:** open a loop, choose **Edit with agent**, select **Chat app**, and copy the prompt. Paste the returned loop text into **Paste from agent** to compile and review it. No install is needed; this compose workflow does not preserve IDs, lineage, or automation points. - **Coding agent:** choose **Coding agent** to copy the exact loop or whole-song URL. Install the [Soundfish skill](https://sound.fish/skills/soundfish.zip) and the Bun CLI, inspect and verify the input, apply the edit, verify the output, and return one complete link. Start with `bunx @hraness/soundfish --help` or install with `bun add --global @hraness/soundfish`. Provider links never carry the composition. A hosted agent receives it when you paste the prompt. There is no unauthenticated HTTP write for canonical documents; the public composition workflow uses local CLI commands and browser review, not a hosted mutation API, GraphQL endpoint, or MCP server. MusicCID includes notes, track production, shared reverb and delay, and all automation. It excludes titles, IDs, lineage, display order, and the current fixed MuseScore General and SpessaSynth sound release. ArrangementCID includes ordered child MusicCIDs, occurrence count, and normalized stable-track trajectories while excluding song and section titles. Notes and drums are distinct track types. Use `.soundfish` agent text for loop operations and `.soundfish.json` for lossless loop or song interchange; do not upload a document to a hosted mutation service. - [Getting started](https://sound.fish/docs.md): Start a musical loop, import MIDI, build a song, collaborate with an agent, and share the complete composition in a link. - [Agent guide](https://sound.fish/docs/agent.md): Choose a chat app or coding agent, send a musical request, and review the result in Soundfish. - [Sound guide](https://sound.fish/docs/music.md): Choose instruments and drum kits, balance the parts, and find practical sound and mixing references. - [API reference](https://sound.fish/docs/api.md): The Soundfish document, MusicCID, automation, URL, operations, MIDI interchange, runtime, and CLI. - [Compose authoring format](https://sound.fish/docs/api.md#compose): Hand-written loop text with step strings and pitch@slot>length notes that the CLI compiles to a loop URL. - [Skill instructions](https://sound.fish/skills/soundfish/SKILL.md): Soundfish skill instructions. - [reference/gm-programs.md](https://sound.fish/skills/soundfish/reference/gm-programs.md): Every General MIDI program with a mark for how it sounds in this release and a table of first choices per role. - [reference/drums.md](https://sound.fish/skills/soundfish/reference/drums.md): The percussion map with compose aliases, the twelve drum kits and their GS programs, default rows per kit, and velocity habits. - [reference/mixing.md](https://sound.fish/skills/soundfish/reference/mixing.md): Register per role, accents, volume and headroom, sends and returns, delay presets, pan, cutoff, swing, and the byte budget. - [reference/critique.md](https://sound.fish/skills/soundfish/reference/critique.md): The twelve-line rubric a loop is read against, aligned with the lint codes and the verb that fixes each. - [reference/cli.md](https://sound.fish/skills/soundfish/reference/cli.md): CLI procedure: exit codes, stdin rules, operations, templates, songs, export and import, and the local song importer. - [reference/genres/house.md](https://sound.fish/skills/soundfish/reference/genres/house.md): House: a compose skeleton, a before-and-after transform pair, and the stage order. - [reference/genres/boom-bap.md](https://sound.fish/skills/soundfish/reference/genres/boom-bap.md): Boom bap: a compose skeleton, a before-and-after transform pair, and the stage order. - [reference/genres/half-time.md](https://sound.fish/skills/soundfish/reference/genres/half-time.md): Half time: a compose skeleton, a before-and-after transform pair, and the stage order. - [reference/genres/breakbeat.md](https://sound.fish/skills/soundfish/reference/genres/breakbeat.md): Breakbeat and jungle: a compose skeleton, a before-and-after transform pair, and the stage order. - [reference/genres/jazz.md](https://sound.fish/skills/soundfish/reference/genres/jazz.md): Jazz: a compose skeleton, a before-and-after transform pair, and the stage order. - [reference/genres/orchestral.md](https://sound.fish/skills/soundfish/reference/genres/orchestral.md): Orchestral: a compose skeleton, a before-and-after transform pair, and the stage order. - [Session transcript](https://sound.fish/skills/soundfish/examples/transcript.md): One complete compose, lint, transform, verify session with real CLI output. - [Agent skill ZIP](https://sound.fish/skills/soundfish.zip): Canonical skill instructions for the published Bun CLI. - [OpenAPI description](https://sound.fish/openapi.json): Private-alpha audio jobs; not composition mutation. - [Product overview and factual proof](https://sound.fish/demo): Checked product story and edit-and-share capture. - [Pricing](https://sound.fish/pricing): Current price and included features. - [Privacy](https://sound.fish/privacy): Browser, sync, analytics, provider, retention, and control boundaries. - [Support](https://sound.fish/support): Stable public support and contact path. - [License](https://sound.fish/license): Closed-source product and third-party notice boundary. - [New loop](https://sound.fish/?new=1): Start an empty loop, then add a track and notes. - [Home](https://sound.fish/): Choose a starter, continue your last loop, or open Library.