Skip to main content

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)

Source distribution for citadeldb-strands-agents 2.1.0
File Size Uploaded
citadeldb_strands_agents-2.1.0.tar.gz 10.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for citadeldb-strands-agents 2.1.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

2.6.1

2 release files

2.6.0

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.0

2 release files

This release

2.1.0 This release

2 release files

2.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page