Agent skill

Memmesh

by ThinkfleetAI in ThinkfleetAI/memmesh

Persistent hierarchical memory shared across every AI tool the user runs.

Apache-2.0Auto-check passed

Install Memmesh

skills CLI
$ npx skills add ThinkfleetAI/memmesh --skill memmesh -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ThinkfleetAI/memmesh memmesh --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ThinkfleetAI/memmesh.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/memmesh .claude/skills/memmesh && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
memmesh
GitHub stars
420
Token cost
~1.3k tokens
SKILL.md length
661 words
Files
1
Skills in repo
24
Repo updated
First seen
Licence
Apache-2.0

At a glance

Persistent hierarchical memory shared across every AI tool the user runs.

  • Works in 2 steps: Request it. Call memory_secret_request… → Use it without seeing it. Reference the…
  • SKILL.md covers The two rules, When to use memory.save (rare), Credentials & secrets — ALWAYS… and Scope, citations, recovery, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Memmesh is an agent skill from ThinkfleetAI/memmesh. Persistent hierarchical memory shared across every AI tool the user runs. The engine decides what's worth saving — your job is just to feed it raw text via memory.observe and to recall via memory.search when context would help. Use both on every session.

Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: Persistent, self-improving memory for AI agents. Local-first Rust memory engine with MCP support. The licence is Apache-2.0.

Example prompts

  • “/memmesh”

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Request it. Call memory_secret_request with a stable name and a short
  2. Use it without seeing it. Reference the secret by name as

What it can do on your machine

Read from SKILL.md and the folder at commit bba48f8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are jsonc).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Memmesh loads about 1.3k tokens when it runs. Until then it costs about 67 tokens; SKILL.md has 661 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~67
When it runs · the whole SKILL.md, loaded when a task matches
~1.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ThinkfleetAI/memmesh at commit bba48f8, republished under its Apache-2.0 licence (© ThinkfleetAI). 661 words, ~1,345 tokens.

