chore: rename repo mana-monorepo → managarten
Some checks are pending
CD Mac Mini / Detect Changes (push) Waiting to run
CD Mac Mini / Deploy (push) Blocked by required conditions
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Docker Validate / Validate Dockerfiles (push) Waiting to run
Docker Validate / Build calendar-web (push) Blocked by required conditions
Docker Validate / Build quotes-web (push) Blocked by required conditions
Docker Validate / Build todo-backend (push) Blocked by required conditions
Docker Validate / Build todo-web (push) Blocked by required conditions
Docker Validate / Build mana-auth (push) Blocked by required conditions
Docker Validate / Build mana-sync (push) Blocked by required conditions
Docker Validate / Build mana-media (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run

Phase-3-Rename des ehemaligen Multi-App-Monorepos zum eigenständigen
Produkt-Repo. Verein heißt mana e.V., Plattform-Domain bleibt mana.how,
apps/mana/ bleibt unverändert — nur der Repo-Container kriegt den
neuen Namen "managarten" (Garten der mana-Apps).

Geändert:
- package.json#name + #description
- README.md (Titel + erster Absatz)
- TROUBLESHOOTING.md
- alle Mac-Mini-Skripte (Pfade ~/projects/mana-monorepo → ~/projects/managarten)
- COMPOSE_PROJECT_NAME-default in scripts/mac-mini/status.sh
- .github/workflows/cd-macmini.yml + mirror-to-forgejo.yml
- apps/docs (astro.config.mjs + content)
- .claude/settings.local.json (Bash-Permission-Pfade)
- alle docs/*.md Pfad-Referenzen
- launchd plists, .env.macmini.example, infrastructure/

Forgejo-Repo + GitHub-Repo bereits via API umbenannt. Lokales
Verzeichnis-Rename + Mac-Mini-Cutover folgen separat.
This commit is contained in:
Till JS 2026-05-09 01:16:02 +02:00
parent ac15de280b
commit b1b9bbc269
55 changed files with 90 additions and 90 deletions

View file

@ -369,7 +369,7 @@ docker run -d \
#### 1.2 Database Package erstellen
```bash
cd /Users/tillschneider/Documents/__00__Code/mana-monorepo
cd /Users/tillschneider/Documents/__00__Code/managarten
mkdir -p packages/cards-database
cd packages/cards-database
pnpm init

View file

@ -42,7 +42,7 @@ No manual action needed for regular deployments.
For immediate deployment without waiting for Watchtower:
```bash
ssh mana-server "cd ~/projects/mana-monorepo && ./scripts/mac-mini/deploy.sh"
ssh mana-server "cd ~/projects/managarten && ./scripts/mac-mini/deploy.sh"
```
## Monitoring
@ -79,7 +79,7 @@ ssh mana-server "./scripts/mac-mini/health-check.sh"
```bash
ssh mana-server
cd ~/projects/mana-monorepo
cd ~/projects/managarten
# Rollback to specific image tag
docker compose -f docker-compose.macmini.yml pull <service>:<tag>

View file

@ -1,6 +1,6 @@
# Docker Guide
Comprehensive guide for working with Docker in the mana-monorepo.
Comprehensive guide for working with Docker in the managarten.
## Table of Contents

View file

@ -141,7 +141,7 @@ key from `MANA_STT_API_KEY`. Keep that key out of the browser bundle.
**Where to obtain a key:**
- **Production (Mac Mini)**: `MANA_STT_API_KEY` is read from `~/projects/mana-monorepo/.env`
- **Production (Mac Mini)**: `MANA_STT_API_KEY` is read from `~/projects/managarten/.env`
on the Mac Mini and injected into the `mana-web` container by `docker-compose.macmini.yml`
(the `mana-web` service block, alongside `MANA_STT_URL=https://gpu-stt.mana.how`). To rotate,
update the `.env` value and recreate the container with

View file

@ -50,7 +50,7 @@ PATH=/opt/homebrew/bin:$PATH colima start
### 6. Testen ob File-Mounts funktionieren
```bash
docker run --rm -v ~/projects/mana-monorepo/docker/alertmanager/alertmanager.yml:/test.yml:ro alpine head -3 /test.yml
docker run --rm -v ~/projects/managarten/docker/alertmanager/alertmanager.yml:/test.yml:ro alpine head -3 /test.yml
```
Sollte YAML-Inhalt zeigen, NICHT "Is a directory".
@ -58,7 +58,7 @@ Sollte YAML-Inhalt zeigen, NICHT "Is a directory".
### 7. Alle Container starten
```bash
cd ~/projects/mana-monorepo
cd ~/projects/managarten
docker compose -f docker-compose.macmini.yml up -d --no-build
```

View file

@ -121,7 +121,7 @@ into individual app folders after every regeneration.
**One-time setup:**
```bash
# Pulls keys from ~/projects/mana-monorepo/.env on the Mac Mini via SSH
# Pulls keys from ~/projects/managarten/.env on the Mac Mini via SSH
pnpm setup:secrets
# Then propagate into per-app .env files

View file

@ -120,7 +120,7 @@ Host mana-server-remote
### Projekt-Verzeichnis
```bash
cd ~/projects/mana-monorepo
cd ~/projects/managarten
```
## CI/CD
@ -130,7 +130,7 @@ Ein GitHub Actions Self-Hosted Runner läuft nativ auf dem Mac Mini und deployt
- **CD Workflow:** `.github/workflows/cd-macmini.yml`
- **Mirror Workflow:** `.github/workflows/mirror-to-forgejo.yml` (GitHub → Forgejo Sync)
- **Runner:** `mac-mini` (self-hosted, macOS, ARM64, LaunchAgent)
- **Manuelles Deployment:** https://github.com/Memo-2023/mana-monorepo/actions/workflows/cd-macmini.yml
- **Manuelles Deployment:** https://github.com/Memo-2023/managarten/actions/workflows/cd-macmini.yml
### Forgejo (Mirror-Only)
@ -276,7 +276,7 @@ Other 502 root causes to check, in order of likelihood:
The unified mana-web container's `/api/v1/voice/transcribe` proxy needs
`MANA_STT_API_KEY` to authenticate against `gpu-stt.mana.how`. The key:
- Lives in **Mac Mini `~/projects/mana-monorepo/.env`** (gitignored)
- Lives in **Mac Mini `~/projects/managarten/.env`** (gitignored)
- Is referenced from `docker-compose.macmini.yml` as `${MANA_STT_API_KEY:-}`
- The source-of-truth is `services/mana-stt/.env` on the Windows GPU box (`API_KEYS=<key>:<name>`)
@ -540,7 +540,7 @@ Bei SSH-Zugriff ist Docker nicht im Standard-PATH. Für Remote-Befehle:
PATH=/Applications/Docker.app/Contents/Resources/bin:$PATH
# Beispiel: Remote docker compose
ssh mana-server "PATH=/Applications/Docker.app/Contents/Resources/bin:\$PATH && docker compose -f ~/projects/mana-monorepo/docker-compose.macmini.yml restart grafana"
ssh mana-server "PATH=/Applications/Docker.app/Contents/Resources/bin:\$PATH && docker compose -f ~/projects/managarten/docker-compose.macmini.yml restart grafana"
```
### Container existiert nicht (wurde nie erstellt)

View file

@ -208,7 +208,7 @@ curl "https://auth.mana.how/api/v1/analytics/growth?days=30"
```bash
# On Mac Mini server
cd ~/projects/mana-monorepo
cd ~/projects/managarten
# Start all monitoring services
docker compose -f docker-compose.macmini.yml up -d victoriametrics grafana mana-auth
@ -263,7 +263,7 @@ Add to crontab for daily backups:
```bash
# Daily backup at 2 AM
0 2 * * * /path/to/mana-monorepo/scripts/backup-monitoring.sh
0 2 * * * /path/to/managarten/scripts/backup-monitoring.sh
```
## Troubleshooting

View file

@ -68,7 +68,7 @@ const defaultSettings: Settings = {
pnpm --filter @mana/llm-playground build
# Auf Mac Mini deployen
ssh mana-server "cd ~/projects/mana-monorepo && docker compose -f docker-compose.macmini.yml up -d --build llm-playground"
ssh mana-server "cd ~/projects/managarten && docker compose -f docker-compose.macmini.yml up -d --build llm-playground"
```
## Modality-Typen

View file

@ -17,7 +17,7 @@ Production-Hot-Path bleibt unverändert auf dem Mini.
| Phase 2c — VM + Loki + Alerts | ✅ | Komplett auf GPU-Box. 11 Container neu (VM, Loki, Pushgateway, Blackbox, Vmalert, Alertmanager, Alert-notifier, GPU-eigenes Node-Exporter+Cadvisor+Promtail). VM scrapt 76 Targets, **69 UP / 7 DOWN** (DOWN sind alle pre-existing wrong /metrics endpoints auf Mana-Services, nicht durch Migration). Konfig-Pfade: `monitoring/{prometheus,loki,blackbox,alertmanager,alert-notifier}/`. Bekannte Limits siehe unten. |
| Phase 2d — Glitchtip mit dediziertem DB-Stack | ✅ | 4 Container neu (mana-mon-glitchtip + worker + dedizierte glitchtip-postgres + glitchtip-redis). Mini-Postgres scheiterte bei `logs.0001_initial`-Partition-Creation mit OS-level "Permission denied" (macOS-Docker-Storage-Quirk auf externer SSD). Auf der GPU-Box mit Linux-ext4 saubere 333-Tabellen-Migration. Worker enqueuet UND finished Tasks → DB-Writes funktional (vorher hingen sie ewig). Public-Hostname `glitchtip.mana.how` → mana-gpu-server-Tunnel (config v23). |
| Phase 2e — Status-Page auf GPU-Box | ✅ | 2 Container neu (`mana-mon-status-gen` + `mana-mon-status-nginx`). Sparse `/srv/mana/source` mit `mana-source-pull.timer` (stündlich) hostet das `generate-status-page.sh` und `mana-apps.ts`. status-gen schreibt in das Docker-Volume `status-output`, das status-nginx auf `:8090` ausliefert. Public-Hostname `status.mana.how` → mana-gpu-server-Tunnel (config v25). Bonus: behebt den Inode-Stale-Bind-Mount-Bug, der auf dem Mini bei jedem CD-`git checkout -f` die Status-Page kaputt machte. `vm.mana.how` (Phase-2c-Workaround für Mini→GPU-VM-Routing) wurde wieder aus dem Tunnel entfernt — VM ist nicht mehr public. |
| Phase 2f — drei weitere Hilfsdienste verlagert | ⚠️ teilweise zurückgerollt | (1) ~~**verdaccio** (npm.mana.how, was im mana-platform-Repo): Volume tar-stream + Config-bundle in mana-monorepo (`infrastructure/verdaccio/config.yaml`)~~ — am 2026-05-07 zurückgerollt: das Storage-Volume kam nie auf der GPU-Box an, der dortige Container war leer. DNS+Tunnel zurück auf Mini, Mini-Standalone-Compose-Project unter `~/projects/verdaccio/` bleibt Single-Source. (2) **news-ingester** (Bun-Background-Tick): Cross-LAN-DB zur Mini-Postgres. Cross-arch-Limit aufgedeckt — `docker save\|load` zwischen Mini (arm64) und GPU-Box (x86_64) wirft `exec format error`, daher nativer Build mit GPU-Box-eigenem Dockerfile in `infrastructure/news-ingester/` der `@mana/shared-rss` als `file:`-ref vendored. (3) **mana-ai** (AI Mission Runner): Cross-LAN für mana-api/mana-llm/mana-research, RSA-Key-Sync (`MANA_AI_PRIVATE_KEY_PEM`), `mana-ai.mana.how` zum GPU-Tunnel (config v28). Bonus: AI Mission Runner sitzt jetzt im selben docker-network wie gpu-llm/gpu-ollama — künftige direct-LLM-Pfade ohne Cloudflare-Round-Trip. Mini Container 44 → 43 (verdaccio bleibt Mini-side). |
| Phase 2f — drei weitere Hilfsdienste verlagert | ⚠️ teilweise zurückgerollt | (1) ~~**verdaccio** (npm.mana.how, was im mana-platform-Repo): Volume tar-stream + Config-bundle in managarten (`infrastructure/verdaccio/config.yaml`)~~ — am 2026-05-07 zurückgerollt: das Storage-Volume kam nie auf der GPU-Box an, der dortige Container war leer. DNS+Tunnel zurück auf Mini, Mini-Standalone-Compose-Project unter `~/projects/verdaccio/` bleibt Single-Source. (2) **news-ingester** (Bun-Background-Tick): Cross-LAN-DB zur Mini-Postgres. Cross-arch-Limit aufgedeckt — `docker save\|load` zwischen Mini (arm64) und GPU-Box (x86_64) wirft `exec format error`, daher nativer Build mit GPU-Box-eigenem Dockerfile in `infrastructure/news-ingester/` der `@mana/shared-rss` als `file:`-ref vendored. (3) **mana-ai** (AI Mission Runner): Cross-LAN für mana-api/mana-llm/mana-research, RSA-Key-Sync (`MANA_AI_PRIVATE_KEY_PEM`), `mana-ai.mana.how` zum GPU-Tunnel (config v28). Bonus: AI Mission Runner sitzt jetzt im selben docker-network wie gpu-llm/gpu-ollama — künftige direct-LLM-Pfade ohne Cloudflare-Round-Trip. Mini Container 44 → 43 (verdaccio bleibt Mini-side). |
| Phase 2g — mana-research auslagern | ✅ | Web-Research-Orchestrator mit 16+ Search-/LLM-Providern. Nativer Build via workspace-Dockerfile (sparse-checkout `services/mana-research` + `packages/{shared-research,shared-types,shared-hono,shared-logger}`). Cross-LAN zu mana-auth/mana-credits/mana-llm/mana-search/postgres/redis (alle auf 192.168.178.131); Redis-Auth via `REDIS_PASSWORD` aus Mini's `.env.macmini` übernommen. `research.mana.how` zum GPU-Tunnel umgebogen via Cloudflare-API (config v29). Beide `PUBLIC_MANA_RESEARCH_URL`-Vars in mana-app-web auf https-URL umgestellt — gleicher Cross-LAN-Bridge-Pattern wie mana-ai (Mini-Container können 192.168.178.11 nicht direkt erreichen, daher Tunnel-Roundtrip). Mini Container 42 → 41. |
| Phase 3 — Daten-Migration | n/a | Alle migrierten Apps lesen Mini-Postgres direkt — keine separate Datenmigration |
| Phase 4 — Cloudflare-Cutover | ✅ | API-Approach via `cert.pem` apiToken: PUT `/accounts/.../cfd_tunnel/.../configurations` für GPU-Tunnel, dann `cloudflared tunnel route dns --overwrite-dns`. Kein Dashboard-Klick nötig. 3 Hostnames live (grafana/git/stats) |
@ -66,7 +66,7 @@ WSL2 (Ubuntu 24.04, 24 GB RAM-Limit, 12 vCPU, vmIdleTimeout=-1)
│ ├── mana-mon-status-gen (alpine:3.20) — Generator-Loop, queryt VM lokal
│ ├── mana-mon-status-nginx (nginx:alpine, :8090) — serviert HTML+JSON
│ └── volume: status-output (geteilt zwischen den beiden)
└── /srv/mana/source/ — Sparse mana-monorepo-clone (scripts/ + packages/shared-branding/src/)
└── /srv/mana/source/ — Sparse managarten-clone (scripts/ + packages/shared-branding/src/)
└── systemd-timer: mana-source-pull.timer (stündlich `git pull --ff-only`)
└── Phase 2c — Metrics-Stack
├── mana-mon-victoria (VM v1.99.0, :9090) — scrapt Mini-Services via 192.168.178.131:<port>
@ -128,7 +128,7 @@ als langlebigen Windows-Prozess offen → WSL-VM idled nicht aus, Container
| Mac Mini SSH | `ssh mana-server` (192.168.178.131, User `mana`) — **OK** |
| GPU-Box SSH | `ssh mana-gpu` (192.168.178.11, User `tills`) — **derzeit offline** |
| GPU-Box muss vor Phase 1 erreichbar sein | Box einschalten, Network-Profile auf "Privat" setzen (Doku §1 in `WINDOWS_GPU_SERVER_SETUP.md`) |
| Live-Tunnel-Config Mac Mini | `/Users/mana/projects/mana-monorepo/cloudflared-config.yml` (geladen via LaunchAgent) |
| Live-Tunnel-Config Mac Mini | `/Users/mana/projects/managarten/cloudflared-config.yml` (geladen via LaunchAgent) |
| Mac-Mini-Tunnel-UUID | `1435166a-0e3f-4222-8de6-744f32cea5c9` |
| GPU-Box-Tunnel-UUID | `83454e8e-d7f5-4954-b2cb-0307c2dba7a6` (Token-managed im Cloudflare-Dashboard) |
@ -176,7 +176,7 @@ zurückgerollt — Storage-Volume kam dort nie an).
### Native Prozesse Mini (kein Docker, bleiben unverändert)
`who-server` (PM2), `who-web` (LaunchAgent), `cloudflared` (Mini-Tunnel),
`colima`, GitHub-Runner, `actions.runner.Memo-2023-mana-monorepo.mac-mini`.
`colima`, GitHub-Runner, `actions.runner.Memo-2023-managarten.mac-mini`.
## 2. Cloudflare-Routing — Vorher / Nachher

View file

@ -597,7 +597,7 @@ in one batch.
3. **`COMPOSE_PROJECT_NAME=manacore-monorepo` pinned.** The Mac Mini's
existing containers were created under the old project name
(`manacore-monorepo`) but the working tree directory is
`mana-monorepo`. Without a pin, every `docker compose up` from the
`managarten`. Without a pin, every `docker compose up` from the
repo root spawns a *second* project, creating duplicate
container/volume conflicts (the 2026-04-07 recovery had to pass
`-p manacore-monorepo` manually). The pin now lives in:

View file

@ -786,7 +786,7 @@ services:
image: myoung34/github-runner:latest
container_name: mana-github-runner
environment:
REPO_URL: https://github.com/your-org/mana-monorepo
REPO_URL: https://github.com/your-org/managarten
RUNNER_TOKEN: ${GITHUB_RUNNER_TOKEN}
RUNNER_NAME: macmini-runner
volumes:

View file

@ -1,6 +1,6 @@
# Refactoring Audit — April 2026
Pre-Launch Audit der gesamten mana-monorepo. Erstellt 2026-04-08, vor dem
Pre-Launch Audit der gesamten managarten. Erstellt 2026-04-08, vor dem
öffentlichen Launch. Während die App noch nicht live ist, sind größere
strukturelle Änderungen weiterhin möglich, ohne User-Daten zu gefährden.

View file

@ -70,7 +70,7 @@ SEPA Direct Debit wurde im Code aktiviert. Diese Checkliste dokumentiert die ver
```bash
ssh mana-server
cd ~/projects/mana-monorepo
cd ~/projects/managarten
git pull
./scripts/mac-mini/deploy.sh
```

View file

@ -58,7 +58,7 @@ Each entry carries:
### MCP gateway + Persona-runner — end-to-end live smoke
- **Priority:** 🟠 important
- **Shipped:** `16c881833` (M1+M1.5 MCP gateway), `493db0c3b` (M2.a-c persona schemas + seed), `f07eae3c0` (M3.b-d tick loop), `eb8fac23e` (tool_use_id pairing + audit), `5a5e24f58` (docker searxng fix). Plan at [`docs/plans/mana-mcp-and-personas.md`](../plans/mana-mcp-and-personas.md). Memory: [`project_mana_mcp_personas.md`](.claude/projects/-Users-till-Documents-Code-mana-monorepo/memory/project_mana_mcp_personas.md).
- **Shipped:** `16c881833` (M1+M1.5 MCP gateway), `493db0c3b` (M2.a-c persona schemas + seed), `f07eae3c0` (M3.b-d tick loop), `eb8fac23e` (tool_use_id pairing + audit), `5a5e24f58` (docker searxng fix). Plan at [`docs/plans/mana-mcp-and-personas.md`](../plans/mana-mcp-and-personas.md). Memory: [`project_mana_mcp_personas.md`](.claude/projects/-Users-till-Documents-Code-managarten/memory/project_mana_mcp_personas.md).
- **Why it's here:** ~2600 lines of service code, 14 automated tests passed (type-check × 4, svelte-check, AES round-trip, HMAC 3-way parity, tool-registry integrity, seed dry-run, boot smokes × 2, Playwright config parse, drizzle SQL generate, vitest 21/21), but **none of it has run against a live Postgres + mana-auth + Anthropic**. Unit tests are blind to: real JWT issuance + SSO cookie flow, mana-sync wire-format mismatches, Dexie-table-name case drift, Better-Auth org-list response shape, Claude Agent SDK streaming edge-cases, encryption MK unwrap through the real vault endpoint, ZK-user rejection path.
- **Steps:**
1. `pnpm dev:mana:all` — brings up Postgres + Redis + MinIO + searxng + all dev servers.

View file

@ -24,7 +24,7 @@
11. [Memory & Todos](#11-memory--todos)
12. [Model-Routing](#12-model-routing)
13. [Bemerkenswerte Clever Tricks](#13-bemerkenswerte-clever-tricks)
14. [Relevanz für das Mana-Monorepo](#14-relevanz-für-das-mana-monorepo)
14. [Relevanz für das Mana-Monorepo](#14-relevanz-für-das-managarten)
15. [Quellen](#15-quellen)
---

View file

@ -422,7 +422,7 @@ Erst-Deploy von Schritt 1 + 2 auf dem Produktions-Mac-Mini. Alles, was von der S
docker exec mana-research bun run db:push
```
Ergebnis: 5 Tabellen (`async_jobs`, `eval_results`, `eval_runs`, `provider_configs`, `provider_stats`).
- **`GOOGLE_GENAI_API_KEY` fehlte in `.env`** — lokalen Key aus `.env.secrets` nach `/Users/mana/projects/mana-monorepo/.env` übertragen. Backup: `.env.bak.pre-gemini-deep-research`.
- **`GOOGLE_GENAI_API_KEY` fehlte in `.env`** — lokalen Key aus `.env.secrets` nach `/Users/mana/projects/managarten/.env` übertragen. Backup: `.env.bak.pre-gemini-deep-research`.
- **Redis-NOAUTH-Spam**: mana-research hatte `REDIS_URL: redis://redis:6379` ohne Passwort-Credentials, Redis läuft aber mit `--requirepass`. Cache degradierte graceful, aber Log-Noise. Fix: commit `4867300d0``REDIS_URL: redis://:${REDIS_PASSWORD:-redis123}@redis:6379`.
- **Smoke-Test**: Submit über `POST /api/v1/internal/research/async` (Standard-Tier, 300 credits, Test-User ohne Wallet-Eintrag) → HTTP 500 in mana-credits (`credits.reserve failed: 404 Not Found`). **Erwartetes Ergebnis** — beweist den Chain `X-Service-Key → dispatch → googleGenai apiKey → credits.reserve` bis zum mana-credits-HTTP-Call. Kein Fehler in unserem neuen Code.

View file

@ -182,7 +182,7 @@ The wrapper code already supports a `photon-self` provider — we just need to s
```bash
ssh mana-server
nano ~/projects/mana-monorepo/.env.macmini
nano ~/projects/managarten/.env.macmini
```
Add at the bottom:
@ -202,7 +202,7 @@ GEOCODING_PROVIDERS=photon-self,photon
### 3.2 Recreate mana-geocoding container
```bash
cd ~/projects/mana-monorepo
cd ~/projects/managarten
docker compose -f docker-compose.macmini.yml --env-file .env.macmini up -d mana-geocoding
```
@ -241,7 +241,7 @@ Watch for:
### 4.1 Remove the Pelias stack from the Mac mini
```bash
cd ~/projects/mana-monorepo/services/mana-geocoding/pelias
cd ~/projects/managarten/services/mana-geocoding/pelias
docker compose down -v
# `-v` deletes the volumes too — frees ~5 GB disk
```