Swift Actor Persistence
affaan-m/ECC
Thread-safe data persistence in Swift using actors — in-memory cache with file-backed storage, eliminating data races by design.
Persistent hierarchical memory shared across every AI tool the user runs.
$ npx skills add ThinkfleetAI/memmesh --skill memmesh -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ThinkfleetAI/memmesh memmesh --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "memmesh" agent skill from https://github.com/ThinkfleetAI/memmesh/tree/main/skills/memmesh into .claude/skills/memmesh/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memmesh", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ThinkfleetAI/memmesh/tree/main/skills/memmeshType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ThinkfleetAI/memmesh --skill memmesh -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ThinkfleetAI/memmesh memmesh --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ThinkfleetAI/memmesh.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/memmesh .agents/skills/memmesh && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "memmesh" agent skill from https://github.com/ThinkfleetAI/memmesh/tree/main/skills/memmesh into .agents/skills/memmesh/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memmesh", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ThinkfleetAI/memmesh --skill memmesh -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ThinkfleetAI/memmesh memmesh --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ThinkfleetAI/memmesh.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/memmesh .cursor/skills/memmesh && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "memmesh" agent skill from https://github.com/ThinkfleetAI/memmesh/tree/main/skills/memmesh into .cursor/skills/memmesh/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memmesh", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ThinkfleetAI/memmesh.git --path skills/memmesh--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ThinkfleetAI/memmesh --skill memmesh -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ThinkfleetAI/memmesh memmesh --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ThinkfleetAI/memmesh.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/memmesh .gemini/skills/memmesh && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "memmesh" agent skill from https://github.com/ThinkfleetAI/memmesh/tree/main/skills/memmesh into .gemini/skills/memmesh/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memmesh", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ThinkfleetAI/memmesh memmeshInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ThinkfleetAI/memmesh --skill memmesh -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ThinkfleetAI/memmesh.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/memmesh .github/skills/memmesh && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "memmesh" agent skill from https://github.com/ThinkfleetAI/memmesh/tree/main/skills/memmesh into .github/skills/memmesh/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memmesh", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ThinkfleetAI/memmesh --skill memmesh -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ThinkfleetAI/memmesh memmesh --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ThinkfleetAI/memmesh.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/memmesh .opencode/skills/memmesh && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "memmesh" agent skill from https://github.com/ThinkfleetAI/memmesh/tree/main/skills/memmesh into .opencode/skills/memmesh/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "memmesh", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
memmeshPersistent 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. 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.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit bba48f8. It shows what the files ask for, not the result of running them.
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.
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.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from ThinkfleetAI/memmesh at commit bba48f8, republished under its Apache-2.0 licence (© ThinkfleetAI). 661 words, ~1,345 tokens.
.claude/skills/memmesh/SKILL.md (or your agent's skills folder).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.
Before your first substantive response, call memory.search to load relevant context:
{ "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.
After every user message, call memory.observe with the raw text:
{ "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.
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.
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:
Request it. Call memory_secret_request with a stable name and a short
purpose:
{ "name": "memory_secret_request",
"arguments": { "name": "aws-prod", "purpose": "list S3 buckets" } }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.Use it without seeing it. Reference the secret by name as
{{memmesh:NAME}} inside a command and run it through memory_secret_run:
{ "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].
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 the engine picks defaults; you can override in the call when you have better context:
| Scope | When |
|---|---|
user | Personal preferences / identity (default for individual facts) |
project | A specific project's rules / decisions / facts |
agent / session / location / platform | Rarely 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.
When you don't have explicit values:
platformId: "local" (single-machine default)userId: $USER (OS username)projectId: git repo directory name, or nullThe 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
Just SKILL.md in skills/memmesh of ThinkfleetAI/memmesh.
Open the folder on GitHubat commit bba48f8
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Memmesh this skillThinkfleetAI/memmesh | 420 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Swift Actor Persistenceaffaan-m/ECC | 275k | 4 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Agent Hierarchical Coordinatorruvnet/ruflo | 74k | 2 repos | ~2.8k | Automated safety check: Pass | MIT | |
| Session Persistruvnet/ruflo | 74k | — | ~415 | Automated safety check: Notes | MIT | |
| Swift Actor Persistenceaffaan-m/ECC | 275k | 3 repos | ~871 | Automated safety check: Pass | MIT | |
| Swift Actor Persistenceaffaan-m/ECC | 275k | — | ~1.1k | Automated safety check: Pass | MIT |
affaan-m/ECC
Thread-safe data persistence in Swift using actors — in-memory cache with file-backed storage, eliminating data races by design.
ruvnet/ruflo
Agent skill for hierarchical-coordinator - invoke with $agent-hierarchical-coordinator
ruvnet/ruflo
Persist and restore agent sessions across conversations with state snapshots
affaan-m/ECC
在 Swift 中使用 actor 实现线程安全的数据持久化——基于内存缓存与文件支持的存储,通过设计消除数据竞争. An agent skill from affaan-m/ECC.
affaan-m/ECC
Swiftでactorを使用してスレッドセーフなデータ永続化を実装する——メモリキャッシュとファイルバックドストレージを組み合わせ、設計によってデータ競合を排除する。
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…
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.
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.
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)…
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.
ThinkfleetAI/memmesh
MemMesh CLI + local MCP server — the zero-infra, no-API-key path to the same engine as the hosted SDK.
ThinkfleetAI/memmesh
MemMesh TypeScript SDK reference (@thinkfleet/memory-sdk) for the hosted platform at app.memmesh.ai.
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.
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.
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.
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.
SKILL.md names no scripts, command-line tools or credentials: Memmesh is instructions for the agent only.
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.
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.
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.
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.
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.
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.