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 and level of application logging.
  logging:
    path: mem-machine.log
    level: info #| debug | error
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
Configuration for the database storing raw episode data.
episode_store:
  database: profile_storage
Parameters:
ParameterDescriptionDefault
databaseThe ID of a database defined in resources.databases for episode storage.Required
Configuration for the episodic memory service, which handles event-based memories.
  episodic_memory:
    long_term_memory:
      vector_graph_store: my-neo4j-store
      embedder: my-openai-embedder
      reranker: my-rrf-reranker
    short_term_memory:
      llm_model: my-summarization-llm
      message_capacity: 64000
Parameter Descriptions:
ParameterDescriptionDefault
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
short_term_memory.llm_modelThe ID of a language model defined in resources.language_models for summarization.Required
short_term_memory.message_capacityThe maximum character capacity for short-term memory.64000
Configuration for the semantic memory service, which handles declarative, knowledge-based memories.
semantic_memory:
  llm_model: my-semantic-llm
  embedding_model: my-openai-embedder
  database: my-postgres-db
Parameters:
ParameterDescriptionDefault
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
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
Manages the default prompts used for various memory types.
prompt:
  session:
    - profile_prompt
Parameter Description:
ParameterDescriptionDefault
profile_promptList of predefined prompt IDs for semantic user profile memory.["profile_prompt", "writing_assistant_prompt"]
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. 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. Linux/MacOS:
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
Windows (PowerShell):
$env:HTTP_PROXY = "http://proxy.example.com:8080"
$env:HTTPS_PROXY = "http://proxy.example.com:8080"
$env:SSL_CERT_FILE = "C:\path\to\custom-ca-cert.pem"

memmachine-server