# tact-memory
[](https://github.com/clabby/tact/actions/workflows/ci.yaml)
[](https://crates.io/crates/tact-memory)
[](https://crates.io/crates/tact-memory)
[](https://crates.io/crates/tact-memory)
`tact-memory` provides bounded memory storage and retrieval for local agents and shared teams. It
defines a common asynchronous store contract, a SQLite-backed local store, an authenticated remote
client and server protocol, and a Nanocodex memory tool.
The crate exposes four integration boundaries:
- `MemoryStore` defines ordinary local and remote operations over bounded memory records.
- `LocalMemoryStore` persists the schema-v1 local format, while `SelectedMemoryStore` lets an
application choose one local or remote backend for a runtime.
- `RemoteMemoryClient` and `MemoryServer` share versioned protocol types and preserve author
namespaces across authenticated operations.
- `MemoryTool` exposes explicit scan, read, put, and delete operations to Nanocodex sessions under
an application-provided mutation authority.
Feature flags separate the local store, remote client, server, and Nanocodex tool integrations.
Default features enable the complete native client, local, server, and tool surface; server-only
deployments can select `server` without native-only dependencies.
Implementations enforce record, query, content, and aggregate corpus bounds. Client-side storage
boundaries reject secret-like content before mutation and suppress pre-existing unsafe records
before use. Server backends remain storage-policy agnostic.
See the [Tact memory guide](https://github.com/clabby/tact/blob/main/docs/memory.md) for backend
selection, protocol, authentication, transfer, and deployment contracts.