citadeldb-strands-agents
A Strands Agents session manager backed by Citadel. Encrypted at rest, embedded in your process, and redaction that removes the redacted content rather than annotating it.
pip install citadeldb-strands-agents
Requires strands-agents>=1.15,<2; 1.15 is the first release carrying the
multi-agent session API implemented by this manager.
import citadeldb
from strands import Agent
from citadeldb_strands_agents import CitadelSessionManager
sessions = CitadelSessionManager(
"user-123",
"sessions.cdl",
key="your-passphrase",
# Required, and no default. This manager reads sessions by key and exposes
# no semantic-recall operation, so an explicit mock avoids unused model work.
embedder=citadeldb.MockEmbedder(dim=64),
)
agent = Agent(session_manager=sessions)
Built the way the shipped managers are: it implements SessionRepository and inherits
RepositorySessionManager, exactly as FileSessionManager and S3SessionManager do.
Redaction actually redacts
Strands redacts by setting a redact_message field beside the original and updating the
record:
# from strands RepositorySessionManager.redact_latest_message
latest_agent_message.redact_message = redact_message
return self.session_repository.update_message(...)
The original message stays in the record. Strands reads a redacted message through
to_message(), which returns the redaction, so the original is never read again. This
manager therefore does not keep it: the superseded record's key is destroyed and the
replacement carries the redaction in place of the original.
after = sessions.read_message("user-123", agent.agent_id, 0)
after.to_message() # {'content': [{'text': '[REDACTED]'}], 'role': 'user'}
after.message # the redaction, not the original
An ordinary update is unaffected: only a message carrying a redaction drops its original.
Erasure
sessions.forget_session("user-123") # returns the number of records erased
Strands has no delete in its repository protocol. This destroys the session, its agents and every message key.
Notes
Messages are ordered by their conversation index rather than write time, so editing an earlier turn does not move it to the end of the history.
Citadel is embedded and one process owns the file. A path already open on this thread, under the same passphrase, is shared, so many sessions and other Citadel adapters can share one database; construct them on the same thread.
License
Apache-2.0
Release files for citadeldb-strands-agents 2.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| citadeldb_strands_agents-2.1.0.tar.gz | 10.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| citadeldb_strands_agents-2.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.7 kB
Release files / citadeldb_strands_agents-2.1.0.tar.gz
| Download URL | citadeldb_strands_agents-2.1.0.tar.gz |
|---|---|
| Size | 10.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
104767a8d3d5b2d4af451d7b158fbc694b89acff58ecbf9b660872eab343ec89
|
|
BLAKE2b-256 checksum How to use checksums |
fa71b2ca827b48274c87e04997f1275270f1c19df3a2e26f64443b1ba11ad71d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / citadeldb_strands_agents-2.1.0-py3-none-any.whl
| Download URL | citadeldb_strands_agents-2.1.0-py3-none-any.whl |
|---|---|
| Size | 6.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fd1218f98d3f25cbf023bf14f9d6dbc9a164d88c4f1607c4618637e152cb1cee
|
|
BLAKE2b-256 checksum How to use checksums |
847596fe72e74edbf06c572d9a9abdea24b134f3b3dd2f4681e67e65e304691a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency log