@splitfireai / agent / commits / 45dfa60

Name KaroKowe Karaoke as a host that supplies no stems server

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

Seto committed Oct 13, 2026 at 14:20 UTC 45dfa6094882f9215e86dfea964e809996fd038c
2 files changed +2 -2
.agents/AGENTS.md
+1 -1
@@ -21,7 +21,7 @@ cargo test --locked
21
22 This crate holds only the *music* part of the agent. The ACP server, session/turn loop, approval, workspace tools (`read_file`, `write_file`, `run_command`, ...), terminal UI and MCP layer all come from the Onde Agent Platform crates (`ed-acp`, `ed-acp-tui`, `ed-mcp`, from the `onde-ed` workspace). Look there for anything protocol- or session-related; the README says it is checked out next to this repo.
23
24 -- `src/profile.rs`: `SplitFire` implements `ed_acp::Profile`. It is the single wiring point: identity (`INFO`, env prefix `SPLITFIRE`), system prompt, toolsets (`WorkspaceTools` + `MusicTools`), slash commands, and the lazily started built-in `demucs --mcp` server (`SharedServer`; a client-supplied MCP server named `demucs` wins). Embedding apps use that: the separator passes its own `--mcp` server, and KaroKowe Jam wraps `SplitFire` and returns no built-in servers.
24 +- `src/profile.rs`: `SplitFire` implements `ed_acp::Profile`. It is the single wiring point: identity (`INFO`, env prefix `SPLITFIRE`), system prompt, toolsets (`WorkspaceTools` + `MusicTools`), slash commands, and the lazily started built-in `demucs --mcp` server (`SharedServer`; a client-supplied MCP server named `demucs` wins). Embedding apps use that: the separator passes its own `--mcp` server, and KaroKowe Jam and KaroKowe Karaoke wrap `SplitFire` and return no built-in servers.
25 - `src/prompt.rs`: system prompt and slash commands (`/analyze`, `/chords`, `/practice`, `/stems` only when separation is available).
26 - `src/tools/`: `MusicTools` is one `Toolset` exposing six `theory_*` tools, `analyze_audio` and `list_separations`. All are read-only and never prompt for approval. New tools need an entry in `definitions()`, `handles()` and `describe()`.
27 - `src/theory/` (pitch, interval, scale, chord, key, tempo) and `src/audio/` (symphonia decode, loudness/tempo/key analysis) are the pure computation behind the tools. The design principle is that the model calls these instead of recalling answers, so results must be exact (correct enharmonic spelling, e.g. C# major has E# and B#).
README.md
+1 -1
@@ -53,7 +53,7 @@ takes precedence. `SPLITFIRE_MCP_DEMUCS=off` disables it.
53 Apps that embed SplitFire decide what stems mean the same way. They pass a `demucs` MCP server of
54 their own in `session/new`, or return no built-in servers from their `Profile` and write their own
55 stems guidance. The SplitFire AI Audio Separator supplies its own executable in `--mcp` mode on
56 -its on-device engine; KaroKowe Jam supplies none and points users at its in-app flow. The stem
56 +its on-device engine; KaroKowe Jam and KaroKowe Karaoke supply none and point users at their in-app flows. The stem
57 hooks only check the tool name `mcp__demucs__separate_stems` and the `list_models` and
58 `separate_stems` result shapes (`structuredContent.models[]{id,size_mb,cached}` and
59 `structuredContent.stems[].path`).