Agent Filetree Memory MCP
Agent Filetree Memory MCP is a framework-neutral memory service for agents. It stores a simple virtual Markdown file tree in PostgreSQL while keeping paths and document content encrypted at rest.
The project is designed around four boundaries:
- The host verifies a short-lived capability and selects the workspace and durable agent profile. Models and UI components cannot choose or widen those identifiers.
- Every document and directory version is immutable and encrypted with a fresh AES-256-GCM data key.
- PostgreSQL is injected through an async SQLAlchemy session factory. Standalone users may construct one from a static database URL; hosting platforms may supply their own credential-aware factory.
- MCP is an adapter. The application service can also be embedded directly in another Python service.
The headless tool surface is intentionally small: list, read, history-list, history-read, write, append, and delete. History metadata and historical content use separate capabilities. Writes use compare-and-swap versions and idempotency keys. Delete denies access immediately and makes encrypted data eligible for hard deletion after its configured retention window. The host must run the packaged janitor; the request-serving process does not schedule cleanup itself.
Status
This project is an early alpha. APIs, migrations, and data formats may change before 1.0.
Installation
Add the complete package to a uv-managed project:
uv add 'agent-filetree-memory-mcp[all]'
Or install its standalone commands in an isolated environment:
uv tool install 'agent-filetree-memory-mcp[all]'
The base package contains the framework-neutral domain and application layers.
The postgres, mcp, app, and web extras are available for narrower
integrations. See the standalone guide
for database setup, security-sensitive configuration, and server startup.
Intended package layers
agent_filetree_memory.domain: dependency-light identifiers, paths, results, and errors.agent_filetree_memory.application: authorization-first memory operations.agent_filetree_memory.crypto: envelope encryption and pluggable data-key providers.agent_filetree_memory.postgres: PostgreSQL persistence and packaged Alembic migrations.agent_filetree_memory.control_plane: optional workspaces, durable agent profiles, membership, independent management/content grants, and audit.agent_filetree_memory.mcp: headless MCP tools.agent_filetree_memory.mcp_app: an optional current-capability browser and editor.agent_filetree_memory.web: the version-matched management API composition and bundled React UI.
Version history and attribution
Every retained document version has a canonical version_created_at timestamp.
memory_history_list returns retained versions newest first without returning
their Markdown; its metadata includes the caller-supplied change comment, so a
host should still treat that capability as potentially sensitive.
memory_history_read returns one retained version and can also produce a
unified line diff by accepting compare_to_version. Pagination and retention
are bounded; history is not an unbounded event log.
Writes and appends may include an optional change_comment and up to eight
opaque co_authored_by identifiers. Version responses distinguish the two
attribution levels:
committed_byidentifies the authenticated principal whose verified capability committed the version and carriesverification: "authenticated";- each
co_authored_byentry is caller-declared and explicitly carriesverification: "self_asserted".
Authenticated here means that principal's authorization was used. It does not
prove who drafted, typed, or approved the Markdown. The optional change comment
is also caller-supplied text, not verified attribution. Versions created before
this metadata format remain readable and return unavailable attribution as
null/empty values. Current list/read payloads retain updated_at as a
compatibility alias for version_created_at.
Security properties
The service authorizes before storage lookup or decryption. Missing and unauthorized documents share the same public failure shape. Database rows contain opaque routing, authorization, version, and lifecycle fields; human-readable paths, titles, tags, snippets, Markdown, and directory manifests are encrypted.
See SECURITY.md for the threat model and disclosure guidance. See docs/authentication.md for the two-layer transport and durable agent-identity design. See docs/standalone.md for running the packaged stdio server and retention janitor from a static PostgreSQL URL. See docs/management-ui.md for mounting the bundled administrative UI with a host-supplied identity dependency.
The optional control plane is provider-neutral. Hosts inject verified principals, including a platform-administrator boolean, and may inject an external workspace-entitlement resolver. Platform administrators can inventory workspace metadata and create workspaces, but must explicitly take a workspace role before agent slugs become visible. Workspace administration and explicit agent management never imply content access or decryption.
License
Apache License 2.0. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_filetree_memory_mcp-0.4.0.tar.gz.
File metadata
- Download URL: agent_filetree_memory_mcp-0.4.0.tar.gz
- Upload date:
- Size: 320.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82d6db98d21167d7e6a10bb6ee70124071fa5c3dc7eface00440675cf91fb5de
|
|
| MD5 |
619c07a99d052f179433dc33eda57660
|
|
| BLAKE2b-256 |
163463d9f0410e0444b830227bb9f2ff05ed939cfdc91d550ed3770b678ec4e5
|
Provenance
The following attestation bundles were made for agent_filetree_memory_mcp-0.4.0.tar.gz:
Publisher:
publish.yml on EmilioEsposito/agent-filetree-memory-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_filetree_memory_mcp-0.4.0.tar.gz -
Subject digest:
82d6db98d21167d7e6a10bb6ee70124071fa5c3dc7eface00440675cf91fb5de - Sigstore transparency entry: 2670096486
- Sigstore integration time:
-
Permalink:
EmilioEsposito/agent-filetree-memory-mcp@820128d9f9f8ca864d095816d204218a5931bb53 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/EmilioEsposito
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@820128d9f9f8ca864d095816d204218a5931bb53 -
Trigger Event:
release
-
Statement type:
File details
Details for the file agent_filetree_memory_mcp-0.4.0-py3-none-any.whl.
File metadata
- Download URL: agent_filetree_memory_mcp-0.4.0-py3-none-any.whl
- Upload date:
- Size: 247.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a47d294d43d778709898374ce145c142b43fd3e2aa1e21599185bca5d2df86eb
|
|
| MD5 |
c446a9e0367c2986b7b6530bcbbbe379
|
|
| BLAKE2b-256 |
c422f6eff858aaf8e7caa6faddebe925a74c13f2249bffb28c6f5356d96fb1c0
|
Provenance
The following attestation bundles were made for agent_filetree_memory_mcp-0.4.0-py3-none-any.whl:
Publisher:
publish.yml on EmilioEsposito/agent-filetree-memory-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_filetree_memory_mcp-0.4.0-py3-none-any.whl -
Subject digest:
a47d294d43d778709898374ce145c142b43fd3e2aa1e21599185bca5d2df86eb - Sigstore transparency entry: 2670096544
- Sigstore integration time:
-
Permalink:
EmilioEsposito/agent-filetree-memory-mcp@820128d9f9f8ca864d095816d204218a5931bb53 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/EmilioEsposito
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@820128d9f9f8ca864d095816d204218a5931bb53 -
Trigger Event:
release
-
Statement type: