Registry
The Registry panel browses the package registry, installs a package into the current song, and publishes one of the song’s modules. Packages in barline are source-distributed single-file TypeScript modules — a preset is a code snippet — so there is no separate distribution pipeline.
What it projects
Section titled “What it projects”- A searchable package list (by name, tags, description). Each row shows the latest version, the owning org, a builtin tag for the embedded packages, and expanders for the full version history and the source.
- A publish form for splitting one of your song’s modules out as a package.
The two builtin packages ship with the studio:
schranz-essentials (rollingKick, offbeatHats, rumbleLine,
ratchetFill, schranzPerc, fullKit) and groove-toolkit (mpcSwing,
pushPull, accentEvery, ghostLayer).
How install works (and writes back)
Section titled “How install works (and writes back)”Installing a package creates <name>.ts in this song’s files — the same Yjs
create operation as the MCP install_package tool and the editor’s
new-file action. It never overwrites; main.ts is reserved. The editor sees the
new file live and the song hot-reloads. You then import it:
import { rollingKick } from "./schranz-essentials";A package’s code may import only @barline/core — enforced by the studio’s
compile shim — which is what keeps packages portable and the dependency
direction clean.
Ownership and publishing
Section titled “Ownership and publishing”A package name belongs to the org that first publishes it (shown as a badge). Publishing is membership-gated: the form offers the orgs you belong to, and only the owning org may ship further versions of a name. You can pin and install any historical version from a row’s version expander.
This is the ecosystem surface designed for — and the artist/org model from
auth — made concrete: every public song is a demo, and every reusable idea can
become a one-file package others install with a click or via
install_package.