stemlab@r1
VERIFIED· not startedPublisher claims: "Enables local, evidence-led analysis of a master recording into inspectable stems, timing, beats, harmony, lyrics, MIDI and sonic evidence, then finds complete-bar loopable sections for Shorts and other short-form video. Results stay traceable through source hashes, manifests, JSON/TSV/NPZ artifacts and portable Sonic Visualiser sessions, and it can run as a CLI, Python library, web service, container or MCP plugin." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Not started: dependency install failed; the server itself was not observed.- Tested
- the dependency install step · every file read, file written and host contacted by what ran
- Not tested
- server startup · the tool list · tool behavior
What this means for the label: Verified here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
GH_TOKENGITHUB_TOKENConfiguration, not credentials: STEMLAB_CACHE, STEMLAB_RESULTS_DIR, STEMLAB_SERVICE_CLI_ARGS, STEMLAB_SERVICE_DEVICE, STEMLAB_SERVICE_FILE_POLL_SECONDS, STEMLAB_SERVICE_HISTORY_LINES, STEMLAB_SERVICE_MAX_JOBS, STEMLAB_SERVICE_MAX_UPLOAD_BYTES, STEMLAB_SERVICE_MIN_TIMEOUT_SECONDS, STEMLAB_SERVICE_PROFILE, STEMLAB_SERVICE_TIMEOUT_MULTIPLIER, STEMLAB_SERVICE_UPLOAD_CHUNK_BYTES- Where it talks to
- kieransimkin.co.uk (its own)Also githubusercontent.com, nuget.org, pythonhosted.org, jku.at, react.dev — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- server startup · the tool list · tool behavior
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names githubusercontent.com, nuget.org, pythonhosted.org, jku.at, react.dev as well as its own vendor. The guard injects GH_TOKEN, GITHUB_TOKEN only into requests to kieransimkin.co.uk (and its subdomains) and refuses the rest.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is stemlab@r1 safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-12 and scored it 88/100 (Verified). In what ran, nothing we could detect went wrong: no undeclared network egress, no credential reads, no persistent instruction writes. What it does with a real credential was not observed; the static findings and the publisher carry the rest of the score. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
proc = subprocess.Popen(command, **popen_kwargs)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(args, cwd=cwd, check=True, text=True, encoding='utf-8',Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(["git", "clone", "--depth", "1", repo_url, str(dest)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run([str(installer)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.…ynthetic loop QA — supplied grid, not an artist recording'}) write('analysis.json', {'source': {'copied_path': 'input/synthetic-loop-qa.wav', 'sha256': digest}, 'models': [{'stems': [{'model': 'fix…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.subprocess.run(args, cwd=cwd, env=merged, check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(args, cwd=cwd, check=True, text=True, encoding='utf-8',Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.skeleton = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(["open", str(installer)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run([str(py), "-m", "pip", "install", "-r", str(req)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run([ffmpeg, "-nostdin", "-v", "error", "-i", str(path),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(["taskkill", "/PID", str(proc.pid), "/T", "/F"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.- **Symptom (30 September 2026):** `test_capacity_cancel_and_shutdown` timed out while `subprocess.run(["taskkill", ...])` appeared to wait on the test's 30-second sleeping worker.Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.