Atlas / MCP servers / swarmclawai / SwarmVault

SwarmVaultCAUTION

mcp/swarmclawai/swarmvault

The local-first LLM Wiki: open-source knowledge graph builder, RAG knowledge base, and agent memory store. Built on Andrej Karpathy's pattern. An Obsidian alternative for personal knowledge management, AI second brain, and durable Claude Code / Codex / OpenClaw memory.

Verdict
CAUTION
Grade
B
Trust score
80 /100
Exposed tools
58 53r · 5w · 0d
Transport
stdio
License
MIT
Stars
704
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Languages: English | 简体中文 | 日本語

[](https://www.npmjs.com/package/@swarmvaultai/cli) [](https://www.npmjs.com/package/@swarmvaultai/cli) [](https://github.com/swarmclawai/swarmvault) [](LICENSE) []()

The local-first LLM Wiki, knowledge graph builder, and RAG knowledge base for AI agents. SwarmVault turns docs, code, transcripts, notes, and URLs into a durable markdown wiki plus a local graph you can inspect, query, and hand to agents. Start with one command, then learn the deeper graph, review, context-pack, and automation workflows when you need them.

Documentation on the website is currently English-first. If wording drifts between translations, README.md is the canonical source.

Try It in 30 Seconds

npm install -g @swarmvaultai/cli
swarmvault quickstart ./your-repo

quickstart initializes a vault in the current directory, ingests a local file, directory, or public GitHub repo, compiles the wiki and graph, writes share artifacts, and opens the local graph viewer. It is the beginner-friendly alias for swarmvault scan.

No repo handy?

swarmvault demo

After your first compile, the most useful next commands are:

swarmvault next
swarmvault query "What are the key concepts?"
swarmvault graph serve
swarmvault doctor
swarmvault candidate list

Not sure what state the vault is in? swarmvault next is read-only and tells you whether to initialize, ingest, compile, query, review, or refresh.

![SwarmVault graph workspace](https://www.swa

Read from source at commit 9deacba06845OBSERVED · 2026-09-28
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add large-repo-example --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env CEREBRAS_API_KEY=${CEREBRAS_API_KEY} --env GEMINI_API_KEY=${GEMINI_API_KEY} --env GOOGLE_API_KEY=${GOOGLE_API_KEY} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "large-repo-example": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
        "CEREBRAS_API_KEY": "${CEREBRAS_API_KEY}",
        "GEMINI_API_KEY": "${GEMINI_API_KEY}",
        "GOOGLE_API_KEY": "${GOOGLE_API_KEY}"
      }
    }
  }
}
03

Exposed tools (58)

53 read · 5 write · 0 destructive.

ToolRiskDescription
APIreadThe visible API node.
AlphareadAlpha concept.
GovernancereadGovernance concept from schema-aware provider.
QueuereadA queue connecting the API and worker.
SwarmVaultreadProject entity
archive_candidateread
auto_promote_candidatesread
blast_radiusread
build_context_packread
cluster_graphread
compile_vaultread
consolidateread
doctor_retrievalread
doctor_vaultread
finish_memory_taskread
finish_taskread
get_communityread
get_hyperedgesread
get_neighborsread
get_noderead
god_nodesread
graph_callersread
graph_reportread
graph_statsread
graph_statusread
ingest_inputread
javascriptreadjavascript
lint_vaultread
list_approvalsread
list_context_packsread
list_memory_tasksread
list_sourcesread
list_tasksread
migrateread
preview_candidate_scoresread
promote_candidateread
query_graphread
query_vaultread
read_approvalread
read_context_packread
read_memory_taskread
read_pageread
read_taskread
rebuild_retrievalread
resume_memory_taskread
resume_taskread
retrieval_statusread
review_decisionread
search_pagesread
shortest_pathread
start_memory_taskwrite
start_taskwrite
swarmvaultreadSwarmVault graph-first workflow. Use to read the compiled wiki and query the knowledge graph before broad file search.
update_graphwrite
update_memory_taskwrite
update_taskwrite
watch_statusread
workspace_inforead
04

Trust audit

