Skip to main content

MemMachine Configuration

MemMachine’s configuration is managed through a cfg.yml file, which allows for fine-tuning various aspects of the system. The new configuration structure, introduced in v0.2, emphasizes modularity and centralized resource definitions, making it easier to manage and scale your memory solutions. All configuration items are organized under top-level keys in the cfg.yml file. References between components are made using string IDs, promoting reusability and clarity. To see a complete example of a potential cfg.yml file, check out GPU-based Sample Config File.

Configuration Sections

Manages the path, format, and level of application logging.
  logging:
    path: mem-machine.log
    level: info #| debug | warning | error | critical
    format: "%(asctime)s [%(levelname)s] %(name)s - %(message)s"
Parameters:
ParameterDescriptionDefault
pathThe file path to write logs to. If empty, logs are sent to stdout.MemMachine.log
levelThe minimum level of messages to log.info
formatThe logging format string. Must include %(asctime)s, %(levelname)s, and %(message)s.%(asctime)s [%(levelname)s] %(name)s - %(message)s
Configuration for the database storing raw episode data.
episode_store:
  database: profile_storage
  with_count_cache: true
Parameters:
ParameterDescriptionDefault
databaseThe ID of a database defined in resources.databases for episode storage.Required
with_count_cacheWhether to maintain an in-memory cache for session message counts.true
Configuration for the episodic memory service, which handles event-based memories.
  episodic_memory:
    session_key: user-session-id
    metrics_factory_id: prometheus
    long_term_memory:
      session_id: user-session-id
      vector_graph_store: my-neo4j-store
      embedder: my-openai-embedder
      reranker: my-rrf-reranker
      message_sentence_chunking: false
    short_term_memory:
      session_key: user-session-id
      llm_model: my-summarization-llm
      summary_prompt_system: episode_summary_system
      summary_prompt_user: episode_summary_user
      message_capacity: 64000
    long_term_memory_enabled: true
    short_term_memory_enabled: true
    enabled: true
Parameter Descriptions:
ParameterDescriptionDefault
session_keyUnique session identifier for episodic ingestion and context tracking.Required
metrics_factory_idID of the metrics exporter factory (e.g., prometheus).prometheus
long_term_memory_enabledWhether long-term episodic memory is enabled.true
short_term_memory_enabledWhether short-term episodic memory is enabled.true
enabledWhether episodic memory as a whole is enabled.true
long_term_memory.vector_graph_storeThe ID of a database defined in resources.databases for long-term storage.Required
long_term_memory.embedderThe ID of an embedder defined in resources.embedders for creating embeddings.Required
long_term_memory.rerankerThe ID of a reranker defined in resources.rerankers for search result re-ranking.Required
long_term_memory.session_idThe same session_key used for long-term memory operations.Inherited from session_key
long_term_memory.message_sentence_chunkingIf true, chunk messages into sentences before embedding.false
short_term_memory.session_keySession key for short-term memory summarization.Inherited from session_key
short_term_memory.llm_modelThe ID of a language model defined in resources.language_models for summarization.Required
short_term_memory.summary_prompt_systemSystem prompt ID for short-term summarization.Required
short_term_memory.summary_prompt_userUser prompt ID for short-term summarization.Required
short_term_memory.message_capacityThe maximum character capacity for short-term memory.64000
Configuration for optional top-level retrieval-agent orchestration used by episodic search when agent_mode=true.
retrieval_agent:
  llm_model: my-agent-llm
  reranker: my-rrf-reranker
Parameter Descriptions:
ParameterDescriptionDefault
llm_modelThe language model ID used by retrieval-agent routing/rewrite steps.Auto-resolved from configured memory models when omitted.
rerankerThe reranker ID used by retrieval-agent result reranking.Auto-resolved from episodic long-term-memory reranker when omitted.
Configuration for the semantic memory service, which handles declarative, knowledge-based memories.
semantic_memory:
  enabled: true
  llm_model: my-semantic-llm
  embedding_model: my-openai-embedder
  database: my-postgres-db
  config_database: profile_storage
  with_config_cache: true
  ingestion_trigger_messages: 5
  ingestion_trigger_age: 00:05:00
Parameters:
ParameterDescriptionDefault
enabledWhether semantic memory is enabled. Auto-disabled when required fields are missing.true
llm_modelThe ID of a language model defined in resources.language_models for semantic processing.Required
embedding_modelThe ID of an embedder defined in resources.embedders for creating embeddings.Required
databaseThe ID of a database defined in resources.databases for semantic storage.Required
config_databaseThe ID of a database used for semantic configuration metadata.Required
with_config_cacheWhether to use an in-memory cache for semantic memory configurations.true
ingestion_trigger_messagesNumber of pending messages before semantic ingestion triggers.5
ingestion_trigger_ageMax age of pending messages before ingestion triggers (duration in HH:MM:SS).00:05:00
Configuration for the session management database.
session_manager:
  database: profile_storage
