Skip to content

LiveKit Agents integration

Astrocyte memory for real-time voice and video AI agents built with LiveKit.

Module: astrocyte.integrations.livekit Pattern: Session lifecycle memory — pre-fetch context, mid-session recall, post-session retain Framework dependency: livekit-agents (optional)

Terminal window
pip install astrocyte livekit-agents
from astrocyte import Astrocyte
from astrocyte.integrations.livekit import AstrocyteLiveKitMemory
brain = Astrocyte.from_config("astrocyte.yaml")
memory = AstrocyteLiveKitMemory(
brain,
bank_id="caller-db",
session_bank_prefix="session-", # Per-session banks
)
# In a LiveKit agent session handler:
# 1. Session start — load relevant context
context = await memory.get_session_context("user preferences", session_id="abc123")
# 2. Mid-session — quick recall for context enrichment
results = await memory.recall_mid_session("pricing", session_id="abc123", max_results=3)
# 3. Session end — retain key takeaways
await memory.retain_from_session(
"User prefers morning appointments and mentioned budget constraints",
session_id="abc123",
tags=["preference", "scheduling"],
)
# 4. Summarize session
summary = await memory.summarize_session(session_id="abc123")

LiveKit agents are real-time — voice/video over WebRTC. Memory integration is about the session lifecycle, not batch tool calls:

PhaseMethodPurpose
Session startget_session_context()Pre-fetch memories for system prompt
Mid-sessionrecall_mid_session()Dynamic context enrichment during conversation
Session endretain_from_session()Persist key takeaways
Post-sessionsummarize_session()Synthesize session into a summary

With session_bank_prefix, each session gets its own isolated bank:

memory = AstrocyteLiveKitMemory(
brain,
bank_id="shared-caller-db", # Fallback for no session_id
session_bank_prefix="session-", # session-abc123, session-xyz789, etc.
)

AstrocyteLiveKitMemory(brain, bank_id, *, session_bank_prefix=None, max_context_items=10)

Section titled “AstrocyteLiveKitMemory(brain, bank_id, *, session_bank_prefix=None, max_context_items=10)”
MethodReturns
get_session_context(query, *, session_id=None)str — formatted memory context
recall_mid_session(query, *, session_id=None, max_results=3)list[dict]
retain_from_session(content, *, session_id=None, tags=None)str | None — memory_id
summarize_session(*, session_id=None)str — synthesized summary