Installation
Prerequisites
Section titled “Prerequisites”- Bun v1.0+ — bun.sh
- Tango desktop app running locally
Scaffold a new instrument
Section titled “Scaffold a new instrument”The fastest way to start is with the scaffolder:
bunx github:MartinGonzalez/tango-createThe interactive prompt asks for:
| Option | Description |
|---|---|
| Directory name | The folder name for your instrument (e.g. my-instrument) |
| Display name | Human-readable name shown in Tango (e.g. “My Instrument”) |
| Sidebar label | Text shown in the sidebar shortcut |
| Icon | Sidebar icon (branch, play, puzzle, gear, etc.) |
| Category | Marketplace category (developer-tools, productivity, media, etc.) |
| Backend | Whether to include a backend entry point for server-side actions |
Install dependencies
Section titled “Install dependencies”cd my-instrumentbun installThis installs tango-api, which bundles the core SDK, React bindings, UI components, and CLI tools.
Start development
Section titled “Start development”bun run devThis runs the tango-sdk dev flow which:
- Syncs dependencies (ensures
tango-apiand its transitive deps are fresh) - Builds your frontend (and backend if present) with Bun
- Watches for file changes and rebuilds automatically
- Notifies the running Tango app to hot-reload your instrument
See it in Tango
Section titled “See it in Tango”Open Tango. Your instrument appears in the sidebar thanks to the launcher.sidebarShortcut config in the manifest. Click it to see your panels render.
If Tango was already open before you ran bun run dev, the instrument hot-reloads automatically on each save. A [dev] badge appears next to the instrument label in the sidebar while dev mode is active.
Manual build
Section titled “Manual build”To produce a one-off build without watching:
bun run buildOutput lands in dist/ — index.js for the frontend, backend.js for the backend (if present).
Validate
Section titled “Validate”Check that your manifest and file structure are correct:
bun run validateThis verifies:
- Required fields in
package.json > tango.instrument - At least one panel slot is enabled
- Source entry point files exist
- Permissions are valid
- Settings schema is well-formed