Parameters:
ParameterDescriptionDefault
databaseThe ID of a database defined in resources.databases for session data storage.Required
API server host and port configuration.
server:
  host: localhost
  port: 8080
Parameters:
ParameterDescriptionDefault
hostAPI server interface host.localhost
portAPI server port.8080
Manages the default prompts used by semantic memory for organization and summarization.
prompt:
  default_org_categories:
    - profile_prompt
  default_project_categories:
    - profile_prompt
  default_user_categories:
    - profile_prompt
  episode_summary_system_prompt_path: default_episode_summary_system_prompt.txt
  episode_summary_user_prompt_path: default_episode_summary_user_prompt.txt
Parameter Description:
ParameterDescriptionDefault
default_org_categoriesList of prompt IDs used for organization-scoped semantic memory.[]
default_project_categoriesList of prompt IDs used for project-scoped semantic memory.["profile_prompt"]
default_user_categoriesList of prompt IDs used for user-scoped semantic memory.[]
episode_summary_system_prompt_pathPath to the system prompt template for episode summarization.""
episode_summary_user_prompt_pathPath to the user prompt template for episode summarization.""
This section centralizes the definitions of various external resources, which can then be referenced by ID in other parts of the configuration.

Databases

Defines connections to various database backends (Neo4j, PostgreSQL, SQLite).
resources:
  databases:
    profile_storage:
      provider: postgres
      config:
        host: localhost
        port: 5432
        user: postgres
        db_name: postgres
        password: <YOUR_PASSWORD_HERE>
    my_storage_id:
      provider: neo4j
      config:
        uri: 'bolt://localhost:7687'
        username: neo4j
        password: <YOUR_PASSWORD_HERE>
    sqlite_test:
      provider: sqlite
      config:
        path: sqlite_test.db
Parameter Descriptions:
ParameterDescriptionDefault
providerThe database provider type: neo4j, postgres, or sqlite.Required
configA dictionary containing provider-specific configuration.Required
config.hostHostname for the database (e.g., localhost).Depends on provider
config.portPort number for the database connection.Depends on provider
config.userUsername for database authentication.Depends on provider
config.db_nameDatabase name (for postgres).Depends on provider
config.passwordPassword for database authentication.Depends on provider
config.uriThe URI for the given database.Depends on provider
config.pathThe path for the given database.Depends on provider
config.usernameUsername for internal graph store authentication.Depends on provider
my_storage_idThe specific configuration for the system’s internal graph store.Required
sqlite_testThe configuration for the SQLite database used for testing.Required

Embedders

Defines various embedding models, which can be used to generate vector representations of text.
resources:
  embedders:
    openai_embedder: 
      provider: openai
      config:
        model: "text-embedding-3-small"
        api_key: <YOUR_API_KEY>
        base_url: "https://api.openai.com/v1"
        dimensions: 1536
    aws_embedder_id:
      provider: 'amazon-bedrock'
      config:
        region: "us-west-2"
        aws_access_key_id: <AWS_ACCESS_KEY_ID>
        aws_secret_access_key: <AWS_SECRET_ACCESS_KEY>
        model_id: "amazon.titan-embed-text-v2:0"
        similarity_metric: "cosine"
    ollama_embedder: # The embedder Service ID
      provider: openai
      config:
        model: "nomic-embed-text"
        api_key: "EMPTY"
        base_url: "http://host.docker.internal:11434/v1"
        dimensions: 768
Parameter Descriptions:
ParameterDescriptionDefault
Embedder IDThe embedder ID: openai_embedder, aws_embedder_id, ollama_embedder.Required
providerThe embedder provider type: openai, amazon-bedrock.Required
configA dictionary containing provider-specific configuration.Required
config.modelModel name (e.g., text-embedding-3-small for OpenAI, nomic-embed-text for Ollama).Depends on provider
config.api_keyAPI key for OpenAI.Required for OpenAI
config.base_urlBase URL for OpenAI.Required for OpenAI
config.dimensionsDefines the length of the vector generated for the input text.Required for OpenAI
config.regionAWS region for Bedrock.Required for Bedrock
config.aws_access_key_idAWS access key ID for Bedrock.Required for Bedrock
config.aws_secret_access_keyAWS secret access key for Bedrock.Required for Bedrock
config.model_idBedrock model ID.Required for Bedrock
similarity_metricDefines the mathematical method used to compare two vectors for relevance (e.g., cosine).Required for Bedrock

