ravel@0.1.1
VERIFIED· not startedPublisher claims: "Enables coding agents to search an approved local repository root for code and document evidence, returning source paths and line spans without source editing or network access." 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
HF_HUB_DISABLE_IMPLICIT_TOKENTOKENIZERS_PARALLELISMConfiguration, not credentials: HF_HOME, HF_HUB_DISABLE_TELEMETRY, HF_HUB_OFFLINE, ORT_DISABLE_TELEMETRY- Where it talks to
- no vendor host named in the code
- 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. It asks for HF_HUB_DISABLE_IMPLICIT_TOKEN, TOKENIZERS_PARALLELISM and talks to its vendor. Give the credential to the guard, not the server: the value never enters the server's environment and only travels to the host you bind. What the tools do with a real credential was not observed.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] 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-13 and scored it 85/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
subprocess.run(["git", "clone", "https://github.com/tobi/qmd.git", str(base / "qmd")], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(["uv", "venv", "--python", "3.12", str(base / "leann-env")], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(['git', 'init', '-q', str(project)], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.(project / '.env').write_text('not opened')Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.SECRET_NAME = re.compile(r"(^\.env($|\.)|credentials|secrets?|id_rsa|id_ed25519|\.pem$|\.key$|\.p12$|\.pfx$)", re.I)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.subprocess.run(['git', '-C', str(project), 'checkout', '-qb', 'changed'], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(["git", "checkout", "86d2365d17fc682e491c2c53d1e4a884aee8682a"], cwd=base / "qmd", check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(["git", "-C", str(self.root), "rev-parse", "HEAD"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(['git', '-C', str(project), 'add', 'retry.py'], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(['git', '-C', str(project), 'add', 'retry.py', 'notes.md'], check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(["bun", "install", "--frozen-lockfile"], cwd=base / "qmd", check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.subprocess.run(['git', '-C', str(project), '-c', 'user.name=Test', '-c', '[email protected]', 'commit', '-qm', 'fixture'], 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.<summary><svg class="icon"><use href="#i-code"/></svg><span>Context</span><strong id="budget-value">2,048</strong><svg class="icon"><use href="#i-chevron"/></svFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.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.