feat: rework auth model with UserToken and Daedalus/Pallas integration
Some checks failed
CVE Scan & Docker Build / build-and-push (push) Has been cancelled
CVE Scan & Docker Build / security-scan (push) Has been cancelled
Build & Deploy Docs / build-and-deploy (push) Successful in 1m10s

- Rename MCPToken to UserToken across models, views, and tests
- Update URL names from mcp-token-* to token-*
- Add Daedalus/Pallas integration design doc (v2)
- Switch docker-compose to build local mnemosyne:local image via shared
  build config instead of pulling from git.helu.ca
This commit is contained in:
2026-05-23 19:50:29 -04:00
parent 735eb9de1a
commit 93639188d3
44 changed files with 1305 additions and 865 deletions

View File

@@ -69,6 +69,16 @@ x-logging: &default-logging
max-size: "10m"
max-file: "5"
# -----------------------------------------------------------------------------
# Shared build config — build the Mnemosyne image locally from ./Dockerfile
# instead of pulling from git.helu.ca. All four Mnemosyne services
# (init/app/mcp/worker) share `image: mnemosyne:local`, so Compose builds
# once and reuses the resulting image across them.
# -----------------------------------------------------------------------------
x-mnemosyne-build: &mnemosyne-build
context: .
dockerfile: Dockerfile
services:
# ── Init sidecar: one-shot Postgres migrate + collectstatic + library-type seed. Runs on
@@ -88,8 +98,8 @@ services:
# This sidecar only needs Postgres, Neo4j, static files, and logging env —
# no S3, no Celery, no LLM encryption key. Keep it that way.
init:
image: git.helu.ca/r/mnemosyne:latest
pull_policy: always
image: mnemosyne:local
build: *mnemosyne-build
command: ["init"]
environment:
# Django core (settings import)
@@ -124,8 +134,8 @@ services:
# Celery tasks (hence CELERY_BROKER_URL is required here too — Django is
# the producer, the worker is the consumer).
app:
image: git.helu.ca/r/mnemosyne:latest
pull_policy: always
image: mnemosyne:local
build: *mnemosyne-build
command: ["web"]
environment:
# Django core
@@ -220,8 +230,8 @@ services:
# the S3 key here only matters if someone exploits a write path in the
# future — keep the credential scoped to read-only in your secret manager.
mcp:
image: git.helu.ca/r/mnemosyne:latest
pull_policy: always
image: mnemosyne:local
build: *mnemosyne-build
command: ["mcp"]
environment:
# Django core (ASGI still imports settings)
@@ -289,8 +299,8 @@ services:
# backend. Does NOT need HTTP-layer settings (ALLOWED_HOSTS, CSRF, MCP auth)
# or search tuning (the worker never serves queries).
worker:
image: git.helu.ca/r/mnemosyne:latest
pull_policy: always
image: mnemosyne:local
build: *mnemosyne-build
command: ["worker"]
environment:
# Django core (Celery imports settings)