Config
Everything is one frozen object. Nothing in this package reads the environment unless you callConfig.from_env(), and the OpenAI key is never written back into os.environ.
Only two fields are required.
Config.prefetch and Config.writer are nested objects covering the speculative retrieval
thresholds and the background write queue. Both have working defaults.
writer.drain_timeout_s defaults to 12 seconds because it must exceed the p95 of a full ingest.
A shorter value silently discards the last turn of every call.Python API
build
Runtime, which is process-scoped and shared by every session in the worker.
Runtime
VoiceMemory
MemoryHooks
The only LiveKit-aware surface.An uncaught exception inside
on_user_turn_completed is swallowed by LiveKit and drops the
user’s turn entirely, producing no reply at all. Every failure path in this method is contained
for that reason: a memory failure degrades to no memory, never to silence.Protocols
Four seams, defined withtyping.Protocol. Structural typing means your implementation never
imports anything from this package. container.py is the only module that names a concrete class.
voicemem-db
Schema management. Run it with a role that has DDL rights, not your runtime role.status reports whether row-level security is actually enforced for the role you connected as,
rather than only whether the policies exist. Those are different things, and the difference is
easy to miss.
