Repository navigation
Deployment
Tip
Value Proposition: Memory Journal's zero-trust CI/CD pipeline enforces five parallel quality and security gates, SHA-pinned GitHub Actions, Docker Scout CVE verification, and npm provenance attestationβensuring every container and package release is deterministic, auditable, and supply-chain hardened.
The full CI/CD pipeline (gatekeeper.yml) triggers automatically on push to main or a v* tag. It runs five gates in parallel, then deploys when triggered by a version tag (refs/tags/v*):
-
Lint + Tests (
lint-and-test.yml) -
CodeQL (
codeql.yml) -
Secrets scanning (
secrets-scanning.yml) -
Trivy security scan (
security-update.yml) -
E2E Validation (
e2e.yml)
Pushing to main runs the five quality gates. Pushing a v* tag triggers docker-publish.yml once all five gates pass, executing the release pipeline in strict sequence:
- Docker Scout CVE Scan (builds local image and fails on critical/high CVEs with fixes)
-
Functional Smoke Test (
--helpCLI verification and/healthHTTP endpoint readiness check) - Multi-Arch Native Build (
linux/amd64+linux/arm64) & SBOM/Provenance Attestation -
Manifest Merge & Docker Hub README Sync (
DOCKER_README.md< 25,000 chars) -
npm Publish Handoff (
publish-npm.ymlviaworkflow_callto build, verify, and publishmemory-journal-mcpto npm with provenance)
Node.js Requirement: The server explicitly mandates Node.js 24+ (recommend Node.js 26.x LTS) for all deployments.
Single-Instance Requirement: memory-journal-mcp is designed for single-instance operation. If you run multiple instances (e.g., behind a load balancer), you MUST explicitly document and enforce single-writer / single-instance behavior for the restore_backup tool to prevent database corruption during an active restore operation.
Action Versioning Requirement: All CI/CD Actions must be SHA-pinned (by digest, not version tag) according to MCP Builder Rules to prevent supply chain attacks.
Automatic (push a version tag): Push a version tag matching v* (e.g., vX.Y.Z). When github.ref starts with refs/tags/v, gatekeeper.yml runs all five quality gates and then triggers docker-publish.yml, which chains publish-npm.yml. (Note: Pushing directly to main without a v* tag only runs the five quality gates without triggering docker-publish.yml or publish-npm.yml).
Make sure these are set in Settings β Secrets β Actions:
| Secret | Purpose |
|---|---|
DOCKER_USERNAME |
Docker Hub login (writenotenow) |
DOCKER_PASSWORD |
Docker Hub password or access token |
NPM_TOKEN |
npm automation token |
Two protected environments must exist with appropriate approval rules:
| Environment | Used by | URL |
|---|---|---|
production |
Docker manifest push (on tags) | https://hub.docker.com/r/writenotenow/memory-journal-mcp |
npm |
npm publish | https://www.npmjs.com/package/memory-journal-mcp |
-
Docker Hub:
writenotenow/memory-journal-mcp:latest,writenotenow/memory-journal-mcp:v<version>, andwritenotenow/memory-journal-mcp:sha-<short>(plus platform-specificsha-<short>-amd64andsha-<short>-arm64). Multi-arch:linux/amd64+linux/arm64. -
npm:
memory-journal-mcp(public, with provenance). Version is read frompackage.json. If the current version is already on npm, publish is skipped silently. -
Local Docker Compose (
docker-compose.yml): The repository includes adocker-compose.ymldefiningmemory-journal-mcp(defaultstdioservice) andmemory-journal-mcp-http(HTTP/SSE service activated viadocker compose --profile http up -d, exposing port3000and Prometheus metrics port9465with a built-in/healthhealthcheck).
Per the release process memory:
- Update
package.jsonversion - Update
pnpm-lock.yaml(runpnpm install) - Update
server.jsonversion field - Ensure the OCI identifier tag in
server.jsonremains:latest
Important: The DOCKER_README.md file must be strictly < 25,000 characters to successfully sync with Docker Hub. If it exceeds this limit, the Docker Hub sync step will fail. Keep the Docker-specific README concise and link out to the full wiki for detailed information.
A security scan runs before any image is pushed. If Docker Scout finds critical/high CVEs with available fixes, the build fails and nothing publishes (neither Docker nor npm). You'll need to address the CVEs first.
Tip
Value Proposition: Deploy a powerful, persistent external memory system for AI agents. Engineered to preserve deep architectural context, eliminate hallucinations, and effortlessly synchronize multi-agent workflows at scale.
- Quick Start
- Installation
- Configuration
- CLI Reference
- HTTP Transport
- Tool Filtering
- Code Mode
- Tools Reference
- Performance
- Capacity Planning