Skip to content

CLI & Binaries

Everything runnable in the repo: the cmd/ binaries and the Make targets that build, test, and generate.

Binaries (cmd/)

Binary Purpose
memory-server The Athena server: API, workers, schedulers in one process
init-ltm Creates the athena_ltm database, collections, and indexes (idempotent)
simulate Drives a running server through scripted conversation scenarios
test-gemini Exercises the configured LLM provider end to end
verify End-to-end pipeline check: archival counts + graph state
verifydb Dumps cognitive_chains from MongoDB
verify_analytics Reports LTM graph state: communities, bridges, node counts

All run with go run cmd/<name>/main.go; the verifiers assume the local Docker stack. Debugging workflows: Debug Tools.

Make targets

Build

Target Does
make build Compiles memory-server
make docker-build Builds the Docker image
make clean Removes build artifacts

Generate

Target Does
make generate Runs scripts/generate.sh: protoc → *.pb.go, *.pb.gw.go, docs/api/openapi.json
make install-tools Installs protoc plugins, golangci-lint, staticcheck, goimports

Generated files under api/grpc/gen/ are git-ignored; always regenerate rather than commit.

Test

Target Does
make test Full test suite
make test-short Unit tests only; no Docker needed (stores are mocked)
make test-e2e Integration suite; needs the Docker stack and a real LLM key (loads .env.dev)
make test-race Race-detector run
make test-cover Coverage report

Lint

Target Does
make lint All checks below
make lint-fmt gofmt
make lint-vet go vet
make lint-lint golangci-lint
make lint-tidy go.mod tidy check
make pre-commit fmt + vet + tidy, the fast pre-push loop

CI

Target Does
make ci lint + test + build, the same pipeline CI runs

Scripts

Script Purpose
run_local_server.sh Starts the server with dev-friendly overrides (1-minute promoter/archiver tickers)
test_e2e_pipeline.sh Scripted end-to-end pipeline exercise
scripts/generate.sh The protoc runner behind make generate
scripts/lint.sh The lint suite behind make lint-*
scripts/benchmark/ Performance test harnesses

Releases

Releases are driven by the VERSION file: changing it on the default branch triggers the release workflow, which tags v<version>, creates a GitHub Release, and pushes the Docker image to GitHub Container Registry. There is no manual tag step.