Skip to main content
AtomicMemory Core separates the concerns of embedding and language model inference into two independently configurable provider slots. The embedding provider turns every memory and every search query into a vector. The LLM provider drives structured claim extraction and AUDN-SC mutation decisions during full ingest. You can mix and match — for example, using local WASM embeddings with an Anthropic LLM, or OpenAI embeddings with Groq for faster extraction.

How Providers Are Selected

Both providers are set at container startup time via environment variables. Changing a provider requires restarting the container because the embedding model also determines the vector dimension, and all stored vectors must be consistent within a single deployment. If you need to change the embedding provider for an existing database, you will need to re-embed your stored memories.
The embedding provider and its dimension setting (EMBEDDING_DIMENSIONS) must remain constant for a given database. Mixing providers across restarts will cause search to return incorrect results.

Embedding Providers

Set EMBEDDING_PROVIDER to one of the values in the table below.
NameEMBEDDING_PROVIDER valueRequired env varNotes
Transformers (local WASM)transformersNoneRuns fully offline, no API key. Higher first-request latency while the model initialises.
OpenAIopenaiOPENAI_API_KEYDefault. Uses text-embedding-3-small at 1536 dims. Best hosted retrieval quality.
OpenAI-compatibleopenai-compatibleOPENAI_COMPATIBLE_BASE_URL, OPENAI_COMPATIBLE_API_KEYAny server implementing the OpenAI embeddings API — LM Studio, vLLM, LocalAI, etc.
OllamaollamaOLLAMA_BASE_URLConnects to a running local Ollama server. Pull the model in Ollama before starting Core.
Voyage AIvoyageVOYAGE_API_KEYHigh-quality retrieval-optimised embeddings. Separate document and query models.

Example configurations

EMBEDDING_PROVIDER=openai
OPENAI_API_KEY=sk-...
EMBEDDING_DIMENSIONS=1536

LLM Providers

The LLM provider is invoked during full ingest to extract structured facts from conversation messages and to make AUDN-SC mutation decisions (Add, Update, Delete, No-op, Supersede, Clarify). It is not used during quick ingest or search — only during the extraction step. Set LLM_PROVIDER to one of the values in the table below.
NameLLM_PROVIDER valueRequired env var
OpenAIopenaiOPENAI_API_KEY
AnthropicanthropicANTHROPIC_API_KEY
Ollama (local)ollamaOLLAMA_BASE_URL
GroqgroqGROQ_API_KEY
Google Geminigoogle-genaiGOOGLE_GENAI_API_KEY
OpenAI-compatibleopenai-compatibleOPENAI_COMPATIBLE_BASE_URL
Claude Code (personal dev)claude-codeLogged-in claude CLI session
Codex (personal dev)codexLogged-in codex CLI session

Example configurations

LLM_PROVIDER=openai
OPENAI_API_KEY=sk-...

Fully Local, Private Operation

For deployments where no data should leave your infrastructure — air-gapped servers, on-premises enterprise environments, or privacy-sensitive use cases — you can run AtomicMemory Core with zero external API calls by combining the transformers embedding provider with a local Ollama LLM.
The fully local stack requires no API keys and makes no outbound network requests after the Docker image and Ollama models are downloaded. It is well-suited for regulated industries and local-first applications.
docker run --rm -it --pull always \
  -p 127.0.0.1:17350:17350 \
  -e EMBEDDING_PROVIDER=transformers \
  -e LLM_PROVIDER=ollama \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  -v $HOME/.atomicstrata/atomicmemory-docker:/var/lib/atomicmemory/postgres \
  ghcr.io/atomicstrata/atomicmemory-core:latest
Make sure Ollama is running on the host with a suitable model pulled before starting the container:
ollama pull llama3.2
ollama serve

Personal Development Shortcuts

For individual developers who already have the Anthropic Claude CLI or OpenAI Codex CLI installed and authenticated, two special LLM provider values let you reuse your existing session without a separate API key:

claude-code

Uses the logged-in claude CLI session via the Claude Agent SDK. Run claude login once, then set LLM_PROVIDER=claude-code.

codex

Uses the logged-in codex CLI session. Run codex login once, then set LLM_PROVIDER=codex.
claude-code and codex consume your personal account limits and are not designed for multi-user or hosted deployments. Use a dedicated API key (anthropic or openai) for any shared or production environment.