ruvector@0.3.26
CAUTION· startup onlyPublisher claims: "Self-learning vector database for Node.js: native HNSW vector search, ONNX embeddings, GNN, attention, SONA routing and an MCP server for agents." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Startup only; authenticated tool behavior not tested.- Tested
- server startup over stdio (initialize sent) · every file read, file written and host contacted by what ran
- Not tested
- the tool list (the server exited before answering) · what the tools do when called with real credentials
What this means for the label: Caution 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
- no credential variables read in the code
- Where it talks to
- ruv.io (its own)Also huggingface.co, githubusercontent.com, run.app, unpkg.com, nodejs.org, rustup.rs, microsoft.com, crates.io, schemastore.org, jsdelivr.com — 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
- the tool list (the server exited before answering) · what the tools do when called with real credentials
Connect it under the guard. Startup only; authenticated tool behavior not tested. The code names no credential variable and talks to ruv.io, its own; the guard pins the network to what the honeypot saw and logs every call.
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; startup only; authenticated tool behavior not tested) on 2026-11-12 and scored it 70/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Access to sensitive file paths; Privileged sudo command; Destructive file system command detected. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 31 s · 2 scenarios · 0 deviationsStatic findings
console.log(chalk.gray(' Optional extras (RaBitQ, DiskANN, router, graph, rvlite, quantum): npx ruvector add --list'));Fix: Pin versions and sources; vendor anything fetched at install time.// cannot cover $HOME secrets such as ~/.ssh or ~/.npmrc.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.'Bash(sudo rm:*)',Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// data.patterns keyed by "<task>:<ext>|<agent>" (the same state formatFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.console.log(chalk.gray('\n Install GNN with: npx ruvector install gnn'));Fix: Pin versions and sources; vendor anything fetched at install time.usage: 'npx ruvector route --help',Fix: Pin versions and sources; vendor anything fetched at install time.console.log(chalk.white(' curl -fsSL https://raw.githubusercontent.com/ruvnet/ruvector/main/install.sh | bash'));Fix: Pin versions and sources; vendor anything fetched at install time.console.log(chalk.white(` Input shape: ${chalk.yellow(`[${inputDim}]`)}`));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.console.log(chalk.white(' npx ruvector install graph-node # Install graph database'));Fix: Pin versions and sources; vendor anything fetched at install time.console.log(chalk.green(`\nLayer config saved to: ${options.output}`));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.console.log(chalk.white(' curl --proto \'=https\' --tlsv1.2 -sSf https://sh.rustup.rs | sh'));Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.console.log(chalk.white(' curl --proto \'=https\' --tlsv1.2 -sSf https://sh.rustup.rs | sh'));Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.console.log(chalk.white(' sudo yum groupinstall "Development Tools"'));Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.console.log(chalk.white(' curl -fsSL https://raw.githubusercontent.com/ruvnet/ruvector/main/install.sh | bash'));Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.console.log(chalk.white(` Input Dim: ${chalk.yellow(inputDim)}`));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.'Bash(rm -rf /)',Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// cannot cover $HOME secrets such as ~/.ssh or ~/.npmrc.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.log(chalk.white(' npx ruvector install agentic-synth # Install data generator'));Fix: Pin versions and sources; vendor anything fetched at install time.'Bash(chmod 777:*)',Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.console.log(chalk.white(' sudo yum install openssl-devel'));Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.console.log(chalk.white(' curl -fsSL https://raw.githubusercontent.com/ruvnet/ruvector/main/install.sh | bash'));Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.console.log(chalk.white(' sudo apt-get install build-essential pkg-config libssl-dev'));Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.console.log(chalk.white(' sudo apt-get update'));Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.console.log(chalk.white(` Output shape: ${chalk.yellow(`[${output.length}]`)}`));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// Agent skills shipped in the package (skills/<name>/SKILL.md). Same formatFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.console.log(chalk.white(' npx ruvector install gnn # Install GNN package'));Fix: Pin versions and sources; vendor anything fetched at install time.console.log(chalk.white(` Output sample: ${chalk.gray(`[${output.slice(0, 4).map(v => v.toFixed(4)).join(', ')}...]`)}`));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.* claude mcp add ruvector npx ruvector mcp startFix: Pin versions and sources; vendor anything fetched at install time.usage: 'npx ruvector tiny-dancer info',Fix: Pin versions and sources; vendor anything fetched at install time.`Install with: npx ruvector add diskann (or: npm install @ruvector/diskann)`);Fix: Pin versions and sources; vendor anything fetched at install time.* npx ruvector mcp startFix: Pin versions and sources; vendor anything fetched at install time.hint: 'Install with: npx ruvector add rvlite (or: npm install rvlite)'Fix: Pin versions and sources; vendor anything fetched at install time.usage: 'npx ruvector rvf --help',Fix: Pin versions and sources; vendor anything fetched at install time.usage: 'npx ruvector sona info',Fix: Pin versions and sources; vendor anything fetched at install time.* The AgentDB CLI has ~2.3s startup overhead due to npx initialization.Fix: Pin versions and sources; vendor anything fetched at install time.* Execute an external npx package without a shell.Fix: Pin versions and sources; vendor anything fetched at install time.* The AgentDB CLI has ~2.3s startup overhead due to npx initialization.Fix: Pin versions and sources; vendor anything fetched at install time.usage: 'npx ruvector quantum simulate bell',Fix: Pin versions and sources; vendor anything fetched at install time.install: e.bundled ? null : `npx ruvector add ${e.key}`,Fix: Pin versions and sources; vendor anything fetched at install time.console.log(chalk.dim(' npm install @ruvector/ruvllm@latest\n'));Fix: Pin the exact version (`[email protected]`, `==1.2.3`) so every install gets the bytes that were reviewed.* consumed by `npx ruvector optimize` and the settings generator.Fix: Pin versions and sources; vendor anything fetched at install time.loadError = new Error('@ruvector/rvf is not installed. Run: npx ruvector add rvf (or: npm install @ruvector/rvf)');Fix: Pin versions and sources; vendor anything fetched at install time.`Install with: npx ruvector add graph (or: npm install @ruvector/graph-node)`);Fix: Pin versions and sources; vendor anything fetched at install time.* Optional extra: install with `npx ruvector add rabitq`. Codes are 1 bit perFix: Pin versions and sources; vendor anything fetched at install time.'Install with: npx ruvector add rabitq (or: npm install @ruvector/rabitq-wasm)');Fix: Pin versions and sources; vendor anything fetched at install time.`Install with: npx ruvector add router (or: npm install @ruvector/router)`);Fix: Pin versions and sources; vendor anything fetched at install time.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
No advisories in OSV for ruvector@0.3.26 as of 2d ago. This is the package itself, not its dependencies.
What would make this Verified
10 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Pipe-to-shell pattern≈ +9 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- Unclaimed publisher≈ +8 on the totalClaim ruvnet: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Destructive file system command detected≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Direct script execution from GitHub raw URL≈ +4 on the totalPin versions and sources; vendor anything fetched at install time.