Persistent memory for LLMs and apps. Content-addressed storage with dedupe, compression, full-text and vector search.
- C++ 93.6%
- Python 2.1%
- Meson 1.6%
- Shell 1.4%
- Lean 0.7%
- Other 0.6%
|
Some checks failed
Build and Push Docker Images / Build Docker Image (linux/arm64 native) (push) Waiting to run
Build and Push Docker Images / Create Multi-arch Manifest (push) Blocked by required conditions
Tests / warm (push) Blocked by required conditions
Tests / Static Analysis (push) Waiting to run
Tests / Tests (linux-arm64) (push) Blocked by required conditions
Tests / Tests (macos-arm64) (push) Blocked by required conditions
Tests / Tests (linux-x86_64-asan) (push) Blocked by required conditions
Tests / Tests (linux-x86_64-ubsan) (push) Blocked by required conditions
Tests / Tests (linux-x86_64) (push) Blocked by required conditions
Tests / Tests (windows-x86_64) (push) Blocked by required conditions
Tests / Warm Conan & ccache (linux-arm64) (push) Waiting to run
Tests / Warm Conan & ccache (macos-arm64) (push) Waiting to run
Tests / Warm Conan & ccache (linux-x86_64) (push) Waiting to run
Tests / Warm Conan & ccache (macos-x86_64) (push) Waiting to run
Tests / Warm Conan & ccache (windows-x86_64) (push) Waiting to run
Build and Push Docker Images / Build Docker Image (linux/amd64) (push) Failing after 12s
Secret scan / gitleaks (push) Failing after 7s
Mirror source to Forgejo / mirror (push) Has been skipped
Release Please / release-please (push) Failing after 7s
execute_on_io_context posted a handler that set "done" under the lock and then called cv.notify_one() after releasing it. The mutex and condition variable are stack locals of the calling frame, so the waiter could wake in that window, return, and destroy them -- leaving the IO thread signalling a destroyed condition variable in reused stack memory. On shutdown that surfaced as an ASan BUS with a corrupted return address from SocketServer::stop(). Notify while still holding the lock, so the waiter cannot return before the notify completes. Release-As: 0.20.0 Signed-off-by: trvon <me@trevon.dev> |
||
|---|---|---|
| .act | ||
| .devcontainer | ||
| .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.
What it provides
- SHA-256 content-addressed storage with chunk-level deduplication and compression
- SQLite FTS5, Simeon embeddings, hybrid search, and knowledge-graph retrieval
- Tree-sitter symbol extraction and source-aware graph traversal
- 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
# Container
docker pull ghcr.io/trvon/yams:latest
Linux packages and Windows artifacts are published with releases. To build from source, see docs/BUILD.md.
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.