Letta V1 — memory blocks plus sleep-time compute primary agent (on the critical path) responds to user; writes raw facts fast; no consolidation turn 1 user: "my name is ava, I live in Berlin" block_append human "name=ava city=Berlin" turn 2 user: "plan a curriculum for senior eng" block_append task "audience=senior eng" turn 3 user: "I moved to Lisbon" block_append human "city=Lisbon" — both cities now in block sleep-time agent (off the critical path) runs between turns; stronger model allowed; no latency cost scan blocks summarize if near_limit compact human block: drop duplicates, keep latest values reconcile archival invalidate stale facts contradictions against core trigger invalidation, not delete write learned_context into shared blocks produces new stable facts for the next turn three tiers of Letta memory core (always visible) blocks: human, persona, task editable via block_{append,replace,rewrite} per-block character limit near_limit triggers sleep-time summarization Persona/Safety block writes need review versioned; diff surfaces in the trace pinned in the prompt every turn recall (conversation) turn log, paginated auto-written each turn retrieval via conversation_search tail evicts on cap citation: session_id + turn_id primary reads; sleep-time summarizes lossy but always addressable archival (external) vector + KV + graph (Lesson 09) archival_memory_{insert,search} invalidation, not deletion, for contradictions tags for scope: user/session/agent untrusted on retrieval (Lesson 27) sleep-time dedups on >90% token overlap scales past context window Letta V1 swaps send_message+heartbeat for native reasoning; loop shape unchanged.