Development and Deployment

August 23, 2026 ยท View on GitHub

Local Development

Prerequisites:

  • Go 1.24.6 or newer in the 1.24 series
  • make
  • jq only when running the opt-in CLI E2E/integration suite

Common commands:

make deps
make build
make test              # deterministic CI suite
make test-integration  # optional E2E/process/Docker suite
make install

Use a project-local data directory when testing manually:

MNEMON_DATA_DIR=.mnemon-dev ./bin/mnemon store create default
MNEMON_DATA_DIR=.mnemon-dev ./bin/mnemon remember --no-diff "Local development memory" --cat fact --imp 3
MNEMON_DATA_DIR=.mnemon-dev ./bin/mnemon recall "development memory"

Container Development

Create a local environment file:

cp .env.example .env

Start a shell inside the Go development image:

make compose-dev

Inside the container:

make build
make test

Container Deployment

Build the runtime image:

make docker-build

Run one command with persistent data mounted at /mnemon:

docker run --rm \
  -v mnemon-data:/mnemon \
  --env-file .env \
  mnemon-dev/mnemon:dev status

Or use Docker Compose:

cp .env.example .env
make compose-up
docker compose run --rm mnemon recall "query"
make compose-down

Optional Embeddings

Mnemon works without embeddings. The Compose embeddings profile provides the default Ollama-backed vector search setup:

docker compose --profile embeddings up -d ollama
docker compose exec ollama ollama pull nomic-embed-text
docker compose run --rm mnemon embed "hello"

The relevant environment variables are:

  • MNEMON_EMBED_ENDPOINT
  • MNEMON_EMBED_MODEL
  • MNEMON_EMBED_PROTOCOL
  • MNEMON_EMBED_API_KEY
  • MNEMON_EMBED_DIMENSIONS

For host-based Ollama, set MNEMON_EMBED_ENDPOINT=http://host.docker.internal:11434 on Docker Desktop, or use the host gateway address for Linux deployments.

An external OpenAI-compatible server can be selected with an endpoint ending in /v1, for example MNEMON_EMBED_ENDPOINT=http://host.docker.internal:18000/v1. Set MNEMON_EMBED_MODEL to a model exposed by that server and MNEMON_EMBED_API_KEY when authentication is required. Use HTTPS whenever the server is not on a trusted local network.

Release Deployment

Tagged releases are handled by GoReleaser through .github/workflows/release.yml.

Required repository secret:

  • HOMEBREW_TAP_TOKEN, only needed for publishing the Homebrew tap

Create a local snapshot build without publishing:

make release-snapshot