Persistent memory for LLMs and apps. Content-addressed storage with dedupe, compression, full-text and vector search.
  • C++ 93.1%
  • Python 2.4%
  • Shell 1.6%
  • Meson 1.6%
  • Lean 0.7%
  • Other 0.6%
Find a file
Trevon ae15bf317a
perf(ingest): harden daemon batching and shutdown (#58)
* fix(daemon): harden model state ownership

Keep ModelPoolConfig single-defined and serialize telemetry snapshots to avoid ODR drift and torn concurrent reads.

* refactor(daemon): consolidate ingest pollers

Require the wake-timer contract so every post-ingest stage shares one event-driven poller configuration.

* refactor(daemon): unify repair execution

Share admission, operation ordering, cancellation, progress, and result aggregation between synchronous and asynchronous repair paths.

* refactor(daemon): unify runtime tuning

Resolve startup and reload settings through one typed path so parsing, precedence, and range validation cannot drift.

* refactor(daemon)!: remove dead IPC surfaces

Delete unreferenced framing, cancellation, and compatibility paths while keeping the active streaming protocol intact.

BREAKING CHANGE: callers using connectAsync or legacy MessageFramer and FrameReader helpers must migrate to connect, frame_message_into, feed, and get_frame.

* refactor(daemon): hide test hooks

Preserve test-library linkage without exposing daemon-only probes through production headers or external symbols.

* fix(daemon): avoid replaying successful adds

A fresh-connection transport retry reuses the response handler. Clear its stale EOF error when the retry returns a valid add response so the outer retry loop does not enqueue the document again.

* bench(ingest): enforce lossless pipeline runs

Separate admission, storage, drain, enrichment, and searchability timing. Decision-grade plans now reject drops, duplicate processing, incomplete pipelines, and experiment identity drift.

* bench(search): expose cold seed ingest timings

Pair generalized-memory quality arms with admission, storage, drain, searchability, and enrichment timing from their shared cold seed. Keep the observation distinct from repeated throughput measurements.

* perf(ingest): batch deferred content indexing

Directory ingestion already schedules content work through post-ingest. Avoid duplicate inline indexing and coalesce normal-priority trickles within a bounded window.

* feat(metadata): expose insert writer metrics

Separate queue, batch-apply, and transaction time so ingestion runs can attribute connection pressure without changing write semantics.

* fix(daemon): retry transient refused connects

The daemon socket can be bound before its listener is ready during startup. Reuse the existing bounded retry budget for that refusal window.

* bench(ingest): attribute submission path costs

Decision-grade runs need stable coalescing identity and separate queue, apply, transaction, and estimated connection-wait costs.

* perf(ingest): batch durable document storage

Commit chunks, manifests, references, and metadata in bounded batches while preserving publication only after durable reference success.

* perf(ingest): coalesce bulk post-processing

Use a 16-item bulk cap while keeping latency-sensitive daemon ingestion on the existing four-item priority quota.

* bench(ingest): record post-ingest batch size

Include the effective cap in metrics and experiment identity so runs with different batching policies cannot be compared as one system.

* perf(ingest): batch queued storage waves

Preserve single-document fallback semantics and execute inline when the coordinator has one worker to avoid self-deadlock.

* perf(ingest): route bulk enrichment batches

Keep quota-sized interactive groups on the RPC lane while sending larger lossless groups through bounded coalescing.

* test(daemon): initialize task fixtures

* perf(ingest): batch post-ingest dispatch

* perf(ingest): widen directory storage waves

Borrow from a full wave when one document would otherwise fall through to single-document storage.

* perf(storage): bound batch writer fanout

Reuse a fixed worker set so batch size no longer creates one thread and payload copy per object.

* perf(ingest): align storage batch drains

Dispatch one configured batch through storage so intermediate waves do not fragment downstream metadata work.

* fix(ingest): commit metadata state atomically

Fold first-version, extracted-title, and embedding-completion state
into existing transactions.

Read committed extraction state so duplicate-content tasks cannot
double-count corpus counters.

* bench(ingest): measure production submission

Drive pipelined files through DocumentIngestionService.
Export dispatch, fingerprint, and enqueue costs through xplan.

* fix(xplan): preserve native failures

Report child signals and bounded stderr before readiness checks so
assertions are not masked as missing traces.

* fix(daemon): preserve embedding success hashes

* fix(daemon): serialize pooled socket shutdown

* fix(daemon): harden batch publication shutdown

* fix(storage): use compat jthread shim

* fix(daemon): avoid poller template shadowing

* fix(search): keep vector pipeline test enabled

* fix: harden shutdown and fallback paths

Demote expected shutdown SQL interruptions, ignore readonly FTS integrity noise, avoid stopped-executor socket hangs, and preserve metadata writer fallback outcomes.
2026-07-17 07:04:30 -04:00
.act v0.6.12 experiemental 2025-09-11 11:28:42 -04:00
.devcontainer experimental → main: MCP timeout fix + doctor integrity checks + search/perf improvements (#31) 2026-05-14 23:29:44 -04:00
.githooks feat(search): make topology-assisted retrieval the default (#57) 2026-07-13 20:26:43 -04:00
.github fix(release): repair package repo publish 2026-07-05 23:33:37 -04:00
.vscode fix: Copilot review feedback and gitignore for artifacts (#26) 2026-05-08 05:29:46 -04:00
conan ci: use VS 2026 Windows runners 2026-06-19 20:11:52 -04:00
docker/local-ci fix(ci): isolate arch package builds 2026-07-01 10:02:54 -04:00
docs feat(search): make topology-assisted retrieval the default (#57) 2026-07-13 20:26:43 -04:00
examples feat(search): make topology-assisted retrieval the default (#57) 2026-07-13 20:26:43 -04:00
external fix(release): repair package repo publish 2026-07-05 23:33:37 -04:00
formal/topology feat(search): make topology-assisted retrieval the default (#57) 2026-07-13 20:26:43 -04:00
homebrew-yams@c51677b0eb feat: fixing brittleness in CI pip usage that breaks under package updates and system delayed updates. Improving graph repair process and reducing locks in ingestion pipeline 2026-04-17 12:32:00 -04:00
include perf(ingest): harden daemon batching and shutdown (#58) 2026-07-17 07:04:30 -04:00
meson feat: CorpusStats-driven tuning accuracy + per-query community detection. Fixes for clion meson detection 2026-04-07 13:59:27 -04:00
packaging fix(ci): isolate arch package builds 2026-07-01 10:02:54 -04:00
plugins test: lift coverage for core paths 2026-06-22 10:25:28 -04:00
public v0.2.0 2025-08-13 23:11:02 -04:00
scripts feat(search): make topology-assisted retrieval the default (#57) 2026-07-13 20:26:43 -04:00
spec v0.6.30 2025-09-16 10:55:37 -04:00
sql v0.7.11 staging 2026-01-03 00:17:21 -05:00
src perf(ingest): harden daemon batching and shutdown (#58) 2026-07-17 07:04:30 -04:00
subprojects fix(ci): stabilize Windows release builds 2026-07-05 15:56:52 -04:00
tests perf(ingest): harden daemon batching and shutdown (#58) 2026-07-17 07:04:30 -04:00
third_party feat(search): make topology-assisted retrieval the default (#57) 2026-07-13 20:26:43 -04:00
tools perf(ingest): harden daemon batching and shutdown (#58) 2026-07-17 07:04:30 -04:00
.actrc feat: tuning improvements with expanded db metrics, package hardening and updated tests 2026-02-15 17:52:43 -05:00
.build.yml feat(packaging): mature systemd service install + local validation 2026-06-24 12:57:16 -04:00
.clang-format experimental → main: MCP timeout fix + doctor integrity checks + search/perf improvements (#31) 2026-05-14 23:29:44 -04:00
.clang-tidy feat: search improvements, UBSan meson option, CI quality job, and fix clang-tidy findings 2026-04-06 23:11:03 -04:00
.clangd bug fixes for model loading logic, dynamic vec table dimensions, cli refactor and search bug fixes 2026-01-08 23:10:58 -05:00
.cppcheck-suppressions feat: search improvements, UBSan meson option, CI quality job, and fix clang-tidy findings 2026-04-06 23:11:03 -04:00
.dockerignore feat: test fixes, metric expansion, build improvements for gliner 2026-04-23 08:48:33 -04:00
.gitignore feat(search): make topology-assisted retrieval the default (#57) 2026-07-13 20:26:43 -04:00
.gitmodules removing agents submodule 2026-06-02 08:56:25 -04:00
.infer-suppress feat: removing other graph clustering algorithms for hdbscan with sgc 2026-04-21 10:20:00 -04:00
.opengrepignore security: adding opengrep config to githook with rules. Addressing additional concerns 2026-05-01 20:25:22 -04:00
.quality-deadcode-ignore feat: removing other graph clustering algorithms for hdbscan with sgc 2026-04-21 10:20:00 -04:00
.release-please-manifest.json chore(main): release 0.18.1 (#54) 2026-07-05 20:58:23 -04:00
AGENTS.md feat(search): make topology-assisted retrieval the default (#57) 2026-07-13 20:26:43 -04:00
bench_profile.json fix: Copilot review feedback and gitignore for artifacts (#26) 2026-05-08 05:29:46 -04:00
CHANGELOG.md chore(main): release 0.18.1 (#54) 2026-07-05 20:58:23 -04:00
CITATION.cff chore(main): release 0.18.1 (#54) 2026-07-05 20:58:23 -04:00
CMakeLists.txt fix: cleaning up benchmark page and adding CmakeLists.txt 2026-04-09 22:55:03 -04:00
CODE_OF_CONDUCT.md feat(daemon): shutdown hardening + test helper linkage fixes (#44) 2026-06-08 16:29:44 -04:00
commitlint.config.js feat: release please 2026-02-19 20:26:43 -05:00
conanfile.py chore(main): release 0.18.1 (#54) 2026-07-05 20:58:23 -04:00
CONTRIBUTING.md feat(daemon): shutdown hardening + test helper linkage fixes (#44) 2026-06-08 16:29:44 -04:00
CppProperties.json windows build running. resolving plugin loading 2025-11-25 09:56:50 -05:00
Dockerfile fix(docker): add wget for Zig, disable faiss 2026-05-06 15:10:03 -04:00
GOVERNANCE.md feat(daemon): shutdown hardening + test helper linkage fixes (#44) 2026-06-08 16:29:44 -04:00
LICENSE module updates 2025-12-03 21:27:51 -05:00
MAINTAINERS.md v0.6.12 experiemental 2025-09-11 11:28:42 -04:00
meson.build feat(search): make topology-assisted retrieval the default (#57) 2026-07-13 20:26:43 -04:00
meson_options.txt refactor(mcp): split server monolith into transport, handlers, registry 2026-06-28 20:44:44 -04:00
mkdocs.yml fix(testing): stabilize TSAN coverage, harden daemon shutdown, and speed up KG/storage paths (#53) 2026-06-26 17:57:02 -04:00
NOTICE v0.7.5 staging and license updates 2025-10-13 17:07:31 -04:00
README.md feat(daemon): shutdown hardening + test helper linkage fixes (#44) 2026-06-08 16:29:44 -04:00
release-please-config.json ci: improve release please configuration and CHANGELOG 2026-05-04 11:11:45 -04:00
SECURITY.md feat(daemon): shutdown hardening + test helper linkage fixes (#44) 2026-06-08 16:29:44 -04:00
setup.ps1 fix(ci): stabilize Windows release builds 2026-07-05 15:56:52 -04:00
setup.sh fix(testing): stabilize TSAN coverage, harden daemon shutdown, and speed up KG/storage paths (#53) 2026-06-26 17:57:02 -04:00
spdlog.pc yams 2025-08-10 23:41:49 -04:00
tsan.suppressions chore: stabilize CI, faiss, metadata, docker, and simeon (#25) 2026-05-07 21:07:59 -04:00

YAMS — Yet Another Memory System

Persistent memory for LLMs and apps. Content-addressed storage with dedupe, compression, full-text and vector search.

license language github builds last commit

Warning

Experimental — not production ready. Expect bugs and breaking changes until 1.0.

Features

  • SHA-256 content-addressed storage with block-level dedupe (Rabin chunking)
  • Full-text search (SQLite FTS5) + semantic vector search (embeddings)
  • Tree-sitter symbol extraction for 18 languages (list)
  • Snapshot management with Merkle tree diffs and rename detection
  • WAL-backed durability, high-throughput I/O, thread-safe
  • CLI, MCP server, and C-ABI plugins (ONNX/GLiNER/ColBERT, S3 storage, PDF via ZYP)
  • Interactive relevance tuning through CLI tuning and doctor workflows

Documentation

Topic Link
Install docs/user_guide/installation.md
CLI reference docs/user_guide/cli.md
MCP server docs/user_guide/mcp.md
Embeddings docs/user_guide/embeddings.md
Plugins docs/PLUGINS.md
Build from source docs/BUILD.md
Architecture docs/architecture/
Benchmarks docs/benchmarks/README.md
Changelog docs/changelogs/
Roadmap docs/roadmap.md

Community and contributing

Questions, bug reports, docs fixes, tests, and feature ideas are all welcome.

If you'd like to contribute, start with:

  • CONTRIBUTING.md for workflow and expectations
  • CODE_OF_CONDUCT.md for community standards
  • SECURITY.md for responsible vulnerability reporting
  • .github/ISSUE_TEMPLATE/ for issue templates

If you're unsure whether something is worth opening, it usually is.

Install

Supported: Linux x86_64/ARM64, macOS x86_64/ARM64, Windows x86_64.

# macOS
brew install trvon/yams/yams

# Docker
docker pull ghcr.io/trvon/yams:latest

# Debian/Ubuntu, Fedora/RHEL, Windows: see installation guide

Full install matrix and package repos: docs/user_guide/installation.md.

Build from source

./setup.sh Release          # Linux/macOS (auto-detects toolchain, runs Conan + Meson)
meson compile -C build/release
./setup.ps1 Release         # Windows
meson compile -C build/release

Requires a C++20 toolchain (GCC 13+, Clang 16+, or MSVC 2022+ recommended), Meson, Ninja, CMake, pkg-config, and Conan. See docs/BUILD.md.

Quick Start

yams init                                # interactive; use --auto for headless
yams add ./README.md --tags docs
yams add src/ --recursive --include="*.cpp,*.h" --tags code

yams search "config file" --limit 5
yams grep "TODO" --include="*.cpp"

yams list --limit 20
yams get <hash> -o ./output.bin

Shell completions: yams completion bash|zsh|fish|powershell. Install instructions: docs/user_guide/cli.md#cmd-completion.

MCP Server

YAMS ships an MCP server over stdio (JSON-RPC) for AI assistants.

yams serve
{
  "mcpServers": {
    "yams": { "command": "yams", "args": ["serve"] }
  }
}

Tool reference and MCP client setup: docs/user_guide/mcp.md.

Plugins

yams plugin list                                  # loaded plugins
yams plugin trust add ~/.local/lib/yams/plugins   # trust a directory
yams plugin health                                # status
yams doctor plugin onnx                           # diagnose

Plugin architecture, trust model, and bundled plugins (ONNX, S3, ZYP, GLiNER, symbol extractor): docs/PLUGINS.md.

GPU acceleration (ONNX)

Platform Provider Hardware
macOS CoreML Apple Silicon Neural Engine + GPU
Linux CUDA NVIDIA GPUs
Linux MIGraphX AMD GPUs (ROCm)
Windows DirectML Any DirectX 12 GPU (NVIDIA, AMD, Intel)

Auto-detected at build. Override with YAMS_ONNX_GPU=auto|cuda|coreml|directml|migraphx|none. Details: plugins/onnx/README.md.

Simeon backend

YAMS uses simeon by default for both dense vector embeddings and lexical (BM25) search — no model download required. Set embeddings.backend = "simeon" in your TOML config (or leave it unset; simeon is the default). Fine-grained knobs live under [embeddings.simeon].

Full config reference and dim tradeoffs: docs/user_guide/embeddings.md.

Troubleshooting

yams doctor              # full diagnostics
yams stats --verbose     # storage statistics
yams repair --all        # repair common issues

Build issues: docs/BUILD.md. Empty yams plugin list? Add a trust path: yams plugin trust add ~/.local/lib/yams/plugins.

Cite

@misc{yams,
  author = {Trevon Williams},
  title = {YAMS: Content-addressable storage with semantic search},
  year = {2025},
  publisher = {GitHub},
  url = {https://github.com/trvon/yams}
}