Weft
Evidence-bound memory substrate for people and their agents.
Weft ingests conversations, documents, and media into a scoped, auditable store. Recall is scoped first, ranked second, and explained in a receipt. Deletions cascade. Corrections preserve lineage. Nothing is injected whole.
Status
1.0. The substrate, scope engine, ingestion, retrieval, reasoning loop, server and the Hermes memory provider are implemented and reviewed through phase 14. The version marks an API that no longer moves under adopters; it is not a claim that the system has been operated at scale — single-user on macOS is what has actually been run, with the phase-8 through phase-14 hardening in this release. scripts/test.sh runs the current suite: 1011 checks. A Hermes memory-provider surface ships in weft/providers/hermes.py. AGPL-3.0.
Published: weft-memory==1.0.0 on PyPI (https://pypi.org/project/weft-memory/1.0.0/).
Boundaries
- Weft is not a brain, a consciousness, or a proof of either.
- It does not post, message, or commit on its own.
- Recall is data, not instructions. Retrieved text cannot authorize writes or alter scope.
- Scope is deterministic and deny-by-default. Identity grants nothing.
Install
From PyPI (alpha)
pip install weft-memory==0.1.0a0
From source
git clone https://github.com/ousiaresearch/weft.git
cd weft
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[server]"
Python >= 3.11 required. The server extra installs the HTTP server only; it does not install
sentence-transformers or any embedder. The default local embedder (an MLX BGE-M3 snapshot,
local-embedding extra) runs on darwin/arm64 only.
External extraction (opt-in)
weft extract sends scope text to the third-party TokenHarbor endpoint
(tokenharbor.ai). It is off by default: pass --allow-external (or set
WEFT_EXTRACT_ALLOW_EXTERNAL=1) and provide TOKENHARBOR_API_KEY. The host is
printed to stderr before sending. The CLI and HTTP server make no other external calls. Library callers that pass a token_getter to recall enable query expansion, which sends query text to the same host.
Quick start
ingest and hybrid recall need the local embedder (darwin/arm64, see above).
weft --db ~/.weft/weft.sqlite3 ingest --scope coast --file note.md
weft --db ~/.weft/weft.sqlite3 recall --scope coast --query "tides"
weft --db ~/.weft/weft.sqlite3 rebuild-fts --scope coast
To serve over HTTP, WEFT_API_KEY and WEFT_KNOWN_SCOPES must be set; the server fails
closed, so without them every request returns 401 (no or wrong key) or 403 (scope not
allowed):
export WEFT_API_KEY='replace-with-a-long-random-secret'
export WEFT_KNOWN_SCOPES='coast'
weft --db ~/.weft/weft.sqlite3 serve --host 127.0.0.1 --port 8765
HTTP recall is lexical-only. The Docker image and Compose file are unverified: Docker was
not available to build or run them. See docs/turnkey-deployment.md.
Default database: ~/.weft/weft.sqlite3 (owner-only, 0600).
Deletion commits logical erasure immediately, but deleted text can remain in the live -wal file until a checkpoint completes, and backups, exports and snapshots are never erased. See "Deletion and erasure" in docs/turnkey-deployment.md.
Models
Weft ships adapters, not weights. Model licences are shown at fetch time with consent. Default local embedder: BAAI/bge-m3 4-bit (MIT). Optional: Qwen3.5-2B for OCR/description (Apache-2.0), whisper large-v3-turbo for transcription (MIT/Apache-2.0).
Design invariants
- Scope before relevance.
- Deny by default.
- Content, not location, sets scope.
- Identity grants no scope.
- Cross-scope needs user-attributable request.
- Composite artifacts never injectable.
- Status transitions gated (verified requires Verification record).
- User attribution for Decision/Commitment.
- Correction supersedes, keeps lineage.
- Recall is not re-ingested.
- Authority is singular (Substrate is only authority).
- Fail closed.
- Retrieved content is data, not instructions.
License
AGPL-3.0. See LICENSE.
Third-party dependency licences are listed in docs/clean-room-provenance.md. Arsumbris, Honcho, and OpenViking are study-only under clean-room protocol; no source copied or bundled.
Metadata
Release files for weft-memory 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| weft_memory-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for weft_memory-1.0.0-py3-none-any.whl |
Release files / weft_memory-1.0.0-py3-none-any.whl
| Download URL | weft_memory-1.0.0-py3-none-any.whl |
|---|---|
| Size | 115.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e6d5783c707e8e9dc75016096b6fbf9e65c847bff72417d16a55faf48afe7d0c
|
|
BLAKE2b-256 checksum How to use checksums |
961620f2848e6e0648ad532eaf2a53eba14a0e5c4520eeb5c3177645c1378019
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.9
|
Security for weft-memory 1.0.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A 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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.