- C++ 93.1%
- Python 2.4%
- Shell 1.6%
- Meson 1.6%
- Lean 0.7%
- Other 0.6%
Dispatch explicit committed memory reads on admitted workers, checking the governor before queueing and before I/O. Require the coordinator instead of using the synchronous strand fallback; keep cached APIs and wire opcodes unchanged and preserve task-record validation. Use the paged content adapter, distinguish typed local admission deferral from hard errors and retain known deferred totals/ages after incomplete scans. Forward exact topology totals independently of diagnostic samples and keep attempted cycles distinct from complete scans and successful apply. Add real daemon IPC tests for authenticated off-resident reads, pressure health, exact 70-edge status/retry accounting and authenticated cold document retrieval through the existing MCP get handler, DaemonClient IPC and CAS. Reanchor existing dispatcher environment-read entries without new exceptions. Scan uncertainty remains C++-only: typed wire/status/MCP exposure, broader fault/readiness/P2P convergence and patched resource measurements remain open. Signed-off-by: trvon <git@trevon.dev> |
||
|---|---|---|
| .act | ||
| .devcontainer | ||
| .forgejo/workflows | ||
| .githooks | ||
| .github | ||
| .vscode | ||
| conan | ||
| docker/local-ci | ||
| docs | ||
| examples | ||
| external | ||
| formal/topology | ||
| homebrew-yams@c51677b0eb | ||
| include | ||
| meson | ||
| packaging | ||
| plugins | ||
| public | ||
| scripts | ||
| sql | ||
| src | ||
| subprojects | ||
| tests | ||
| third_party | ||
| tools | ||
| .actrc | ||
| .clang-format | ||
| .clang-tidy | ||
| .clangd | ||
| .cppcheck-suppressions | ||
| .dockerignore | ||
| .gitignore | ||
| .gitleaks.toml | ||
| .gitmodules | ||
| .infer-suppress | ||
| .opengrepignore | ||
| .quality-deadcode-ignore | ||
| .release-please-manifest.json | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CITATION.cff | ||
| CMakeLists.txt | ||
| CODE_OF_CONDUCT.md | ||
| commitlint.config.js | ||
| conanfile.py | ||
| CONTRIBUTING.md | ||
| Dockerfile | ||
| GOVERNANCE.md | ||
| LICENSE | ||
| MAINTAINERS.md | ||
| meson.build | ||
| meson_options.txt | ||
| mkdocs.yml | ||
| NOTICE | ||
| README.md | ||
| release-please-config.json | ||
| SECURITY.md | ||
| setup.ps1 | ||
| setup.sh | ||
| tsan.suppressions | ||
YAMS — Yet Another Memory System
Persistent, searchable memory for code, documents, and local applications. YAMS stores content once, deduplicates it, and retrieves it through text, vector, graph, and grep surfaces.
Experimental: YAMS is pre-1.0. Expect bugs and breaking changes.
Why YAMS
YAMS is local memory for people who work with LLMs. It runs on your machine and is harness-agnostic.
We believe LLM memory should be memory, and yours. It lives in a data directory you choose, in formats you can inspect and it can be exported or deleted whenever you decide. No account, no hosted service, and no model provider sits between you and what you have stored.
What it provides
- SHA-256 content-addressed storage with chunk-level deduplication and compression
- SQLite FTS5, Simeon embeddings, hybrid search, and knowledge-graph retrieval
- Document graph traversal over paths, versions, entities, and semantic neighbors
- Snapshots, Merkle tree diffs, corruption detection, and repair tooling
- A CLI, an MCP server over stdio, and a C ABI for plugins and mobile hosts
- Local-first operation with no account or hosted service requirement
Install
# macOS
brew install trvon/yams/yams
# Debian / Ubuntu
curl -fsSL https://repo.yamsmemory.ai/gpg.key \
| sudo gpg --dearmor -o /usr/share/keyrings/yams-stable.gpg
echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/yams-stable.gpg] https://repo.yamsmemory.ai/aptrepo stable main" \
| sudo tee /etc/apt/sources.list.d/yams-stable.list
sudo apt-get update && sudo apt-get install yams
# Container
docker pull ghcr.io/trvon/yams:latest
Fedora (DNF), Arch (pacman), Windows (MSI) and release archives are covered in the install guide, along with where YAMS keeps its config, data and logs, how to run the daemon as a service, and the settings most people change. To build from source, see docs/BUILD.md.
By default YAMS keeps its config in ~/.config/yams/config.toml, your corpus in
~/.local/share/yams, and daemon logs in ~/.local/state/yams
(%APPDATA% / %LOCALAPPDATA% on Windows).
Start
yams init
yams add ./README.md --tags docs
yams add src/ --recursive --include="*.cpp,*.h" --tags code
yams search "daemon lifecycle" --limit 5
yams grep "TODO" --include="*.cpp"
yams graph --explore "LifecycleComponent"
Run yams --help or yams <command> --help for the current command reference.
MCP
YAMS can expose a local corpus over MCP for compatible developer tools:
yams serve
{
"mcpServers": {
"yams": {
"command": "yams",
"args": ["serve"]
}
}
}
Project pages
Project
- GitHub: https://github.com/trvon/yams
- Self-hosted mirror: https://git.trevon.dev/trevon/yams
- Discord: https://discord.gg/rTBmRHdTEc
- License: GPL-3.0-or-later
See CONTRIBUTING.md for contribution workflow and SECURITY.md for responsible
vulnerability reporting.