Skip to main content

InMemoryMemory

Volatile in-memory storage ideal for development, testing, and single-instance deployments.

Import

import { InMemoryMemory } from '@ag-kit/agents/storage';

Constructor

constructor(config?: {
  sessionId?: string;
  enableContextManagement?: boolean;
  tokenizer?: ITokenizer;
  thresholds?: Partial<ContextThresholds>;
  summarizer?: (events: IMemoryEvent[]) => Promise<StructuredSummary>;
})

Configuration

config
InMemoryMemoryConfig
Configuration for memory and context engineering

Basic Usage

// Simple setup for development
const memory = new InMemoryMemory();

// Production-ready setup with context management
const memory = new InMemoryMemory({
  sessionId: 'user-session-123',
  enableContextManagement: true,
  thresholds: {
    preRotThreshold: 8000,
    compactionTrigger: 0.8,
    summarizationTrigger: 0.95,
    recentToKeep: 10
  }
});

// Add and retrieve events
await memory.add({
  message: {
    id: 'msg-1',
    role: 'user',
    content: 'Hello, I need help with my project',
    timestamp: new Date()
  },
  state: { userId: 'user-123' }
});

const events = await memory.list({ limit: 10, maxTokens: 4000 });

Core Interface Methods

InMemoryMemory inherits from BaseMemory and implements all standard memory interface methods with full branching support. For complete API documentation including list(), add(), addList(), delete(), retrieve(), clear(), getCount(), isEmpty(), and all branching methods (branch(), checkout(), listBranches(), etc.), see the BaseMemory API Reference.

Multi-Session Support

InMemoryMemory provides built-in session isolation and management utilities:
// Session utilities specific to InMemoryMemory
const sessionIds = memory.getSessionIds(); // ['session-A', 'session-B']
const hasSession = memory.hasSession('session-A'); // true

// These methods are unique to InMemoryMemory
console.log('Active sessions:', sessionIds.length);

Unique Features

  • Zero Dependencies: No external storage requirements
  • Fastest Performance: All operations are in-memory
  • Full Branching Support: Complete Git-style conversation branching
  • Multi-Session Management: Built-in session isolation and utilities
  • Development Optimized: Instant setup with no configuration required

Limitations

  • Volatile Storage: Data is lost when process terminates
  • Single Process: Cannot share memory across multiple processes
  • Memory Growth: Memory usage increases with conversation length
  • No Persistence: Requires external backup for important conversations