Skip to content

Sessions API


FileSessionManager

python
from elsai.session import FileSessionManager

Persists sessions to the local filesystem.

python
FileSessionManager(
    storage_dir="./sessions",
    file_extension=".json",
)
ParameterDefaultDescription
storage_dir"./sessions"Directory to store session files
file_extension".json"File extension for session files

S3SessionManager

python
from elsai.session import S3SessionManager

Persists sessions to Amazon S3.

python
S3SessionManager(
    bucket_name="my-sessions-bucket",
    prefix="",
    region_name=None,
    boto3_session=None,
)
ParameterDescription
bucket_nameS3 bucket name
prefixKey prefix (e.g. "sessions/")
region_nameAWS region
boto3_sessionCustom boto3 session

RepositorySessionManager

python
from elsai.session import RepositorySessionManager

Generic session manager backed by a SessionRepository.

python
RepositorySessionManager(repository=my_repository)

SessionRepository

python
from elsai.session import SessionRepository

Abstract base for custom storage backends:

python
class SessionRepository:
    def save(self, session_id: str, data: dict) -> None: ...
    def load(self, session_id: str) -> dict | None: ...
    def delete(self, session_id: str) -> None: ...
    def exists(self, session_id: str) -> bool: ...

Snapshot

python
from elsai.types._snapshot import Snapshot, SnapshotPreset, SnapshotField

An in-memory snapshot of agent state.

SnapshotPreset

ValueIncluded fields
"session"messages, state, conversation_manager_state, interrupt_state

SnapshotField

Valid field names: "messages", "state", "conversation_manager_state", "interrupt_state", "system_prompt"

Taking a snapshot

python
snapshot = agent.take_snapshot(preset="session")
snapshot = agent.take_snapshot(include=["messages", "state"])
snapshot = agent.take_snapshot(preset="session", exclude=["interrupt_state"])
snapshot = agent.take_snapshot(preset="session", app_data={"version": "1.0"})

Restoring from snapshot

python
agent.load_snapshot(snapshot)

Serialising

python
import json

# Serialise
snapshot_dict = snapshot.model_dump()
json_str = json.dumps(snapshot_dict)

# Deserialise
from elsai.types._snapshot import Snapshot
snapshot = Snapshot(**json.loads(json_str))
agent.load_snapshot(snapshot)

Copyright © 2026 Elsai Foundry.