Engram
Persistent memory for AI coding agents — self-hosted Engram Cloud sync server with a web dashboard, backed by PostgreSQL.
Configuration
version: "3.8"
services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: engram
POSTGRES_PASSWORD: engram
POSTGRES_DB: engram_cloud
volumes:
- engram-postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U engram -d engram_cloud"]
interval: 5s
timeout: 3s
retries: 10
engram:
image: ghcr.io/gentleman-programming/engram:1.16.3
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
ENGRAM_DATABASE_URL: postgres://engram:engram@postgres:5432/engram_cloud?sslmode=disable
ENGRAM_JWT_SECRET: ${ENGRAM_JWT_SECRET}
ENGRAM_CLOUD_TOKEN: ${ENGRAM_CLOUD_TOKEN}
ENGRAM_CLOUD_ADMIN: ${ENGRAM_CLOUD_ADMIN}
ENGRAM_CLOUD_ALLOWED_PROJECTS: ${ENGRAM_CLOUD_ALLOWED_PROJECTS}
ENGRAM_CLOUD_HOST: "0.0.0.0"
ENGRAM_PORT: "8080"
command: ["cloud", "serve"]
expose:
- 8080
volumes:
engram-postgres:[variables]
main_domain = "${domain}"
jwt_secret = "${password:64}"
cloud_token = "${password:48}"
admin_token = "${password:48}"
[config]
env = [
"ENGRAM_JWT_SECRET=${jwt_secret}",
"ENGRAM_CLOUD_TOKEN=${cloud_token}",
"ENGRAM_CLOUD_ADMIN=${admin_token}",
"ENGRAM_CLOUD_ALLOWED_PROJECTS=*",
]
mounts = []
[[config.domains]]
serviceName = "engram"
port = 8080
host = "${main_domain}"
path = "/dashboard"Base64
To import this template in Dokploy: create a Compose service → Advanced → Base64 import and paste the content below:
ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcbnNlcnZpY2VzOlxuICBwb3N0Z3JlczpcbiAgICBpbWFnZTogcG9zdGdyZXM6MTYtYWxwaW5lXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIFBPU1RHUkVTX1VTRVI6IGVuZ3JhbVxuICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6IGVuZ3JhbVxuICAgICAgUE9TVEdSRVNfREI6IGVuZ3JhbV9jbG91ZFxuICAgIHZvbHVtZXM6XG4gICAgICAtIGVuZ3JhbS1wb3N0Z3JlczovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGFcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRC1TSEVMTFwiLCBcInBnX2lzcmVhZHkgLVUgZW5ncmFtIC1kIGVuZ3JhbV9jbG91ZFwiXVxuICAgICAgaW50ZXJ2YWw6IDVzXG4gICAgICB0aW1lb3V0OiAzc1xuICAgICAgcmV0cmllczogMTBcblxuICBlbmdyYW06XG4gICAgaW1hZ2U6IGdoY3IuaW8vZ2VudGxlbWFuLXByb2dyYW1taW5nL2VuZ3JhbToxLjE2LjNcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGRlcGVuZHNfb246XG4gICAgICBwb3N0Z3JlczpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIEVOR1JBTV9EQVRBQkFTRV9VUkw6IHBvc3RncmVzOi8vZW5ncmFtOmVuZ3JhbUBwb3N0Z3Jlczo1NDMyL2VuZ3JhbV9jbG91ZD9zc2xtb2RlPWRpc2FibGVcbiAgICAgIEVOR1JBTV9KV1RfU0VDUkVUOiAke0VOR1JBTV9KV1RfU0VDUkVUfVxuICAgICAgRU5HUkFNX0NMT1VEX1RPS0VOOiAke0VOR1JBTV9DTE9VRF9UT0tFTn1cbiAgICAgIEVOR1JBTV9DTE9VRF9BRE1JTjogJHtFTkdSQU1fQ0xPVURfQURNSU59XG4gICAgICBFTkdSQU1fQ0xPVURfQUxMT1dFRF9QUk9KRUNUUzogJHtFTkdSQU1fQ0xPVURfQUxMT1dFRF9QUk9KRUNUU31cbiAgICAgIEVOR1JBTV9DTE9VRF9IT1NUOiBcIjAuMC4wLjBcIlxuICAgICAgRU5HUkFNX1BPUlQ6IFwiODA4MFwiXG4gICAgY29tbWFuZDogW1wiY2xvdWRcIiwgXCJzZXJ2ZVwiXVxuICAgIGV4cG9zZTpcbiAgICAgIC0gODA4MFxuXG52b2x1bWVzOlxuICBlbmdyYW0tcG9zdGdyZXM6XG4iLAogICJjb25maWciOiAiW3ZhcmlhYmxlc11cbm1haW5fZG9tYWluID0gXCIke2RvbWFpbn1cIlxuand0X3NlY3JldCA9IFwiJHtwYXNzd29yZDo2NH1cIlxuY2xvdWRfdG9rZW4gPSBcIiR7cGFzc3dvcmQ6NDh9XCJcbmFkbWluX3Rva2VuID0gXCIke3Bhc3N3b3JkOjQ4fVwiXG5cbltjb25maWddXG5lbnYgPSBbXG4gIFwiRU5HUkFNX0pXVF9TRUNSRVQ9JHtqd3Rfc2VjcmV0fVwiLFxuICBcIkVOR1JBTV9DTE9VRF9UT0tFTj0ke2Nsb3VkX3Rva2VufVwiLFxuICBcIkVOR1JBTV9DTE9VRF9BRE1JTj0ke2FkbWluX3Rva2VufVwiLFxuICBcIkVOR1JBTV9DTE9VRF9BTExPV0VEX1BST0pFQ1RTPSpcIixcbl1cbm1vdW50cyA9IFtdXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcImVuZ3JhbVwiXG5wb3J0ID0gODA4MFxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIlxucGF0aCA9IFwiL2Rhc2hib2FyZFwiXG4iCn0=Links
Tags
ai, memory, developer-tools
Version: 1.16.3