Skip to content

Environment Variables

All environment variables supported by SpecMem.

Core Variables

Variable Description Default
SPECMEM_CONFIG Path to config file .specmem.toml
SPECMEM_LOG_LEVEL Log level (debug, info, warning, error) info
SPECMEM_NO_COLOR Disable colored output false
SPECMEM_DATA_DIR Data directory path .specmem

Embedding Providers

OpenAI

Variable Description Required
OPENAI_API_KEY OpenAI API key Yes
OPENAI_ORG_ID Organization ID No
OPENAI_BASE_URL Custom API base URL No

Google

Variable Description Required
GOOGLE_API_KEY Google API key Yes

Together AI

Variable Description Required
TOGETHER_API_KEY Together AI API key Yes

Vector Databases

Qdrant

Variable Description Required
QDRANT_URL Qdrant server URL No
QDRANT_API_KEY Qdrant API key No

ChromaDB

Variable Description Required
CHROMA_HOST ChromaDB server host No
CHROMA_PORT ChromaDB server port No

Configuration Overrides

Override any config option via environment variable:

# Pattern: SPECMEM_<SECTION>_<KEY>
export SPECMEM_EMBEDDING_PROVIDER="openai"
export SPECMEM_EMBEDDING_MODEL="text-embedding-3-small"
export SPECMEM_VECTORDB_BACKEND="qdrant"
export SPECMEM_IMPACT_MAX_DEPTH="3"

CI/CD Variables

Recommended variables for CI environments:

# Disable interactive prompts
export SPECMEM_CI="true"

# Use JSON logging
export SPECMEM_LOG_FORMAT="json"

# Strict validation
export SPECMEM_VALIDATION_STRICT="true"

Docker Variables

ENV SPECMEM_CONFIG=/app/.specmem.toml
ENV SPECMEM_DATA_DIR=/data/specmem
ENV SPECMEM_LOG_LEVEL=info

Example .env File

# .env (add to .gitignore)

# Embedding provider
OPENAI_API_KEY=sk-...

# Vector database
QDRANT_URL=https://your-cluster.qdrant.io
QDRANT_API_KEY=...

# Logging
SPECMEM_LOG_LEVEL=debug

Loading Environment Variables

Python

from dotenv import load_dotenv
load_dotenv()

from specmem import SpecMemClient
sm = SpecMemClient()  # Uses env vars automatically

Shell

# Load from .env
export $(cat .env | xargs)

# Run SpecMem
specmem scan

Security Notes

Never Commit API Keys

  • Add .env to .gitignore
  • Use secret management in CI/CD
  • Rotate keys regularly

Use .specmem.local.toml

For local overrides that shouldn't be committed:

# .specmem.local.toml (gitignored)
[embedding]
provider = "openai"
api_key = "sk-..."