CAUTIONgrade B · trust 80/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (6 observation(s))
Network
declared (5 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (22)

MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
scripts/live-smoke.mjs:67
"UEsDBBQAAAAIAPiQiFzT44oSCAEAAC0CAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbJVRS07DMBDd9xSWtyhxYIEQStIFnyV0UQ4wciaJhX/yuKW9PZMWAkItUpfW+/pNvdw5K7aYyATfyOuykgK9Dp3xQyPf1s/FnRSUwXdgg8dG7pHksl3U631EEiz21Mgx53ivFOk
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
packages/engine/test/redaction.test.ts:33
"second: AKIAJKLMNOPQRSTUVWXY",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
scripts/live-smoke.mjs:232
const password = "swarmvault-neo4j-password";
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/engine/src/agents.ts:1193
.createHash("sha1")
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
scripts/live-smoke.mjs:2604
const labelHash = createHash("sha1").update(label).digest("hex").slice(0, 10);
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/engine/src/config.ts:20
const viewerDistDir = path.basename(moduleDir) === "src" ? path.resolve(moduleDir, "../../viewer/dist") : path.resolve(moduleDir, "viewer");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/engine/test/compounding.test.ts:37
const viewerDistDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../viewer/dist");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/obsidian-plugin/test/citations/rewrite.test.ts:2
import { rewriteCitations } from "../../src/citations/rewrite";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/obsidian-plugin/test/citations/rewrite.test.ts:3
import type { PageIdIndex } from "../../src/workspace/page-id-index";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/obsidian-plugin/test/cli/run.test.ts:4
import { CliRunner } from "../../src/cli/run";
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/cli/README.md:812
"baseUrl": "http://127.0.0.1:11434/v1",
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/engine/test/managed-sources.test.ts:52
const requestUrl = request.url ? new URL(request.url, "http://127.0.0.1") : null;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/engine/test/managed-sources.test.ts:81
baseUrl: `http://127.0.0.1:${port}`,
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/engine/test/vault.test.ts:119
const requestUrl = request.url ? new URL(request.url, "http://127.0.0.1") : null;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/engine/test/vault.test.ts:170
baseUrl: `http://127.0.0.1:${address.port}`,
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
packages/engine/test/tiny-validation.test.ts:15
"UEsDBBQAAAAIAPiQiFzT44oSCAEAAC0CAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbJVRS07DMBDd9xSWtyhxYIEQStIFnyV0UQ4wciaJhX/yuKW9PZMWAkItUpfW+/pNvdw5K7aYyATfyOuykgK9Dp3xQyPf1s/FnRSUwXdgg8dG7pHksl3U631EEiz21Mgx53ivFOk
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
packages/engine/test/vault.test.ts:226
"UEsDBBQAAAAIAPiQiFzT44oSCAEAAC0CAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbJVRS07DMBDd9xSWtyhxYIEQStIFnyV0UQ4wciaJhX/yuKW9PZMWAkItUpfW+/pNvdw5K7aYyATfyOuykgK9Dp3xQyPf1s/FnRSUwXdgg8dG7pHksl3U631EEiz21Mgx53ivFOk
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@biomejs/biome, @evilmartians/lefthook, playwright, typescript
Why it matters. 4 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/cli/package.json
commander, @types/node, tsup, vitest
Why it matters. 4 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/engine/package.json
@asciidoctor/core, @modelcontextprotocol/sdk, @mozilla/readability, @retorquere/bibtex-parser, @vscode/tree-sitter-wasm, chokidar, compromise, csv-parse
Why it matters. 47 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/obsidian-plugin/package.json
@types/node, esbuild, obsidian, tslib, typescript, vitest
Why it matters. 6 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/viewer/package.json
cytoscape, highlight.js, react, react-dom, react-markdown, rehype-highlight, rehype-slug, remark-gfm
Why it matters. 21 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-09-28 · audit v0.4.1 · source sha 9deacba06845full audit observations/trust-audit/mcp-server/swarmclawai__swarmvault.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-09-289deacba06845CAUTIONB80first audit
06

Questions

What is the SwarmVault MCP server?

The local-first LLM Wiki: open-source knowledge graph builder, RAG knowledge base, and agent memory store. Built on Andrej Karpathy's pattern. An Obsidian alternative for personal knowledge management, AI second brain, and durable Claude Code / Codex / OpenClaw memory.

What tools does SwarmVault expose?

58 in total: 53 read-only, 5 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is SwarmVault safe to connect to an agent?

With care. The audit graded it B (80/100) and found 22 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does SwarmVault need?

It reads ANTHROPIC_API_KEY, CEREBRAS_API_KEY, GEMINI_API_KEY, GOOGLE_API_KEY, GROQ_API_KEY, OLLAMA_API_KEY, OPENAI_API_KEY, OPENROUTER_API_KEY, SWARMVAULT_TEST_NEO4J_PASSWORD, TOGETHER_API_KEY and XAI_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does SwarmVault run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as large-repo-example at 0.0.0.

How current is this page?

The grade is for one exact copy of the source (9deacba06845), read on 2026-09-28. The repository is watched and re-audited when it changes.

Advertisement