Metadata-Version: 2.4
Name: visp-memory
Version: 0.7.4
Summary: Curated, auditable memory for coding agents - mines your git history, injects sparingly, quarantines untrusted memory
Project-URL: Homepage, https://github.com/djkeshawa/visp-memory
Project-URL: Repository, https://github.com/djkeshawa/visp-memory
Project-URL: Issues, https://github.com/djkeshawa/visp-memory/issues
Project-URL: Changelog, https://github.com/djkeshawa/visp-memory/releases
Author: Dineth Jayakody
License-Expression: Apache-2.0
License-File: LICENSE
License-File: NOTICE
Keywords: ai,claude-code,coding-agent,context,developer-tools,llm,mcp,memory,rag,retrieval
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Requires-Dist: numpy>=1.26.0
Requires-Dist: pydantic-settings>=2.14.2
Requires-Dist: pydantic>=2.0.0
Requires-Dist: pyyaml>=6.0.0
Requires-Dist: requests>=2.31.0
Requires-Dist: rich>=13.0.0
Requires-Dist: typer>=0.21.0
Provides-Extra: all
Requires-Dist: aiohttp>=3.14.1; extra == 'all'
Requires-Dist: anthropic>=0.40.0; extra == 'all'
Requires-Dist: arcadedb-embedded<27,>=26.4.2; extra == 'all'
Requires-Dist: argon2-cffi>=23.1.0; extra == 'all'
Requires-Dist: cryptography>=49.0.0; extra == 'all'
Requires-Dist: defusedxml>=0.7.1; extra == 'all'
Requires-Dist: fastapi>=0.139.0; extra == 'all'
Requires-Dist: gitpython>=3.1.0; extra == 'all'
Requires-Dist: mcp<2.0.0,>=1.0.0; extra == 'all'
Requires-Dist: neo4j>=5.15.0; extra == 'all'
Requires-Dist: ollama>=0.1.0; extra == 'all'
Requires-Dist: openai>=1.0.0; extra == 'all'
Requires-Dist: pyjwt[crypto]>=2.13.0; extra == 'all'
Requires-Dist: python-multipart>=0.0.32; extra == 'all'
Requires-Dist: scikit-learn>=1.0.0; extra == 'all'
Requires-Dist: sentence-transformers>=2.2.0; extra == 'all'
Requires-Dist: starlette>=1.3.1; extra == 'all'
Requires-Dist: uvicorn>=0.23.0; extra == 'all'
Requires-Dist: watchdog>=3.0.0; extra == 'all'
Provides-Extra: analysis
Requires-Dist: scikit-learn>=1.0.0; extra == 'analysis'
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.40.0; extra == 'anthropic'
Provides-Extra: api
Requires-Dist: argon2-cffi>=23.1.0; extra == 'api'
Requires-Dist: cryptography>=49.0.0; extra == 'api'
Requires-Dist: fastapi>=0.139.0; extra == 'api'
Requires-Dist: pyjwt[crypto]>=2.13.0; extra == 'api'
Requires-Dist: python-multipart>=0.0.32; extra == 'api'
Requires-Dist: starlette>=1.3.1; extra == 'api'
Requires-Dist: uvicorn>=0.23.0; extra == 'api'
Provides-Extra: arcadedb
Requires-Dist: arcadedb-embedded<27,>=26.4.2; extra == 'arcadedb'
Provides-Extra: capture
Requires-Dist: defusedxml>=0.7.1; extra == 'capture'
Requires-Dist: gitpython>=3.1.0; extra == 'capture'
Requires-Dist: watchdog>=3.0.0; extra == 'capture'
Provides-Extra: chroma
Requires-Dist: chromadb>=0.4.0; extra == 'chroma'
Provides-Extra: dev
Requires-Dist: build>=1.3.0; extra == 'dev'
Requires-Dist: httpx>=0.28.0; extra == 'dev'
Requires-Dist: pip-audit>=2.9.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
Requires-Dist: pytest>=7.0.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Requires-Dist: twine>=6.2.0; extra == 'dev'
Provides-Extra: local-embeddings
Requires-Dist: sentence-transformers>=2.2.0; extra == 'local-embeddings'
Provides-Extra: mcp
Requires-Dist: mcp<2.0.0,>=1.0.0; extra == 'mcp'
Provides-Extra: neo4j
Requires-Dist: neo4j>=5.15.0; extra == 'neo4j'
Provides-Extra: ollama
Requires-Dist: aiohttp>=3.14.1; extra == 'ollama'
Requires-Dist: ollama>=0.1.0; extra == 'ollama'
Provides-Extra: openai
Requires-Dist: openai>=1.0.0; extra == 'openai'
Description-Content-Type: text/markdown

