Wyrm MCP server
Local-first memory for AI agents: ground truths, failure firewall, negotiated recall over MCP.
3 stars1.1k downloads/wk
Reviews
Write oneNobody has reviewed Wyrm yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Wyrm tools (100, 7 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
buddyUse when another buddy-compatible MCP server (or the operator) asks Wyrm for a brief, data-grounded status reply - the Buddy Protocol v1.0 well-known entry point. Companion params switch to the full companion reply; bare calls stay protocol-pure. Cycle-protected.
wyrm_activateActivate a license key to unlock Pro/Team/Enterprise features
wyrm_agent_initBootstrap Wyrm's autonomous agent loop in one call. Starts the wyrm-loop daemon as a detached background process so subsequent ticks happen automatically every interval_seconds. Optionally seeds a first goal in the same call. Idempotent: if already running, returns status without spawning a second instance.
wyrm_agent_restartStop the daemon and start it again with optional new settings. Useful when changing interval_seconds or max_steps without manually stopping first.
wyrm_agent_statusInspect the autonomous agent: is the wyrm-loop daemon running, what was the last action, how many active goals + total iterations. Use to confirm bootstrap worked.
wyrm_agent_stopStop the autonomous agent daemon (SIGTERM with grace, then SIGKILL). Goals remain in DB and can be resumed by calling wyrm_agent_init again.
wyrm_analytics_dashboardView usage analytics dashboard: tool calls, tokens, costs, cache efficiency (Pro+)
wyrm_audit_exportExport a date-ranged tamper-evident audit bundle (JSON). Includes full chain so an external auditor can verify offline without DB access. Use range_start='2026-01-01' for SOC2 audit windows.
wyrm_audit_logAppend a hash-chained audit event. Each entry references the previous entry's sha-256, so tampering breaks the chain. Optional Ed25519 signature layer. Used for SOC2/HIPAA-grade audit.
wyrm_audit_verifyWalk the entire audit_log chain and verify every prev_hash / row_hash. Returns ok=true if intact, or first_invalid_id when tampering is detected. Optional public_keys also verify Ed25519 signatures.
wyrm_auto_captureAuto-extract durable memories from freeform text (a session transcript, notes, a chat) into the REVIEW QUEUE. A LOCAL extractor (a configurable Ollama model via WYRM_EXTRACT_MODEL or the `model` arg if set, else a deterministic heuristic) pulls out truths, failures, decisions, patterns, and lessons as needs_review candidates; approve/reject with wyrm_review (nothing auto-trusted). Closes the 'just
wyrm_buddyFriendly, data-grounded coding companion. Returns a brief greeting + project state + suggested next step sourced entirely from Wyrm's real data. Every claim cites a real DB row ID; no hallucinated encouragement. Personas: wyrm (default, dragon-themed), drogo (gruff), berlin (precise), sumair (warm), custom. Moods: normal / celebratory / stuck / quiet (auto-detected). Sizes: full (10-line PhantomDr
wyrm_call_externalUse to call a tool on an outbound MCP server registered via wyrm_mcp - lazily spawned over stdio, result returned and logged to external_call_log.
wyrm_capabilitiesUse to learn what your memory system can actually do - feature inventory, why each matters, runtime state, and which tool to reach for. Call at session start instead of re-discovering the surface.
wyrm_captureUse to save anything worth keeping - the single write funnel. Auto-classifies notes, decisions, and lessons into quest, ground truth, or memory; risky writes queue for wyrm_review. mode=direct (store a proven pattern or lesson learned so future agents reuse it), extract (pull memories from a conversation transcript or freeform text), trace (harvest a session JSONL / tool-call log into run-tagged r
wyrm_capture_traceHarvest a harness's working trace into run-tagged review-queue candidates (OFFLINE). Ingests a Claude Code session transcript (JSONL), a ~/.dragon/traces file/dir, or WYRM_TRACE_TOOL_CALLS event output. The SAME local extractor as auto-capture (Ollama WYRM_EXTRACT_MODEL if set, else deterministic; never a cloud LLM) pulls durable truths/failures/decisions/patterns/lessons; secrets (API keys, token
wyrm_check_updatewrite actionCheck whether a newer wyrm-mcp is available on npm. Cached 24h by default; pass force:true to bypass cache.
wyrm_cloud_backupLegacy whole-DB snapshot backup to encrypted cloud storage (Pro+): backup, restore, list, prune. This is a full-database snapshot (last-write-wins on restore), NOT the sovereign per-row sync; for multi-device memory use wyrm_cloud_sync action=sovereign. Keep this for simple point-in-time backups.
wyrm_cloud_syncCloud sync. The SOVEREIGN path is the promoted one: zero-knowledge, per-row AES-256-GCM E2E-encrypted delta sync with tombstone propagation; the cloud never sees plaintext. Use action 'sovereign' to sync (push+pull), 'sovereign-preview' for a dry run, 'sovereign-status' to show device + sync state. For hands-off periodic sync, 'sovereign-daemon-start' / 'sovereign-daemon-stop' / 'sovereign-daemon-
wyrm_context_buildUse to build a compact context brief for the current task under a token budget - relevant patterns, lessons, and truths in one formatted block; max_tokens elides low-score items to recallable stubs.
wyrm_cost_reportView estimated API cost report for current billing period (Pro+)
wyrm_data_batch_insertwrite actionBatch insert multiple data points efficiently
wyrm_data_categoriesList all data categories for a project
wyrm_data_insertwrite actionInsert data into the data lake for a project
wyrm_data_queryQuery data from the data lake
wyrm_decided_becauseUse to link a choice or decision to the assumption or evidence it was based on - records a causal edge (truth/quest/artifact/session) so stale foundations invalidate downstream.
wyrm_decision_downstreamList all decisions that depend on the given source. Use before invalidating a truth to see the blast radius.
wyrm_decision_invalidateCascade-invalidate all decisions downstream of a source (recursive). Use when a foundational truth turns out to be wrong. Returns the set of affected (kind, id) pairs.
wyrm_decision_upstreamList all sources a decision was based on (incoming edges). Walks the 'why did we choose this?' chain.
wyrm_digestRender a plain-English summary of what Wyrm has done for the operator over a period. Shows counts (sessions tracked, quests completed, repeated failures blocked, ground truths set, references clipped, hours logged) and highlights so a non-technical operator can see Wyrm's actual contribution. Use this when the user asks 'what did Wyrm do?', 'is Wyrm doing anything?', or to demonstrate value to ske
wyrm_distillDistill a work session into candidate memory artifacts for review. Parses the session's objectives, decisions, and outcomes into structured artifacts (lessons, patterns, anti-patterns) and queues them for approval via wyrm_review. Use at session end to extract institutional knowledge.
wyrm_embedMake Wyrm FIRST-PRIORITY, always-loaded memory across Claude Code and other CLIs, so it isn't ignored and is consulted proactively, not just when called. Prepends a managed 'Wyrm is your memory. Consult it FIRST.' directive to the TOP of each client's always-loaded instruction file (~/.claude/CLAUDE.md globally; project CLAUDE.md/AGENTS.md, and with allClients also .cursorrules/.windsurfrules/.git
wyrm_encrypt_setupSet up or check encryption status for sensitive data (Pro+)
wyrm_entity_addAdd an entity to the knowledge graph (person, concept, tool, etc.)
wyrm_entity_graphGet the neighborhood graph around an entity: all connected nodes within N hops
wyrm_entity_linkwrite actionCreate a relationship between two entities in the knowledge graph
wyrm_entity_mergeMerge two entities: combines aliases, redirects relationships, deletes the source
wyrm_entity_pathFind the shortest path between two entities in the knowledge graph
wyrm_entity_searchSearch for entities in the knowledge graph
wyrm_events_publishwrite actionLive Memory: manually publish an event onto a project's stream (e.g. a tool_call or presence marker). Failure-isolated: never throws. Payload is stored only when isShared is true (reference-only otherwise).
wyrm_events_replicateLive Memory (Phase 3): one-shot cross-device replication with a peer Wyrm node: pulls the peer's shared events and pushes ours over the peer's HTTP surface. Privacy-gated (only is_shared events leave the box; reference-only rows carry no payload), with automatic dedup + echo-suppression. Watermarks persist, so repeat calls are incremental. Returns pulled/pushed/duplicate counts.
wyrm_events_sinceLive Memory: pull events newer than a cursor for a project, in chronological order. Idempotent: safe to re-poll. Returns the events and the new head cursor to pass next time.
wyrm_events_subscribeUse to START consuming a project's Live Memory event stream: returns the current head cursor plus a recent chronological window of events in one read-only call. Nothing persists server-side; poll wyrm_events_since with the returned cursor for new events. Returns disabled:true if WYRM_LIVE_MEMORY is off. Keywords: events, live memory, event stream, cursor, tail events, watch project, replication fe
wyrm_failure_checkUse before proposing or executing any fix, command, or approach - did this fail before? Is it a known landmine? Counter-pattern memory: returns unresolved matching failures (empty = safe to proceed); show the mistakes already made on a project with `wyrm failure list` (CLI). Subagents: check before retrying anything flagged.
wyrm_failure_listList unresolved failures for a project (or globally), most-recent-first.
wyrm_failure_recordUse when an approach failed or something broke - log the dead end so nobody tries it again. Identical (scope, target, description) coalesces with occurrences++; when the root cause is fixed, stop flagging it with `wyrm failure resolve <id>` (CLI). Run-scoped failures quarantine until confirmed.
wyrm_failure_resolveMark a failure as resolved (the underlying issue was fixed). Keeps history but excludes from check() results.
wyrm_feedbackRecord whether a recalled knowledge artifact was useful. Adjusts confidence over time: successful reuse boosts it, failure lowers it. Call after applying a recalled pattern or lesson.
wyrm_goal_abandonAbandon a goal (won't be auto-pursued; record kept for audit).
wyrm_goal_completeManually mark a goal completed (e.g. when the agent reports done or the operator finishes it).
wyrm_goal_iterationsList the OODA iterations Wyrm has run for a goal: what it observed, decided, and resulted.
wyrm_goal_listList goals, optionally filtered by status / project. Default: active goals, prioritized.
wyrm_goal_pausePause a goal; wyrm-loop will skip it until resumed.
wyrm_goal_resumeResume a paused goal.
wyrm_goal_setSet a persistent goal Wyrm will pursue across sessions. Goals carry title, success_criteria, deadline, priority, and a max_iterations cap. The wyrm-loop daemon picks the highest-priority active goal each tick.
wyrm_harvestAuto-populate memory from artifacts you already produce. Walks a project (or ALL registered projects) and harvests durable facts from its docs (README/CLAUDE/AGENTS/ARCHITECTURE) plus recent commit subjects (git log) into the REVIEW QUEUE; approve/reject with wyrm_review, nothing is auto-trusted. Idempotent (re-runs skip what's already harvested). Use dryRun to preview. The fix for a thin corpus.
wyrm_hours_reportHours worked, derived from sessions in a date range. Per-project breakdown + per-session line items. Falls back to a default-hour estimate for sessions with no content.
wyrm_import_gitImport a list of commits into the Wyrm memory review queue. Useful for onboarding a project's history or capturing recent work.
wyrm_import_prImport a pull request (title, body, review comments) into the Wyrm memory review queue to extract patterns and heuristics.
wyrm_import_rulesImport a .cursorrules / copilot-instructions file into Wyrm. Parses by section and creates ground truths (for constraint/rule language) or memory artifacts (for general guidelines).
wyrm_inject_promptOpt-in: inject a Wyrm session-prime instruction block into .github/copilot-instructions.md and/or .cursor/rules for a project. Uses managed markers so re-runs are safe.
wyrm_introReturn a plain-English explanation of what Wyrm is and what it does. Aimed at HUMANS who don't yet understand Wyrm's value: co-founders, operators, designers, anyone who didn't read the docs. Call this when a human user asks 'what does Wyrm even do?' or seems unaware Wyrm is involved in their AI assistant's behavior. NOT for AI-agent self-orientation (use wyrm_capabilities for that).
wyrm_invoice_generateGenerate a markdown invoice from a date-ranged hours report. Per-session line items + per-project totals + grand total.
wyrm_licenseView current license status, tier, and available features
wyrm_list_projectsList all registered projects with their status
wyrm_maintenanceUse for periodic upkeep of the memory store - archive old sessions, vacuum, prune stale events, sweep run quarantine. Admin-gated, destructive; fleets run it between waves.
wyrm_mcp_disableDisable an MCP server config (kept in DB but won't be spawned).
wyrm_mcp_listList registered MCP server configs.
wyrm_mcp_registerRegister an outbound MCP server config. Wyrm can then call its tools via wyrm_call_external. e.g. server_name='github', command='npx', args=['-y', '@modelcontextprotocol/server-github'], env={GITHUB_PERSONAL_ACCESS_TOKEN: '...'}.
wyrm_mcp_toolsList the tools a registered server exposes (one-shot tools/list call over MCP).
wyrm_migrate_promptRewrite the Wyrm-managed block in this project's AI-client instruction files (.cursor/rules, .github/copilot-instructions.md, CLAUDE.md, etc.) to the current canonical version. Operator-authored content outside the <!-- wyrm:start --> / <!-- wyrm:end --> markers is preserved verbatim. Dry-run by default; pass apply:true to write changes.
wyrm_orchestrate_taskClassify a task and get automatic orchestration recommendation (ensemble voting, parallel research, etc)
wyrm_orchestration_configGet or update auto-orchestration configuration
wyrm_orchestration_statsGet auto-orchestration effectiveness statistics and task distribution
wyrm_presence_announceUse from every fleet agent to announce presence and heartbeat liveness: upserts a TTL row that orchestrators and sibling agents poll before assigning or stealing work, stamped with the ambient run_id and the agent's fleet role so the board reads per-run. Re-announce to heartbeat; dead sessions expire by TTL and are reaped by wyrm_maintenance. Announce BEFORE wyrm_quest_claim - claims require a pre
wyrm_presence_listUse from an orchestrator to see which agents are live right now (heartbeat within TTL) before dispatching work - optionally scoped to a project or to agents touching a specific file, so file-level collisions surface before they happen.
wyrm_presence_releaseUse on clean agent exit: removes the presence row and drops every quest claim the agent holds, so queued work is immediately re-claimable by the rest of the fleet instead of waiting out the TTL. Idempotent - safe to call twice.
wyrm_project_contextGet full context for a specific project including recent sessions, quests, and stored context
wyrm_reference_addClip a design reference (URL, image path, palette, or inline snippet) for inspiration. Stored per-project (or globally if no project path). Tag aggressively: tags drive future search and recall when building a new project in the same vein.
wyrm_reference_listBrowse saved design references. Filter by project or tag. Default: 50 most recent across all projects.
wyrm_reference_searchFull-text search across design references' title / notes / tags. Returns matching references sorted by recency.
wyrm_reindexRebuild embeddings for a project or all projects. Regenerates vectors for sessions, quests, data, and memory artifacts (the latter power hybrid recall).
wyrm_rememberStore a distilled knowledge artifact: proven patterns, lessons learned, anti-patterns, and reasoning traces. These are recalled automatically by wyrm_context_build to help AI models apply past knowledge to new tasks. Example: wyrm_remember({ projectPath: '/home/user/api', kind: 'anti_pattern', problem: 'Jest suite hung after adding the SSE server', validatedFix: 'close() the server in afterAll; it
wyrm_replicationUse to sync memory between machines and watch the live event mesh - action=start|stop|status|tick (daemon + peers; tokens via tokenEnv), conflicts (did the last sync leave conflicts to resolve?), resolve, publish, since, subscribe (watch a project's live activity feed for changes from other agents), replicate (one-shot: sync my memory over to another machine or peer), unshare (kind + id: make a re
wyrm_scaffold_getFind the best reasoning scaffold for a task description. Returns the most relevant structured checklist, or null if no match meets the confidence threshold.
wyrm_scaffold_saveSave a reasoning scaffold: a structured checklist that guides step-by-step thinking for a specific problem type. Scaffolds are automatically surfaced by wyrm_context_build when the task matches, helping AI models apply proven reasoning patterns.
wyrm_scan_projectsScan a directory for git projects and register them. Use this to auto-discover all projects.
wyrm_self_updatewrite actionRun `npm install -g wyrm-mcp@latest` to upgrade. Returns the install transcript. Requires the operator to have write access to the global npm prefix.
wyrm_setupAuto-detect installed AI clients (VS Code, Claude Desktop, Cursor, Windsurf, Zed) and configure Wyrm's MCP server in all of them. Run this to connect Wyrm to a new AI or after switching providers.
wyrm_spec_registerMake spec-kit Wyrm-native. Reads a spec directory (spec.md title/summary + tasks.md task list) and creates one Wyrm quest per task, linked to a project, with a stored spec\u2192project link. Idempotent: re-running updates the same quests (deduped by a per-spec-task signature) instead of duplicating.
wyrm_statsUse for a health snapshot of the memory database - row counts, vector index coverage, usage.
wyrm_syncSync database with .wyrm folders in all projects
wyrm_token_deletewrite actionRemove a design token from a project.
wyrm_token_getRetrieve all design tokens for a project, optionally filtered by category. Returns the design system primitives the project is built on.
wyrm_token_setSet a design token for a project. Tokens are colour / type / spacing / motion / shadow / radius / breakpoint / custom: the design system primitives the project is built on. Stored first-class so AI helpers working on creative tasks don't have to re-derive the system from scattered CSS each time. Upserts on (project_id, category, key).
wyrm_tool_analyticsWyrm watches Wyrm: per-tool usage stats (volume, error rate, p50/p95 latency) over a configurable window. Use to find under-performing tools and tune retrieval/ranking. Pass mode='overview' for the total summary, 'usage' for per-tool, 'errors' for recent error sample.
wyrm_truth_getUse to read the established facts and ground rules for a codebase - validated truths the AI should treat as baseline, optionally filtered by category.
wyrm_truth_setUse to lock in a confirmed fact or constraint as project ground truth - architecture, conventions, key decisions. Injected first into every brief; re-setting the same category+key supersedes (history kept).
wyrm_usageView token usage stats, cache hit rates, and estimated cost savings. Helps monitor and optimize AI credit consumption.
wyrm_vector_setupConfigure embedding provider and download models. Supports local, OpenAI, and Ollama.
Public scan report
scanner v0.1.8 · 2026-09-19 · same rubric, same numbers if you re-run it
- Code scan218 source files scanned15/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 6 days ago15/15
- Maintainer identitynamespace and repository owner differ; website matches verified namespace6/10
Findings (2)
- mediumnpm install lifecycle script present
install.script - mediumnpm install lifecycle script present
install.scriptpackage.json: …", "NOTICE" ], "scripts": { "preinstall": "node scripts/preinstall.cjs", "pos…
Grade history
- 2026-09-19restoreC → Bscore 74: npm install lifecycle script present; npm install lifecycle script present
Install directly
Runs npx -y wyrm-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add wyrm -- npx -y wyrm-mcp
Wyrm: common questions
- Is Wyrm MCP server safe?
- Mostly: it is graded B (74/100). Read the Wyrm safety report
- How do I install Wyrm?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Wyrm need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Wyrm maintained?
- The last commit was 6 days ago (2026-09-14). The latest release is v9.2.3.
- What can I use instead of Wyrm?
- Servers from other publishers that do the same job: Plur MCP server, Vestige MCP server and Prism Coder MCP server. Compare all Wyrm alternatives.
Alternatives to Wyrm
Same job from other publishers: the closest match first, then the best rated.
- PlurOpen, local-first engram memory for AI agents: read, correct, delete; shared over MCP.not reviewedEstablishedA
- VestigeLocal-first memory for AI agents that reaches backward to find a failure's root cause.not reviewedEstablishedB
- Prism CoderSession memory for coding agents: local-first recall, drift detection, on-device inference.not reviewedEstablishedC
MemorixLocal-first project memory with legacy MCP and 2026 discovery compatibility.not reviewedEstablishedB- Deja Vudeja-vu: local memory over the session histories of thirty-three coding agents.not reviewedEstablishedA