A semantic memory store for AI assistants.
ling-mem is a single-binary CLI + optional web UI that remembers useful facts about you and your work across every session, every tool, and every project. LanceDB-backed, local-first, markdown-native where it counts.
Built as the default memory skill for Linggen; works equally well invoked from Claude Code or any tool that can shell out.
🚀 Status: v0.3.2 — prebuilt binaries available for macOS Apple Silicon and Linux (x86_64 + aarch64). Active development on
main. The pre-refactor code-indexing tool is preserved at thev0-legacygit tag.
- Remembers across sessions. Facts about who you are, how you prefer to work, what you've tried, what worked, what didn't.
- Semantic retrieval. Everything stored gets embedded (384-dim via
all-MiniLM-L6-v2). Find "berth calibration" by asking about "dock alignment." - Typed facts. Four default categories —
fact / preference / decision / learned— plustried / fixed / builtfor trajectory-level patterns. - Forgetting is first-class.
deleteby id,forgetby filter — refuses empty filters as a guardrail. - Self-updating.
ling-mem self-update --checkreports the latest release;ling-mem startembeds the same probe in its JSON so the agent can prompt the user when a new version ships.self-update --yesswaps the binary atomically and restarts the daemon. - Three ways to use it:
- As a Linggen skill — web app UI +
Memory_*tool dispatch in the agent. - As a Claude Code skill — SKILL.md body, model calls the CLI via Bash.
- Standalone — any script or tool can shell out to
ling-mem.
- As a Linggen skill — web app UI +
See doc/product-spec.md for the full product story and doc/tech-spec.md for the implementation contract.
# Add a fact
ling-mem add "prefers concise replies, no hedging" \
--type preference --from user
# Semantic search
ling-mem search "how do I format logs in dev" \
--context code/linggen --limit 5
# Browse by filter
ling-mem list --type preference --since 2026-01-01 --format text
# Forget a finished project
ling-mem forget --context trip-japan-2026 --yesDefault output is NDJSON on stdout — any model / script / shell can parse it. Pass --format text for human-readable lines.
The daemon (ling-mem start) also serves a built-in Data Browser at http://127.0.0.1:9888 for hands-on filter / edit / batch-delete.
The ling-mem binary ships as part of the ling-mem skill (in the linggen/skills repo at ling-mem/). Installing the skill is the recommended path — it fetches the prebuilt binary, wires up the SKILL.md, and seeds the core memory files.
Best experience: Linggen agent, which exposes typed Memory_query / Memory_write tools and a built-in dashboard. The skill also works with any other agent that can shell out (Claude Code, Codex, plain scripts) — they just call the ling-mem CLI directly.
git clone https://github.com/linggen/skills
cd skills/ling-mem
./install.sh # auto-detects ~/.linggen and/or ~/.claude
./install.sh --host=both # force install to both
LING_MEM_VERSION=v0.3.2 ./install.sh # pin a specific versionPrebuilt binaries are available for macOS Apple Silicon and Linux (x86_64 + aarch64) on the releases page.
To build from source instead:
git clone https://github.com/linggen/linggen-memory
cd linggen-memory
cargo build --release
./target/release/ling-mem --helpSee doc/tech-spec.md → Release process for the cross-compile + signing flow.
linggen-memory/
├── Cargo.toml # single crate
├── src/ # all Rust code (CLI, HTTP daemon, embed pipeline,
│ # LanceDB store)
├── static/ # Data Browser UI (baked into the binary via rust-embed,
│ # served at 127.0.0.1:9888 by the daemon)
├── doc/
│ ├── product-spec.md # features, user-facing behavior, scenarios
│ ├── tech-spec.md # schema, storage, CLI contract, release process
│ └── ui-spec.md # Data Browser UI: layout, endpoints, interactions
├── scripts/ # release.sh + Dockerfile.linux (multi-arch buildx)
├── assets/ # icon etc.
├── CHANGELOG.md # release notes per version
├── LICENSE # MIT
└── README.md # you are here
The thin skill wrapper (SKILL.md + dashboard + install.sh + scan/extract scripts) lives in the linggen/skills repo at ling-mem/ — separate from this binary's source.
MIT. See LICENSE.
This repo began as a code-indexing tool (RAG for your codebase, tree-sitter AST, local LLM chat). In 2026 it was refactored into a general-purpose semantic memory store for AI assistants. The pre-refactor tree is preserved at the v0-legacy git tag if you need to recover any of the original indexing logic.