When a fact changes, most agent memory keeps both versions and lets the model guess which is current. Vayl replaces the old value, keeps it in history, and can hold high-stakes changes until a person approves them. It runs locally on SQLite and works with any MCP client: Claude Code, Cursor, Claude Desktop, or your own agent.
A real run with gpt-6-luna and the clinical preset. The patient is fictional. Script: assets/demo/clinical_demo.py
Features
- Reconciles changes. A new value supersedes the old one, and "we stopped X" retracts X. A retired fact is never returned as current.
- Keeps history. Ask what is true now or what was true before. Every change goes on a signed, tamper-evident audit chain.
- Human approval where it matters. Mark slots such as medications as confirm-required, and changes wait in a queue.
check_before_actblocks an action that depends on a disputed, stale or just-changed fact. - Small and local. SQLite by default, Postgres for teams. One model call to store a fact and one to answer. Any OpenAI-compatible model, Anthropic, Groq or a local Ollama model.
- Built-in presets for clinical, support, finance, sales, coding and assistant memory.
Install
pip install vayl-mcp
Add it to Claude Code:
claude mcp add vayl -e LLM_PROVIDER=openai -e OPENAI_API_KEY=sk-... -e VAYL_DB=$HOME/.vayl/vayl.db -- vayl-mcp
For Cursor, Claude Desktop and other clients, see the quickstart. Run vayl-demo to try reconciliation with no API key.
Use it from code
from vayl import Vayl
with Vayl(user_id="cust_5521") as m:
m.remember("Acme's invoice bounced. Account suspended until payment clears.")
print(m.recall("Is Acme's account in good standing?"))
# No. Acme's account is suspended until payment clears.
A TypeScript client (npm i @vayl.dev/client) and adapters for LangGraph, the OpenAI Agents SDK, CrewAI, the Vercel AI SDK and Mastra are in the integration docs.
Documentation
| Quickstart | Install and connect a client |
| How Vayl works | Extraction, reconciliation and retrieval |
| Tutorial: a hospital medication assistant | Clinical preset, critical facts and approval |
| Tutorial: a customer-support assistant | Account state and safety checks |
| MCP tools | All 30+ tools |
| Deploying vayl-server | Team server, auth, Docker, Postgres |
| Benchmarks | Stale-value and retraction results against Mem0 and Graphiti |
Contributing
See CONTRIBUTING.md. The unit tests run offline, with no API key. Good starting points are labeled good first issue.
Security
Data is encrypted at rest by default, and Vayl sends nothing anywhere except to the model endpoints you configure. Vayl is not certified for clinical use and has not been audited by a third party. Report vulnerabilities as described in SECURITY.md.
License
Metadata
Release files for vayl-mcp 0.9.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| vayl_mcp-0.9.1.tar.gz | 449.3 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vayl_mcp-0.9.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 601.9 kB
Release files / vayl_mcp-0.9.1.tar.gz
| Download URL | vayl_mcp-0.9.1.tar.gz |
|---|---|
| Size | 449.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
888a416b17ff9933d04e659aae607766d89b0465b9e2128e5f443ac69dbf1fa9
|
|
BLAKE2b-256 checksum How to use checksums |
6cd72d08a623a6593512168a7cf6cf774157c0fc18054389e6529faa33ee206a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logRelease files / vayl_mcp-0.9.1-py3-none-any.whl
| Download URL | vayl_mcp-0.9.1-py3-none-any.whl |
|---|---|
| Size | 152.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4a471c672dee8dd257bd27fc143c53860aed513094928f27f0aaa9503e65a8b9
|
|
BLAKE2b-256 checksum How to use checksums |
6fe11bab1c826022a9a0bb16d479b21f850e9ad20bc928ce217a4a577aec76a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logSecurity for vayl-mcp 0.9.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for vayl_mcp-0.9.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.