Structure

memory:
  id: string # Memory identifier (required for memory access)
  storage?: # Optional storage configuration (defaults to in-memory)
    use: string # Storage backend reference
    config?: object # Storage-specific configuration
  vector: # Vector configuration (required)
    use: string # Vector backend reference
    dimensions: number # Vector dimensions (e.g., 1536)
    config?: object # Vector-specific configuration
  embedder?: # Optional embedder configuration
    use: string # Embedder backend reference
    config?: object # Embedder-specific configuration
  options?: # Optional memory behavior configuration
    lastMessages?: number # Number of recent messages to include
    semanticRecall?: object # Vector search configuration
    workingMemory?: object # Working memory configuration

Basic Usage

Memory can be configured in three main ways:

memory:
  id: basic_memory
  vector:
    use: compozy/vector:pg-vector
    dimensions: 1536
    config:
      url: "{{ env.DATABASE_URL }}"

Memory References

Memory can be configured and accessed at three different levels:

# 1. Workflow Level Memory
memory:
  id: global_memory
  vector:
    use: compozy/vector:pg-vector
    dimensions: 1536
    config:
      url: "{{ env.DATABASE_URL }}"

# 2. Task Level Memory
tasks:
  analyze_request:
    memory:
      id: task_memory    # Reference to memory configuration
    with:
      context: "{{ memory.task_memory.current_thread }}"
      history: "{{ memory.task_memory.last_messages }}"
      relevant: "{{ memory.task_memory.semantic_search }}"

# 3. Agent Level Memory
agents:
  support_agent:
    use: compozy/agents:openai
    memory:
      id: agent_memory    # Reference to memory configuration
    with:
      context: "{{ memory.agent_memory.current_thread }}"
      history: "{{ memory.agent_memory.last_messages }}"
      relevant: "{{ memory.agent_memory.semantic_search }}"

At each level, memory can be accessed through:

  • {{ memory.<id>.current_thread }} - Access current conversation context
  • {{ memory.<id>.last_messages }} - Retrieve recent messages
  • {{ memory.<id>.semantic_search }} - Find relevant past interactions

Best Practices

Storage Selection

Choose whether to use the default in-memory storage or configure a persistent storage backend based on your needs.

Vector Configuration

Always configure your vector database with appropriate dimensions and connection details.

Embedder Selection

Consider configuring a specific embedder when you need control over the embedding process.

Memory IDs

Always provide clear, descriptive memory IDs as they are required for accessing memory through {{ memory.<id> }} references.