THIRI logo
build.thiri.ai
Solana · Seeker · Cadenza

Lab · Producer Composer

Play · Agent

Producer Composer at localhost:5173/ serves musicians and developers from one shell. Pick a tab below — each path has explicit numbered steps in the repo demo docs.

Musician quick start

No API key. Vibe prompt → Compose → Play.

  1. cd THIRI/production/thiri-studio-local && npm run dev:studio
  2. Open localhost:5173/
  3. Click ▶ PLAY once (audio unlock)
  4. Type e.g. gospel ballad in EbCompose
  5. Click ▶ PLAY — you should hear Helix on the new chart

Full doc (repo): THIRI/lab/DEMO_MUSICIAN.md

Musician smoke JSON
{
  "slug": "producer-composer-musician",
  "version": "0.1.0",
  "generatedAt": "2026-06-20T16:12:00Z",
  "commit": "main",
  "audience": "musician",
  "demo": {
    "local": "http://localhost:5173/",
    "hosted": "https://build.thiri.ai/innovate/band",
    "studio_dev": "cd THIRI/production/thiri-studio-local && npm run dev:studio",
    "production_note": "build.thiri.ai/innovate/band serves ProducerComposer via InnovateWasmShell",
    "lab_page": "https://build.thiri.ai/lab/producer-composer",
    "doc": "THIRI/lab/DEMO_MUSICIAN.md"
  },
  "steps": [
    "npm install && npm run dev:studio in thiri-studio-local",
    "Open http://localhost:5173/",
    "Click PLAY once (audio unlock)",
    "Type vibe prompt or use preset chip (Gospel / Neo-soul / Dark jazz)",
    "Click Compose",
    "Click PLAY — hear Helix + lanes on shared transport"
  ],
  "example_prompts": [
    "gospel ballad in Eb",
    "neo-soul groove in Dm",
    "something dark and minor in Dm"
  ],
  "smoke_checklist": {
    "page_loads": "pass",
    "audio_unlock": "pass",
    "vibe_compose_no_api_key": "pass",
    "progression_field_updates": "pass",
    "transport_play": "pass",
    "vocal_lane_off_by_default": "pass",
    "hosted_band_title": "pending_post_deploy",
    "lastRun": "2026-06-20T16:12:00Z"
  },
  "notes": "Musician path uses parseComposeRequest in ComposerPromptBar — no THIRI API key required. Agent grammar documented in DEMO_AGENT.md."
}

Agent / MCP demo

Read manifest → grammar → paste deterministic commands in ComposerPromptBar.

  1. agent-capability.v1.jsonagent-command-grammar.v1.jsonthiri://studio/capability-manifest
  2. Paste demo sequence (one line at a time) into prompt bar → Compose
  3. Open Theory · MCP drawer for API call log (key optional for local verbs)
  4. Finish with transport play
progression.set Cm7|F7|Bbmaj7|Eb7 key:Bb bpm:92
helix motion:pendulum density:1/16 voices:4 smoothness:60
drums track:1 steps:1,5,9,13 kit:808-kick
keys instrument:rhodes voicingStyle:rootless
transport play

Full doc (repo): THIRI/lab/DEMO_AGENT.md

Agent smoke JSON
{
  "slug": "studio-mcp-proof",
  "version": "0.2.0",
  "generatedAt": "2026-06-19T12:00:00Z",
  "commit": "local",
  "demo": {
    "local": "http://localhost:5173/",
    "studio_dev": "npm run dev:studio (studio-dashboard)",
    "production": "https://build.thiri.ai/innovate/band",
    "lab_page": "https://build.thiri.ai/lab/producer-composer",
    "agent_doc": "THIRI/lab/DEMO_AGENT.md",
    "musician_doc": "THIRI/lab/DEMO_MUSICIAN.md"
  },
  "grammar_apply": true,
  "mcp_tools": [
    "analyze_chord",
    "generate_voicing",
    "resolve_chord",
    "reharmonize",
    "conduct_band"
  ],
  "local_verbs": [
    "progression.set",
    "helix",
    "keys",
    "drums",
    "fx",
    "vocal",
    "transport"
  ],
  "api_endpoints": [
    "POST https://chords.thiri.ai/v2/analyze",
    "POST https://chords.thiri.ai/v2/voicing",
    "POST https://chords.thiri.ai/v2/resolve",
    "POST https://chords.thiri.ai/v2/reharmonize",
    "POST https://chords.thiri.ai/v2/conduct"
  ],
  "mcp_server": "https://mcp.thiri.ai",
  "demo_sequence": [
    "progression.set Cm7|F7|Bbmaj7|Eb7 key:Bb bpm:92",
    "helix motion:pendulum density:1/16 voices:4 smoothness:60",
    "drums track:1 steps:1,5,9,13 kit:808-kick revSend:0.15",
    "keys instrument:rhodes voicingStyle:rootless pattern:1,5,9,13",
    "fx aux1_level:0.6 aux2_level:0.4 send_drums_rev:0.2",
    "transport play"
  ],
  "tests": {
    "proof_panel": "pass",
    "api_call_log": "pass",
    "health_ping": "pass",
    "conduct_hydration": "pass",
    "grammar_apply_local": "pass",
    "lastRun": "2026-06-19T12:00:00Z"
  },
  "notes": "Producer Composer at / (not /band) — ComposerPromptBar accepts deterministic grammar + vibe compose. See DEMO_AGENT.md for copy-paste sequence. Local: cd THIRI/production/thiri-studio-local && npm run dev:studio."
}

Production note

build.thiri.ai/innovate/band may still serve legacy NanoBandStudio until the next studio-dashboard deploy. Prefer local npm run dev:studio for Producer Composer demos.