# Visp Memory

**Project memory for coding assistants.** Keep decisions, warnings, and useful
history across sessions. Retrieve relevant context with source citations, inspect
why it matched, and maintain the store from a local dashboard.

SQLite and keyword search work without a model or an external database.
An [optional Neo4j backend](docs/deployment/PACKAGING.md#neo4j-beta) is available
as an opt-in beta.

```mermaid
flowchart LR
    A["Project history"] --> B["Memory store
Sources and notes"]
    B --> C["Cited context"]
    C --> D["Assistant"]
    D -->|"Records outcomes"| A
```

Your assistant owns execution and completion decisions. Memory supplies context;
it does not grant permission or certify that work is finished.

## Start with the dashboard

Run the published Linux amd64 image with persistent storage:

```bash
docker run -d --name visp-memory \
  -p 127.0.0.1:8000:8000 \
  -v visp-memory-data:/data \
  -e VISP_MEMORY_EMBEDDING_PROVIDER=noop \
  ghcr.io/djkeshawa/visp-memory:0.7.4
docker logs visp-memory
```

Open [the dashboard](http://127.0.0.1:8000/dashboard). On a fresh store, use the
one-use setup link in the logs to create your administrator account. There is no
shared default password. See [installation](docs/deployment/PACKAGING.md) for
Compose, upgrades, Python, and standalone downloads.

![Visp Memory dashboard showing project totals, recent memories, and recall navigation](https://raw.githubusercontent.com/djkeshawa/visp-memory/v0.7.4/docs/dashboard-preview.png)

*Dashboard overview with sample data. The dashboard starts in dark mode; use the sidebar theme control to switch appearance.*

## Use it from your project

Requires Python 3.10+. Run these commands in your repository:

```bash
pip install "visp-memory[mcp,capture]"
visp-memory init
visp-memory decision "Use SQLite locally" "No database service needed"
visp-memory recall "local database"
visp-memory brief "implement local storage"
```

`init` creates project configuration and imports selected Git history. Connect
your assistant separately using the [MCP and hooks guide](docs/development/MCP.md).
Use `visp-memory doctor` to inspect configuration and integration problems.

## What you can do

- **Recall project knowledge:** search decisions and history, or prepare a cited task brief.
- **Understand results:** inspect matching words, retrieval method, sources, and quality flags.
- **Maintain memories:** preview [dreaming cycles](docs/development/DREAMING.md), schedule exact-duplicate cleanup, and review related or expired notes. Applied changes can be undone.
- **Follow task progress:** receive explicit [completion reports](docs/development/WORKFLOW_REPORTS.md) from your assistant or workflow, with evidence and history.
- **Keep control of data:** use local storage, scoped access, and [backup and restore](docs/development/STORAGE.md#backup-and-schema-upgrades).

The supported path is one developer working in one local repository. Dashboard/API
and some integrations are still early; team and graph features are frozen. Check
[feature status](docs/FEATURE_STATUS.md) for the limits of each surface.

## Documentation

Start with the [documentation index](docs/README.md), or go directly to:

| Learn | Configure | Integrate |
|---|---|---|
| [Architecture and data flow](docs/development/ARCHITECTURE.md) | [Installation](docs/deployment/PACKAGING.md) | [MCP and hooks](docs/development/MCP.md) |
| [Trust and privacy](docs/TRUST.md) | [Accounts and tokens](docs/deployment/AUTH.md) | [Workflow reports](docs/development/WORKFLOW_REPORTS.md) |
| [Dreaming](docs/development/DREAMING.md) | [Storage and embeddings](docs/development/STORAGE.md) | [Machine contracts](docs/development/CONTRACT_SURFACE.md) |

## Evidence and limits

[Benchmarks](docs/BENCHMARK.md) describe deterministic selection and poisoning
fixtures, including missed memories and other negative results. They do not
establish better coding outcomes or superiority over another memory product.
Published selection figures are checked against measured output by
[tests/docs/test_published_figures.py](tests/docs/test_published_figures.py).

## Contribute and license

See [Contributing](CONTRIBUTING.md) for development and submission requirements.
Licensed under [Apache 2.0](LICENSE); contributions require a DCO sign-off and the
[Contributor License Agreement](CLA.md).