Download SKILL.mdSave it as .claude/skills/memmesh/SKILL.md (or your agent's skills folder).
name
memmesh
description
Persistent hierarchical memory shared across every AI tool the user runs. The engine decides what's worth saving — your job is just to feed it raw text via `memory.observe` and to recall via `memory.search` when context would help. Use both on every session.

ThinkFleet Memory — Engine-Side Filtering

You have access to a persistent memory system via the memmesh MCP server. The engine decides what to save. You just feed it raw text.

This is the opposite of how some memory systems work, where the agent has to judge "is this worth saving?" — that approach fails because judgment varies session to session. Here, you call memory.observe with the user's raw message and the engine runs deterministic extraction (regex + structural rules + optional LLM refinement) to find anything memorable.


The two rules

Rule 1 — RECALL at the start of every session

Before your first substantive response, call memory.search to load relevant context:

jsonc
{ "name": "memory.search",
  "arguments": { "projectId": "<current project>", "limit": 20 } }

If you don't know the project, omit projectId — search by userId instead.

Skip recall only on pure pleasantries ("hi", "thanks"). The moment the user says anything substantive, search first.

Rule 2 — OBSERVE every user message

After every user message, call memory.observe with the raw text:

jsonc
{ "name": "memory.observe",
  "arguments": {
    "text": "<the user's exact message>",
    "role": "user",
    "projectId": "<current project, if any>",
    "userId": "<current OS user>"
  } }

Don't filter. Don't ask "should this be saved?" Just send the text. The engine returns the list of items it saved (may be empty for filler — that's fine, you don't have to do anything with the response).

memory.observe is cheap (heuristic-only by default), idempotent (re-observing the same text is a no-op for duplicates), and silent on filler.


When to use memory.save (rare)

memory.observe is your primary tool. memory.save is only for the unusual case where you know exactly what to save and want to bypass the extractor — e.g., the user explicitly says "please save the following note verbatim: ...".

If you find yourself reaching for memory.save to "save what the user just said," that's a sign you should be using memory.observe instead.


Credentials & secrets — ALWAYS use the vault, never the chat

When a task needs a credential — an API key, password, token, or connection string — do NOT ask the user to type or paste it into the conversation, and never write the raw value into a command. Chat and transcripts are not a safe place for secrets. Route it through the encrypted vault instead:

  1. Request it. Call memory_secret_request with a stable name and a short purpose:

    jsonc
    { "name": "memory_secret_request",
      "arguments": { "name": "aws-prod", "purpose": "list S3 buckets" } }
    • If it reports the secret is missing, it returns a one-click link that opens the vault with the name pre-filled (e.g. http://127.0.0.1:7878/?tab=vault&add=aws-prod). Relay that link to the user and ask them to enter the value there (or tell them to run memmesh secret set aws-prod). Then wait — do not proceed until it exists.
    • If it's available, go straight to step 2.
  2. Use it without seeing it. Reference the secret by name as {{memmesh:NAME}} inside a command and run it through memory_secret_run:

    jsonc
    { "name": "memory_secret_run",
      "arguments": { "command": "aws s3 ls --profile {{memmesh:aws-prod}}" } }

    The engine substitutes the real value inside its own process, runs the command, and returns output with every secret value scrubbed to [redacted]. You never receive the plaintext — so never try to echo or print a secret to "read" it; that returns [redacted].

Show full SKILL.md (189 more words)Show less

Use memory_secret_list to see which secrets already exist (names only, never values). Rule of thumb: the moment you're about to say "please paste your API key / password," stop and call memory_secret_request instead.


Scope, citations, recovery

Scope the engine picks defaults; you can override in the call when you have better context:

ScopeWhen
userPersonal preferences / identity (default for individual facts)
projectA specific project's rules / decisions / facts
agent / session / location / platformRarely set explicitly

Citations — when a recalled memory informs your response, mention it briefly so the user can correct stale info:

"Based on a saved preference (Vitest over Jest), I'll write the test using Vitest's expect."

Corrections — if the user contradicts a recalled memory ("actually we switched to Jest"), just call memory.observe with the new statement. The engine handles supersession.


Defaults for IDs

When you don't have explicit values:

  • platformId: "local" (single-machine default)
  • userId: $USER (OS username)
  • projectId: git repo directory name, or null

Working principle

The point of this system is that the user never has to repeat themselves, in any AI tool. Observe everything; recall proactively; cite what you used. The engine handles the rest.

© ThinkfleetAI, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/memmesh of ThinkfleetAI/memmesh.

Open the folder on GitHubat commit bba48f8

Compare with similar skills

Memmesh next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Memmesh compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Memmesh this skillThinkfleetAI/memmesh420—~1.3kAutomated safety check: PassApache-2.0
Swift Actor Persistenceaffaan-m/ECC275k4 repos~1.2kAutomated safety check: PassMIT
Agent Hierarchical Coordinatorruvnet/ruflo74k2 repos~2.8kAutomated safety check: PassMIT
Session Persistruvnet/ruflo74k—~415Automated safety check: NotesMIT
Swift Actor Persistenceaffaan-m/ECC275k3 repos~871Automated safety check: PassMIT
Swift Actor Persistenceaffaan-m/ECC275k—~1.1kAutomated safety check: PassMIT

Similar skills

  • Thread-safe data persistence in Swift using actors — in-memory cache with file-backed storage, eliminating data races by design.

    275k GitHub starsUsed in 4 repos~1.2k tokens
    MobileAuto-check passed
  • Agent skill for hierarchical-coordinator - invoke with $agent-hierarchical-coordinator

    74k GitHub starsUsed in 2 repos~2.8k tokens
    Agent WorkflowsAuto-check passed
  • Session Persist

    ruvnet/ruflo

    Persist and restore agent sessions across conversations with state snapshots

    74k GitHub stars~415 tokensUpdated today
    Auto-check: notes
  • 在 Swift 中使用 actor 实现线程安全的数据持久化——基于内存缓存与文件支持的存储,通过设计消除数据竞争. An agent skill from affaan-m/ECC.

    275k GitHub starsUsed in 3 repos~871 tokens
    MobileAuto-check passed
  • Swiftでactorを使用してスレッドセーフなデータ永続化を実装する——メモリキャッシュとファイルバックドストレージを組み合わせ、設計によってデータ競合を排除する。

    275k GitHub stars~1.1k tokensUpdated 3 days ago
    MobileAuto-check passed
  • Detecting Wmi Persistence

    mukul975/Anthropic-Cybersecurity-Skills

    Detect WMI event subscription persistence (MITRE T1546.003) by analyzing Sysmon Event IDs 19, 20, and 21 for malicious EventFilter, EventConsumer, and FilterToConsumerBinding creation…

    34k GitHub stars~914 tokensUpdated 1 mo ago
    DevOps & CloudAuto-check passed

More from ThinkfleetAI/memmesh

All 24 skills in this repo
  • Behaviors

    ThinkfleetAI/memmesh

    Surface emergent behavior patterns MemMesh has mined from a subject's history — recurring habits nobody predefined, each with prevalence, stability, and the evidence behind it.

    420 GitHub stars~519 tokensUpdated 1 mo ago
    Auto-check passed
  • Benchmark

    ThinkfleetAI/memmesh

    Run MemMesh's competitive benchmark harness (LOCOMO / BEAM) to compare retrieval quality, tokens, latency, and cost against Mem0, Zep, full-context, and naive-RAG baselines.

    420 GitHub stars~460 tokensUpdated 1 mo ago
    Auto-check passed
  • Context Loader

    ThinkfleetAI/memmesh

    Load relevant MemMesh context before starting work — searches memory and, for a specific subject, assembles a token-budgeted bundle (profile + behavior patterns + forward predictions + top memories)…

    420 GitHub stars~530 tokensUpdated 1 mo ago
    Auto-check passed
  • Graph

    ThinkfleetAI/memmesh

    Query MemMesh's bi-temporal knowledge graph — multi-hop reasoning across entities, point-in-time "what did we believe on date X", and anticipatory retrieval via spreading activation.

    420 GitHub stars~611 tokensUpdated 1 mo ago
    Auto-check passed
  • Memmesh CLI

    ThinkfleetAI/memmesh

    MemMesh CLI + local MCP server — the zero-infra, no-API-key path to the same engine as the hosted SDK.

    420 GitHub stars~855 tokensUpdated 1 mo ago
    Auto-check passed
  • Memmesh SDK

    ThinkfleetAI/memmesh

    MemMesh TypeScript SDK reference (@thinkfleet/memory-sdk) for the hosted platform at app.memmesh.ai.

    420 GitHub stars~1.6k tokensUpdated 1 mo ago
    Auto-check passed

Questions about Memmesh

What does Memmesh do?

Persistent hierarchical memory shared across every AI tool the user runs. Memmesh is an agent skill from ThinkfleetAI/memmesh. Persistent hierarchical memory shared across every AI tool the user runs.

How do I install Memmesh in Claude Code?

Run `npx skills add ThinkfleetAI/memmesh --skill memmesh -a claude-code`. Or copy the skill folder (skills/memmesh in ThinkfleetAI/memmesh) into .claude/skills/memmesh in your project. Claude Code loads it when a task matches its description.

How do I install Memmesh in Codex?

Run `npx skills add ThinkfleetAI/memmesh --skill memmesh -a codex`. Or copy the skill folder (skills/memmesh in ThinkfleetAI/memmesh) into .agents/skills/memmesh in your project. Codex loads it when a task matches its description.

Can I use Memmesh in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ThinkfleetAI/memmesh --skill memmesh -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/memmesh, .gemini/skills/memmesh, .github/skills/memmesh and .opencode/skills/memmesh in your project.

What does Memmesh need to run?

SKILL.md names no scripts, command-line tools or credentials: Memmesh is instructions for the agent only.

Does Memmesh access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Memmesh safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Memmesh use?

Memmesh is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Memmesh use?

About 1.3k tokens (SKILL.md is roughly 5.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Memmesh?

Skills that share tags, products or a category with Memmesh: Swift Actor Persistence (affaan-m/ECC, 275k stars), Agent Hierarchical Coordinator (ruvnet/ruflo, 74k stars), Session Persist (ruvnet/ruflo, 74k stars) and Swift Actor Persistence (affaan-m/ECC, 275k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Memmesh?

ThinkfleetAI (a GitHub organization) maintains it in ThinkfleetAI/memmesh, which has 420 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on August 25, 2026.

Source: ThinkfleetAI/memmesh on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.