Memory Tiers & Evolution

Snipara's memory system uses intelligent tiering to automatically prioritize and manage agent memories, ensuring the most relevant context is always available.

New in 2026

Memory Tiers, Daily Journals, Agent Profiles, and Compaction tools are now available. These features enable persistent agent identity and self-curating memory systems.

Memory Tier System

Memories are automatically classified into three tiers based on type, access patterns, and age:

TierAuto-LoadToken BudgetMemory Types
CRITICALYes, always8,000 tokensDecisions, Facts
DAILYToday + Yesterday4,000 tokensContext, TODOs
ARCHIVEQuery-only-Learnings, Preferences

Automatic Classification

When you store a memory with rlm_remember, it's automatically assigned to a tier based on its type:

  • DECISION and FACT → CRITICAL (always available)
  • TODO and CONTEXT → DAILY (recent context)
  • LEARNING and PREFERENCE → ARCHIVE (query when needed)

Automatic Promotion

Memories can be promoted to CRITICAL tier based on usage:

  • Access count ≥ 3: If a memory is recalled 3+ times, it's promoted to CRITICAL
  • Confidence ≥ 0.8: High-confidence memories are promoted automatically

Daily Journals

Daily journals provide temporal structure to your operational notes. Unlike flat memories, journals are organized by day and automatically included in session context.

rlm_journal_append

Add an entry to today's journal:

rlm_journal_append(
    text="Completed auth refactor. Switched from JWT to session cookies.",
    tags=["auth", "refactor"]
)

rlm_journal_get

Read journal entries for a specific date:

# Today's entries
rlm_journal_get()

# Specific date with yesterday included
rlm_journal_get(date="2026-03-18", include_yesterday=True)

rlm_journal_summarize

Prepare a day's journal for summarization before archival:

rlm_journal_summarize(date="2026-03-18")

# Returns combined content with a suggested summarization prompt

Session Memory Loading

Use rlm_session_memories to get tiered memories optimized for session start:

rlm_session_memories(
    max_critical_tokens=8000,
    max_daily_tokens=4000,
    include_yesterday=True
)

This returns:

  • critical: All CRITICAL tier memories within token budget
  • daily: DAILY tier memories from today + yesterday
  • total_tokens: Combined token count

Memory Compaction

Over time, memories accumulate. Use compaction to optimize your memory store:

rlm_memory_compact

# Preview changes first
rlm_memory_compact(dry_run=True)

# Execute compaction
rlm_memory_compact(
    deduplicate=True,           # Merge duplicate memories
    promote_threshold=3,        # Promote learnings accessed 3+ times
    archive_older_than_days=30  # Archive old non-critical memories
)

Compaction performs:

  1. Promotion: Frequently-accessed learnings → CRITICAL
  2. Archival: Old non-critical memories → ARCHIVE
  3. Deduplication: Merge similar memories

rlm_memory_daily_brief

Generate a "Top 10 constraints" brief for the day:

rlm_memory_daily_brief(max_items=10)

# Returns formatted brief with:
# - Active decisions
# - Pending TODOs
# - Recent learnings

Tenant Profiles

For client projects, create structured tenant profiles that auto-load as CRITICAL memories:

rlm_tenant_profile_create

rlm_tenant_profile_create(
    client_name="Acme Corp",
    business_model="B2B SaaS for logistics",
    industry="Supply Chain",
    tech_stack="React, Node.js, PostgreSQL, AWS",
    legal_constraints="GDPR compliant, SOC2 Type II",
    security_requirements="MFA required, no PII in logs",
    risk_tolerance="low",
    dos=["Always validate input", "Use parameterized queries"],
    donts=["Never store passwords in plaintext"]
)

rlm_tenant_profile_get

# Get all profiles for the project
rlm_tenant_profile_get()

# Get specific profile by ID
rlm_tenant_profile_get(tenant_id="mem_xyz789")

Best Practices

Use Appropriate Memory Types

Store decisions as type="decision" and facts as type="fact" to ensure they're automatically classified as CRITICAL and always available.

Journal Daily Progress

Use rlm_journal_append throughout your work sessions. Journal entries from today and yesterday are automatically included in session context.

Run Weekly Compaction

Schedule rlm_memory_compact weekly to keep your memory store efficient. Always preview with dry_run=True first.

Create Client Profiles Early

At project onboarding, create a tenant profile with client constraints and preferences. This ensures consistent context across all sessions.

Architecture Overview

┌─────────────────────────────────────────────────────────────────┐
│  LAYER 1: Documents (Knowledge)                                 │
│  • CLAUDE.md, docs/*, indexed content                           │
│  • Access: rlm_context_query                                    │
└─────────────────────────────────────────────────────────────────┘
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│  LAYER 2: Agent Profile (Soul)                                  │
│  • Identity, personality, boundaries                            │
│  • Auto-load on session start (swarm agents)                    │
│  • Access: rlm_agent_profile_get/update                         │
└─────────────────────────────────────────────────────────────────┘
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│  LAYER 3: Tiered Memory (Operational)                           │
│  • CRITICAL: decisions, facts (auto-load)                       │
│  • DAILY: context, todos (today + yesterday)                    │
│  • ARCHIVE: learnings, preferences (query-only)                 │
│  • Access: rlm_remember, rlm_recall, rlm_journal_*              │
└─────────────────────────────────────────────────────────────────┘