Skip to main content

Portable context layer for T-shaped AI-native users. Single-file encrypted SQLite vault served over MCP.

Project description

Tessera — Portable context for AI tools

A local-first context layer for agents and AI tools. Tessera stores durable user and project context in an encrypted SQLite vault, exposes it through a scoped MCP surface, and retrieves cross-facet bundles with hybrid search, rerank, SWCR, and token budgeting.

Open source. Local-first. Apache 2.0.


Status

v0.4.0rc1 is live on PyPI as tessera-context. The repo contains the packaged Python CLI, encrypted vault, daemon, HTTP MCP endpoint + REST surface at /api/v1/*, first-party stdio MCP bridge, connector writers, retrieval pipeline, named skills synced to disk, people resolution, ChatGPT + Claude conversation-history importers, and the test suite. v0.4 swaps the entire model stack to fastembed (ONNX Runtime) and removes Ollama, sentence-transformers, OpenAI, and Cohere adapters per ADR-0014; install footprint drops from ~600 MB to ~30 MB. General availability gates on external-user demo validation and cross-platform install recording per docs/smoke-test-v0.4rc1.md. rc1 is install-stable for technical users; expect real-user feedback to drive a follow-up rc before GA. See docs/release-spec.md for the release bar and CHANGELOG.md for the full v0.4 surface.

Install

From PyPI (recommended):

pip install --pre tessera-context
# or pin explicitly:
pip install tessera-context==0.4.0rc1

pip's default resolver skips pre-releases, so --pre or an explicit version pin is required. The PyPI distribution name is tessera-context; the CLI binary and Python import path remain tessera. The short tessera name on PyPI is held by a 2017-dormant Graphite dashboard project; PEP 541 reclaim is pursued in parallel.

From source (for development):

git clone https://github.com/Mathews-Tom/Tessera.git
cd Tessera && uv sync --dev
uv run tessera --help

Core local flow

# one-time setup: pin a passphrase in your shell so commands run flag-free.
# the vault path defaults to ~/.tessera/vault.db; override with $TESSERA_VAULT.
export TESSERA_PASSPHRASE='your-passphrase-here'   # add to ~/.zshrc or your global .env

tessera init                          # creates ~/.tessera/vault.db
tessera models set --name nomic-ai/nomic-embed-text-v1.5 --dim 768 --activate
tessera daemon start                  # starts tesserad, picks up the env var
tessera connect claude-desktop        # mints token, writes config
# or wire every detected client in one shot:
tessera connect all

The tessera models set --activate step picks the embedder Tessera will use; the daemon refuses to start without an active model. Embedding runs in-process via fastembed (ONNX Runtime) — no Ollama, no torch, no separate model server. The first daemon start downloads the model weights to ~/.cache/fastembed (~520 MB for the default nomic-embed-text-v1.5; one-time cost). Reranking runs in the same stack via Xenova/ms-marco-MiniLM-L-12-v2.

--vault and --passphrase flags are still accepted for one-off use, multi-vault setups, or scripted invocations. Resolution order is flag → $TESSERA_VAULT / $TESSERA_PASSPHRASE → default. See docs/quickstart.md for the env-var setup and docs/troubleshooting.md for multi-vault disambiguation.

ChatGPT Developer Mode is deferred to v0.1.x because the current ChatGPT flow requires HTTPS/OAuth/canonical HTTP MCP compatibility that Tessera v0.1 does not yet ship. The v0.1 demo flow uses Claude Desktop and Claude Code as the MCP-capable clients.

What is Tessera

A local daemon owns a single-file SQLite vault that holds five v0.1 context facets:

  • identity — stable user facts
  • preference — behavioral rules and tool preferences
  • workflow — repeated procedures
  • project — active work context
  • style — writing voice samples

Two transports reach the vault, sharing one daemon dispatcher and one token-based auth model:

  • MCP at /mcp for tool-aware AI clients that auto-discover Tessera (Claude Desktop, Claude Code, Cursor, Codex). Six MCP tools: capture, recall, show, list_facets, stats, forget, plus the v0.3 learn_skill / get_skill / list_skills / resolve_person / list_people surface.
  • REST at /api/v1/* for hooks, skills, and shell scripts. Curl-friendly endpoints that skip MCP's JSON-RPC envelope so high-frequency hook calls do not pay the per-call envelope tax. See docs/api.md for the full reference and copy-pasteable recipes; tessera curl --print recall "..." emits canonical curl invocations safe to paste into hook scripts.

A bare recall (either transport) searches every facet type the token can read and returns a budgeted cross-facet bundle.

The lead user is the AI-native developer who wants durable context across Claude Code, Claude Desktop, Cursor, Codex, local model workflows, and custom harnesses without handing memory to a hosted service.

Where to read, by role

If you want to Read
Walk through install + first capture in ~10 minutes docs/quickstart.md
Build a hook, skill, or shell script that talks to the daemon docs/api.md
Pitch to a colleague or evaluate whether this is interesting docs/pitch.md
Understand the market position, category claim, and trade-offs docs/system-overview.md
Understand the architecture, schema, retrieval pipeline, encryption docs/system-design.md
Understand the SWCR retrieval algorithm and its ablation bar docs/swcr-spec.md
Understand the security model and threat analysis docs/threat-model.md
Understand how migrations are safe docs/migration-contract.md
Understand how debuggability works without telemetry docs/determinism-and-observability.md
Know what ships in v0.1, v0.3, v0.5, v1.0 docs/release-spec.md
Know what will never ship docs/non-goals.md
Review the load-bearing decisions docs/adr/
Fix an install failure, bad first run, or a broken connector docs/troubleshooting.md

Posture

This is a solo-developer craft project by Tom Mathews, paced by evening and weekend velocity while a dissertation on agentic memory systems lands in parallel. The v0.1 commitment is explicit; v0.3 and beyond are contingent on real-user signal. There is no telemetry, no hosted service in v0.1, and no model reselling ever. See docs/non-goals.md for the full list of things Tessera will not become.

The reason this exists is that the amnesia tax is real for a growing audience — T-shaped users operating across three or more AI tools a week — the engineering shape is interesting, and the adjacent products in the space treat memory as flat blobs in someone else's cloud. Tessera treats it as structured context on disk.

License

Apache 2.0. No CLA.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tessera_context-0.4.0rc1.tar.gz (706.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tessera_context-0.4.0rc1-py3-none-any.whl (216.7 kB view details)

Uploaded Python 3

File details

Details for the file tessera_context-0.4.0rc1.tar.gz.

File metadata

  • Download URL: tessera_context-0.4.0rc1.tar.gz
  • Upload date:
  • Size: 706.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.14

File hashes

Hashes for tessera_context-0.4.0rc1.tar.gz
Algorithm Hash digest
SHA256 1c18c3c2adb5dac62752e8162453482e8561bae164db1325098ab9fec60fa56c
MD5 9d5ff2457b8553577b4fb3b5e62d7b3e
BLAKE2b-256 ef8340e26c49ac86ecae2a782604d77a19e7a458a7a1ed8cd9136763b63da079

See more details on using hashes here.

File details

Details for the file tessera_context-0.4.0rc1-py3-none-any.whl.

File metadata

File hashes

Hashes for tessera_context-0.4.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 eda44769d682718d2b7f9e1b677dc6cf50da95cc3c325e4e0c7cdba91b83daae
MD5 45576ecc87afc61df0a32bc8b4ec2606
BLAKE2b-256 9ed85be96efaacf867782341f6a27b083b7af7127214e0ed0458e754e18ab121

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page