Language Models

Defines various language models for tasks like summarization and generation.
resources:
  language_models:
    openai_model:
      provider: openai-responses
      config:
        model: "gpt-4o-mini"
        api_key: <YOUR_API_KEY>
        base_url: "https://api.openai.com/v1"
    aws_model:
      provider: "amazon-bedrock"
      config:
        region: "us-west-2"
        aws_access_key_id: <AWS_ACCESS_KEY_ID>
        aws_secret_access_key: <AWS_SECRET_ACCESS_KEY>
        model_id: "openai.gpt-oss-20b-1:0"
    ollama_model:
      provider: openai-chat-completions
      config:
        model: "llama3"
        api_key: "EMPTY"
        base_url: "http://host.docker.internal:11434/v1"
Parameters for each language model ID (openai_model, aws_model, ollama_model):
ParameterDescriptionDefault
providerThe language model provider type: openai-responses, openai-chat-completions, amazon-bedrock.Required
configA dictionary containing provider-specific configuration.Required
config.modelModel name (e.g., gpt-4o-mini for OpenAI).Depends on provider
config.api_keyAPI key for OpenAI.Required for OpenAI
config.base_urlThe base URL for the modelDepends on provider
config.regionAWS region for Bedrock.Required for Bedrock
config.aws_access_key_idAWS access key ID for Bedrock.Required for Bedrock
config.aws_secret_access_keyAWS secret access key for Bedrock.Required for Bedrock
config.model_idBedrock model ID.Required for Bedrock

Rerankers

Defines various reranking strategies used to reorder search results for improved relevance.
rerankers:
my_reranker_id:
  provider: "rrf-hybrid"
  config:
    reranker_ids:
      - id_ranker_id
      - bm_ranker_id
      - ce_ranker_id
id_ranker_id:
  provider: "identity"
bm_ranker_id:
  provider: "bm25"
ce_ranker_id:
  provider: "cross-encoder"
  config:
    model_name: "cross-encoder/qnli-electra-base"
aws_reranker_id:
  provider: "amazon-bedrock"
  config:
    region: "us-west-2"
    aws_access_key_id: <AWS_ACCESS_KEY_ID>
    aws_secret_access_key: <AWS_SECRET_ACCESS_KEY>
    model_id: "amazon.rerank-v1:0"
Parameter Descriptions:
ParameterDescriptionDefault
my_reranker_idThe reranker and reranker types you specify.Required
providerThe reranker provider type: bm25, amazon-bedrock, cross-encoder, embedder, identity, rrf-hybrid.Required
configA dictionary containing provider-specific configuration.Required
config.reranker_idsList of reranker IDs to combine for rrf-hybrid.Required for rrf-hybrid
config.model_nameModel name for cross-encoder.Depends on provider
config.embedder_idID of an embedder for embedder reranker.Required for embedder
config.regionAWS region for Bedrock.Required for Bedrock
config.aws_access_key_idAWS access key ID for Bedrock.Required for Bedrock
config.aws_secret_access_keyAWS secret access key for Bedrock.Required for Bedrock
config.model_idBedrock model ID.Required for Bedrock.

Proxy Configuration

If you are deploying MemMachine behind a corporate proxy, you may need to configure it to route traffic through your proxy server and trust custom Certificate Authorities (CAs).

Docker Compose

To configure proxies in a Docker Compose setup, add the HTTP_PROXY, HTTPS_PROXY, and SSL_CERT_FILE environment variables to your service definitions. You may also need to mount a custom CA certificate if your proxy performs SSL inspection. d For an end-to-end example, see sample_configs/env.dockercompose in this repository. The file contains environment settings you can source together with your own docker-compose.yml file. Add the following to your docker-compose.yml for the memmachine service:
services:
  memmachine:
    environment:
      # ... other variables ...
      # Proxy settings
      HTTP_PROXY: ${HTTP_PROXY:-http://proxy.example.com:8080}
      HTTPS_PROXY: ${HTTPS_PROXY:-http://proxy.example.com:8080}
      SSL_CERT_FILE: /app/custom-ca-cert.pem
    volumes:
      # ... other volumes ...
      - ./custom-ca-cert.pem:/app/custom-ca-cert.pem:ro,Z

Standard Installation (Pip/Source)

If you are running MemMachine directly on your host machine (e.g., using pip or from source), simply export the standard environment variables before starting the application.
export HTTP_PROXY="http://proxy.example.com:8080"
export HTTPS_PROXY="http://proxy.example.com:8080"
export SSL_CERT_FILE="/path/to/custom-ca-cert.pem"

memmachine-server