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

@ -21,7 +21,7 @@
# Compose project name (pinned, do not change) # Compose project name (pinned, do not change)
# ============================================ # ============================================
# All Mac Mini containers were originally created under this project # All Mac Mini containers were originally created under this project
# name, which mismatches the current directory name (mana-monorepo). # name, which mismatches the current directory name (managarten).
# Pinning the project name here means anyone running 'docker compose ...' # Pinning the project name here means anyone running 'docker compose ...'
# from the repo root automatically lands in the same project as the # from the repo root automatically lands in the same project as the
# already-running containers, instead of silently spawning a duplicate # already-running containers, instead of silently spawning a duplicate

View file

@ -55,7 +55,7 @@ concurrency:
cancel-in-progress: false # Don't cancel in-progress deploys cancel-in-progress: false # Don't cancel in-progress deploys
env: env:
PROJECT_DIR: /Users/mana/projects/mana-monorepo PROJECT_DIR: /Users/mana/projects/managarten
COMPOSE_FILE: docker-compose.macmini.yml COMPOSE_FILE: docker-compose.macmini.yml
ENV_FILE: .env.macmini ENV_FILE: .env.macmini
DOCKER_BUILDKIT: 1 DOCKER_BUILDKIT: 1

View file

@ -17,7 +17,7 @@ jobs:
steps: steps:
- name: Mirror to Forgejo via SSH - name: Mirror to Forgejo via SSH
run: | run: |
cd /Users/mana/projects/mana-monorepo cd /Users/mana/projects/managarten
# Stash any local changes so pull never fails # Stash any local changes so pull never fails
git stash --quiet 2>/dev/null || true git stash --quiet 2>/dev/null || true
@ -25,5 +25,5 @@ jobs:
# Push to Forgejo via localhost SSH (runner is on the Mac Mini) # Push to Forgejo via localhost SSH (runner is on the Mac Mini)
GIT_SSH_COMMAND='ssh -p 2222 -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no' \ GIT_SSH_COMMAND='ssh -p 2222 -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no' \
git push ssh://git@localhost:2222/till/mana-monorepo.git main 2>&1 git push ssh://git@localhost:2222/till/managarten.git main 2>&1
echo "Mirrored to Forgejo" echo "Mirrored to Forgejo"

View file

@ -1,6 +1,6 @@
# Mana Monorepo # Managarten
Monorepo containing all Mana projects — a self-hosted multi-app ecosystem with shared packages and unified tooling. Der Garten der mana-Apps — ein selbst-gehostetes Multi-App-Ökosystem unter `mana.how` mit geteilten Packages und einheitlichem Tooling. Teil der mana-e.V.-Plattform.
## Projects ## Projects
@ -62,7 +62,7 @@ See [CLAUDE.md](./CLAUDE.md) for comprehensive development documentation.
## Architecture ## Architecture
``` ```
mana-monorepo/ managarten/
├── apps/ # Product applications ├── apps/ # Product applications
├── services/ # Microservices (auth, search, LLM, bots) ├── services/ # Microservices (auth, search, LLM, bots)
├── packages/ # Shared packages ├── packages/ # Shared packages

View file

@ -1,6 +1,6 @@
# Troubleshooting Guide # Troubleshooting Guide
Common issues and solutions for the mana-monorepo. Common issues and solutions for the managarten.
## Table of Contents ## Table of Contents
@ -409,7 +409,7 @@ docker run --rm --entrypoint cat test /app/dist/ai/ai.service.js
### Related Issues ### Related Issues
- [Commit d69cc607](https://github.com/Memo-2023/mana-monorepo/commit/d69cc607) - Fixed type-only ConfigService import in AiService - [Commit d69cc607](https://github.com/Memo-2023/managarten/commit/d69cc607) - Fixed type-only ConfigService import in AiService
- TypeScript `import type` vs `import {}` - both erase at compile time - TypeScript `import type` vs `import {}` - both erase at compile time
- Docker layer caching can hide fixes if source wasn't properly copied - Docker layer caching can hide fixes if source wasn't properly copied
@ -425,7 +425,7 @@ docker run --rm --entrypoint cat test /app/dist/ai/ai.service.js
If you encounter an issue not covered here: If you encounter an issue not covered here:
1. Check the [GitHub Issues](https://github.com/Memo-2023/mana-monorepo/issues) 1. Check the [GitHub Issues](https://github.com/Memo-2023/managarten/issues)
2. Review recent commits that may have introduced the issue 2. Review recent commits that may have introduced the issue
3. Run `pnpm clean` and `pnpm install` to reset 3. Run `pnpm clean` and `pnpm install` to reset
4. Create a new issue with full error logs 4. Create a new issue with full error logs

View file

@ -16,10 +16,10 @@ export default defineConfig({
replacesTitle: false, replacesTitle: false,
}, },
social: { social: {
github: 'https://github.com/mana/mana-monorepo', github: 'https://github.com/mana/managarten',
}, },
editLink: { editLink: {
baseUrl: 'https://github.com/mana/mana-monorepo/edit/main/apps/docs/', baseUrl: 'https://github.com/mana/managarten/edit/main/apps/docs/',
}, },
customCss: ['./src/styles/custom.css'], customCss: ['./src/styles/custom.css'],
sidebar: [ sidebar: [

View file

@ -16,7 +16,7 @@ Mana encrypts user-typed content with **AES-GCM-256** before it touches IndexedD
## What's encrypted ## What's encrypted
**27 tables** ship with at-rest encryption enabled. The full list is in [`DATA_LAYER_AUDIT.md`](https://github.com/mana-how/mana-monorepo/blob/main/apps/mana/apps/web/src/lib/data/DATA_LAYER_AUDIT.md), but the highlights: **27 tables** ship with at-rest encryption enabled. The full list is in [`DATA_LAYER_AUDIT.md`](https://github.com/mana-how/managarten/blob/main/apps/mana/apps/web/src/lib/data/DATA_LAYER_AUDIT.md), but the highlights:
| Module | Fields | | Module | Fields |
|--------|--------| |--------|--------|
@ -238,7 +238,7 @@ the full standard / ZK guarantees.
## Implementation references ## Implementation references
For the architectural deep dive, code locations, and the complete rollout history (Phases 19 + the backlog sweep), see [`DATA_LAYER_AUDIT.md`](https://github.com/mana-how/mana-monorepo/blob/main/apps/mana/apps/web/src/lib/data/DATA_LAYER_AUDIT.md). For the architectural deep dive, code locations, and the complete rollout history (Phases 19 + the backlog sweep), see [`DATA_LAYER_AUDIT.md`](https://github.com/mana-how/managarten/blob/main/apps/mana/apps/web/src/lib/data/DATA_LAYER_AUDIT.md).
Key files: Key files:

View file

@ -37,7 +37,7 @@ Requires `cloudflared` installed: `brew install cloudflare/cloudflare/cloudflare
## Directory Structure ## Directory Structure
``` ```
~/projects/mana-monorepo/ ~/projects/managarten/
├── docker-compose.macmini.yml # Production compose file ├── docker-compose.macmini.yml # Production compose file
├── .env.production # Production environment ├── .env.production # Production environment
├── scripts/mac-mini/ # Server management scripts ├── scripts/mac-mini/ # Server management scripts
@ -53,7 +53,7 @@ Requires `cloudflared` installed: `brew install cloudflare/cloudflare/cloudflare
```bash ```bash
ssh mana-server ssh mana-server
cd ~/projects/mana-monorepo cd ~/projects/managarten
./scripts/mac-mini/status.sh ./scripts/mac-mini/status.sh
``` ```
@ -71,7 +71,7 @@ chat-backend running (healthy)
```bash ```bash
ssh mana-server ssh mana-server
cd ~/projects/mana-monorepo cd ~/projects/managarten
./scripts/mac-mini/deploy.sh ./scripts/mac-mini/deploy.sh
``` ```

View file

@ -92,7 +92,7 @@ pnpm deploy:docs
ssh mana-server ssh mana-server
# Pull latest changes # Pull latest changes
cd ~/projects/mana-monorepo cd ~/projects/managarten
git pull git pull
# Restart services # Restart services
@ -135,7 +135,7 @@ npx wrangler pages deployment tail <deployment-id> --project-name=chat-landing
```bash ```bash
ssh mana-server ssh mana-server
cd ~/projects/mana-monorepo cd ~/projects/managarten
# Revert to previous commit # Revert to previous commit
git checkout HEAD~1 git checkout HEAD~1

View file

@ -23,8 +23,8 @@ Run your own Mana instance using Docker Compose.
1. **Clone the repository** 1. **Clone the repository**
```bash ```bash
git clone https://github.com/mana/mana-monorepo.git git clone https://github.com/mana/managarten.git
cd mana-monorepo cd managarten
``` ```
2. **Create environment file** 2. **Create environment file**

View file

@ -24,8 +24,8 @@ Before you begin, ensure you have:
1. **Clone the repository** 1. **Clone the repository**
```bash ```bash
git clone https://github.com/mana/mana-monorepo.git git clone https://github.com/mana/managarten.git
cd mana-monorepo cd managarten
``` ```
2. **Install dependencies** 2. **Install dependencies**

View file

@ -12,7 +12,7 @@ hero:
icon: right-arrow icon: right-arrow
variant: primary variant: primary
- text: View on GitHub - text: View on GitHub
link: https://github.com/mana/mana-monorepo link: https://github.com/mana/managarten
icon: external icon: external
--- ---
@ -21,8 +21,8 @@ import { Card, CardGrid } from '@astrojs/starlight/components';
## Quick Start ## Quick Start
```bash ```bash
git clone https://github.com/mana/mana-monorepo.git git clone https://github.com/mana/managarten.git
cd mana-monorepo cd managarten
pnpm install pnpm install
pnpm docker:up pnpm docker:up
pnpm dev:chat:full pnpm dev:chat:full

View file

@ -484,7 +484,7 @@ Nach Analyse aller Optionen ist die Empfehlung:
```bash ```bash
# Auf dem Server # Auf dem Server
ssh mana-server ssh mana-server
cd ~/projects/mana-monorepo cd ~/projects/managarten
git pull git pull
./scripts/mac-mini/deploy.sh ./scripts/mac-mini/deploy.sh
``` ```

View file

@ -344,7 +344,7 @@ services:
start_period: 15s start_period: 15s
# mana-research moved to GPU-Box on 2026-05-07 (Phase 2g). Source-of-truth # mana-research moved to GPU-Box on 2026-05-07 (Phase 2g). Source-of-truth
# is now mana-monorepo/infrastructure/docker-compose.gpu-box.yml. DNS for # is now managarten/infrastructure/docker-compose.gpu-box.yml. DNS for
# research.mana.how points at the mana-gpu-server tunnel; cross-LAN to # research.mana.how points at the mana-gpu-server tunnel; cross-LAN to
# mana-credits + mana-search + postgres + redis on 192.168.178.131. # mana-credits + mana-search + postgres + redis on 192.168.178.131.

View file

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

View file

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

View file

@ -1,6 +1,6 @@
# Docker Guide # Docker Guide
Comprehensive guide for working with Docker in the mana-monorepo. Comprehensive guide for working with Docker in the managarten.
## Table of Contents ## 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:** **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` 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, (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 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 ### 6. Testen ob File-Mounts funktionieren
```bash ```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". Sollte YAML-Inhalt zeigen, NICHT "Is a directory".
@ -58,7 +58,7 @@ Sollte YAML-Inhalt zeigen, NICHT "Is a directory".
### 7. Alle Container starten ### 7. Alle Container starten
```bash ```bash
cd ~/projects/mana-monorepo cd ~/projects/managarten
docker compose -f docker-compose.macmini.yml up -d --no-build 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:** **One-time setup:**
```bash ```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 pnpm setup:secrets
# Then propagate into per-app .env files # Then propagate into per-app .env files

View file

@ -120,7 +120,7 @@ Host mana-server-remote
### Projekt-Verzeichnis ### Projekt-Verzeichnis
```bash ```bash
cd ~/projects/mana-monorepo cd ~/projects/managarten
``` ```
## CI/CD ## 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` - **CD Workflow:** `.github/workflows/cd-macmini.yml`
- **Mirror Workflow:** `.github/workflows/mirror-to-forgejo.yml` (GitHub → Forgejo Sync) - **Mirror Workflow:** `.github/workflows/mirror-to-forgejo.yml` (GitHub → Forgejo Sync)
- **Runner:** `mac-mini` (self-hosted, macOS, ARM64, LaunchAgent) - **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) ### 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 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: `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:-}` - 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>`) - 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 PATH=/Applications/Docker.app/Contents/Resources/bin:$PATH
# Beispiel: Remote docker compose # 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) ### Container existiert nicht (wurde nie erstellt)

View file

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

View file

@ -68,7 +68,7 @@ const defaultSettings: Settings = {
pnpm --filter @mana/llm-playground build pnpm --filter @mana/llm-playground build
# Auf Mac Mini deployen # 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 ## 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 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 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 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 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 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) | | 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-gen (alpine:3.20) — Generator-Loop, queryt VM lokal
│ ├── mana-mon-status-nginx (nginx:alpine, :8090) — serviert HTML+JSON │ ├── mana-mon-status-nginx (nginx:alpine, :8090) — serviert HTML+JSON
│ └── volume: status-output (geteilt zwischen den beiden) │ └── 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`) └── systemd-timer: mana-source-pull.timer (stündlich `git pull --ff-only`)
└── Phase 2c — Metrics-Stack └── Phase 2c — Metrics-Stack
├── mana-mon-victoria (VM v1.99.0, :9090) — scrapt Mini-Services via 192.168.178.131:<port> ├── 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** | | 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 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`) | | 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` | | Mac-Mini-Tunnel-UUID | `1435166a-0e3f-4222-8de6-744f32cea5c9` |
| GPU-Box-Tunnel-UUID | `83454e8e-d7f5-4954-b2cb-0307c2dba7a6` (Token-managed im Cloudflare-Dashboard) | | 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) ### Native Prozesse Mini (kein Docker, bleiben unverändert)
`who-server` (PM2), `who-web` (LaunchAgent), `cloudflared` (Mini-Tunnel), `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 ## 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 3. **`COMPOSE_PROJECT_NAME=manacore-monorepo` pinned.** The Mac Mini's
existing containers were created under the old project name existing containers were created under the old project name
(`manacore-monorepo`) but the working tree directory is (`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 repo root spawns a *second* project, creating duplicate
container/volume conflicts (the 2026-04-07 recovery had to pass container/volume conflicts (the 2026-04-07 recovery had to pass
`-p manacore-monorepo` manually). The pin now lives in: `-p manacore-monorepo` manually). The pin now lives in:

View file

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

View file

@ -1,6 +1,6 @@
# Refactoring Audit — April 2026 # 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 öffentlichen Launch. Während die App noch nicht live ist, sind größere
strukturelle Änderungen weiterhin möglich, ohne User-Daten zu gefährden. 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 ```bash
ssh mana-server ssh mana-server
cd ~/projects/mana-monorepo cd ~/projects/managarten
git pull git pull
./scripts/mac-mini/deploy.sh ./scripts/mac-mini/deploy.sh
``` ```

View file

@ -58,7 +58,7 @@ Each entry carries:
### MCP gateway + Persona-runner — end-to-end live smoke ### MCP gateway + Persona-runner — end-to-end live smoke
- **Priority:** 🟠 important - **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. - **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:** - **Steps:**
1. `pnpm dev:mana:all` — brings up Postgres + Redis + MinIO + searxng + all dev servers. 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) 11. [Memory & Todos](#11-memory--todos)
12. [Model-Routing](#12-model-routing) 12. [Model-Routing](#12-model-routing)
13. [Bemerkenswerte Clever Tricks](#13-bemerkenswerte-clever-tricks) 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) 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 docker exec mana-research bun run db:push
``` ```
Ergebnis: 5 Tabellen (`async_jobs`, `eval_results`, `eval_runs`, `provider_configs`, `provider_stats`). 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`. - **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. - **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 ```bash
ssh mana-server ssh mana-server
nano ~/projects/mana-monorepo/.env.macmini nano ~/projects/managarten/.env.macmini
``` ```
Add at the bottom: Add at the bottom:
@ -202,7 +202,7 @@ GEOCODING_PROVIDERS=photon-self,photon
### 3.2 Recreate mana-geocoding container ### 3.2 Recreate mana-geocoding container
```bash ```bash
cd ~/projects/mana-monorepo cd ~/projects/managarten
docker compose -f docker-compose.macmini.yml --env-file .env.macmini up -d mana-geocoding 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 ### 4.1 Remove the Pelias stack from the Mac mini
```bash ```bash
cd ~/projects/mana-monorepo/services/mana-geocoding/pelias cd ~/projects/managarten/services/mana-geocoding/pelias
docker compose down -v docker compose down -v
# `-v` deletes the volumes too — frees ~5 GB disk # `-v` deletes the volumes too — frees ~5 GB disk
``` ```

View file

@ -36,7 +36,7 @@ MANA_SERVICE_KEY=
MANA_AI_PRIVATE_KEY_PEM= MANA_AI_PRIVATE_KEY_PEM=
# ─── Redis-Mini Auth (für Cross-LAN-Cache von mana-research, Phase 2g) ─── # ─── Redis-Mini Auth (für Cross-LAN-Cache von mana-research, Phase 2g) ───
# Identisch mit mana-monorepo/.env.macmini REDIS_PASSWORD. # Identisch mit managarten/.env.macmini REDIS_PASSWORD.
REDIS_PASSWORD= REDIS_PASSWORD=
# ─── mana-research (Web-Research-Orchestrator, Phase 2g) ───── # ─── mana-research (Web-Research-Orchestrator, Phase 2g) ─────

View file

@ -39,7 +39,7 @@ auf der Box existierte und unangetastet blieb.
│ ├── grafana/ ← provisioning + dashboards │ ├── grafana/ ← provisioning + dashboards
│ ├── loki/, blackbox/, alertmanager/, alert-notifier/, promtail-gpu/ │ ├── loki/, blackbox/, alertmanager/, alert-notifier/, promtail-gpu/
├── forgejo-data/ ← Forgejo /data bind-mount (rsync von Mini bei Phase 2b) ├── forgejo-data/ ← Forgejo /data bind-mount (rsync von Mini bei Phase 2b)
└── source/ ← Sparse mana-monorepo-clone └── source/ ← Sparse managarten-clone
für status-page-gen + zukünftige Scripts für status-page-gen + zukünftige Scripts
git pull stündlich via systemd timer mana-source-pull.timer git pull stündlich via systemd timer mana-source-pull.timer
``` ```

View file

@ -1,9 +1,9 @@
{ {
"name": "mana-monorepo", "name": "managarten",
"version": "1.0.0", "version": "1.0.0",
"private": true, "private": true,
"type": "module", "type": "module",
"description": "Mana Monorepo containing mana, cards, picture, chat, quotes, and presi", "description": "Managarten — der Garten der mana-Apps. Enthält mana, cards, picture, chat, quotes und presi.",
"scripts": { "scripts": {
"dev": "turbo run dev", "dev": "turbo run dev",
"build": "turbo run build", "build": "turbo run build",

View file

@ -9,7 +9,7 @@ Scripts for managing the Mana production environment on Mac Mini.
ssh mac-mini ssh mac-mini
# 2. Navigate to project # 2. Navigate to project
cd ~/projects/mana-monorepo cd ~/projects/managarten
# 3. Setup auto-start (only needed once) # 3. Setup auto-start (only needed once)
./scripts/mac-mini/setup-autostart.sh ./scripts/mac-mini/setup-autostart.sh
@ -50,8 +50,8 @@ brew install cloudflared git docker
```bash ```bash
mkdir -p ~/projects mkdir -p ~/projects
cd ~/projects cd ~/projects
git clone https://github.com/Memo-2023/mana-monorepo.git git clone https://github.com/Memo-2023/managarten.git
cd mana-monorepo cd managarten
``` ```
### 3. Configure Cloudflare Tunnel ### 3. Configure Cloudflare Tunnel

View file

@ -21,8 +21,8 @@ cd ~/projects
# 4. Repository klonen # 4. Repository klonen
echo "📥 Klone Repository..." echo "📥 Klone Repository..."
git clone https://github.com/Memo-2023/mana-monorepo.git git clone https://github.com/Memo-2023/managarten.git
cd mana-monorepo cd managarten
echo "" echo ""
echo "✅ Basis-Setup abgeschlossen!" echo "✅ Basis-Setup abgeschlossen!"

View file

@ -128,7 +128,7 @@ ${failed_services}
To investigate: To investigate:
ssh mac-mini ssh mac-mini
cd ~/projects/mana-monorepo cd ~/projects/managarten
./scripts/mac-mini/status.sh ./scripts/mac-mini/status.sh
docker logs <container-name>" docker logs <container-name>"

View file

@ -8,7 +8,7 @@
<key>ProgramArguments</key> <key>ProgramArguments</key>
<array> <array>
<string>/bin/bash</string> <string>/bin/bash</string>
<string>/Users/mana/projects/mana-monorepo/scripts/mac-mini/backup-databases.sh</string> <string>/Users/mana/projects/managarten/scripts/mac-mini/backup-databases.sh</string>
</array> </array>
<!-- Run daily at 3:00 AM --> <!-- Run daily at 3:00 AM -->

View file

@ -8,7 +8,7 @@
<key>ProgramArguments</key> <key>ProgramArguments</key>
<array> <array>
<string>/bin/bash</string> <string>/bin/bash</string>
<string>/Users/mana/projects/mana-monorepo/scripts/mac-mini/check-disk-space.sh</string> <string>/Users/mana/projects/managarten/scripts/mac-mini/check-disk-space.sh</string>
</array> </array>
<!-- Run every 15 minutes — frequent enough to catch disk issues early --> <!-- Run every 15 minutes — frequent enough to catch disk issues early -->

View file

@ -7,7 +7,7 @@
<key>ProgramArguments</key> <key>ProgramArguments</key>
<array> <array>
<string>/bin/bash</string> <string>/bin/bash</string>
<string>/Users/mana/projects/mana-monorepo/scripts/mac-mini/startup.sh</string> <string>/Users/mana/projects/managarten/scripts/mac-mini/startup.sh</string>
</array> </array>
<key>RunAtLoad</key> <key>RunAtLoad</key>
<true/> <true/>

View file

@ -8,7 +8,7 @@
<key>ProgramArguments</key> <key>ProgramArguments</key>
<array> <array>
<string>/bin/bash</string> <string>/bin/bash</string>
<string>/Users/mana/projects/mana-monorepo/scripts/mac-mini/ensure-containers-running.sh</string> <string>/Users/mana/projects/managarten/scripts/mac-mini/ensure-containers-running.sh</string>
</array> </array>
<key>StartInterval</key> <key>StartInterval</key>

View file

@ -7,7 +7,7 @@
<key>ProgramArguments</key> <key>ProgramArguments</key>
<array> <array>
<string>/bin/bash</string> <string>/bin/bash</string>
<string>/Users/mana/projects/mana-monorepo/scripts/mac-mini/health-check.sh</string> <string>/Users/mana/projects/managarten/scripts/mac-mini/health-check.sh</string>
</array> </array>
<key>StartInterval</key> <key>StartInterval</key>
<integer>300</integer> <integer>300</integer>

View file

@ -7,10 +7,10 @@
<key>ProgramArguments</key> <key>ProgramArguments</key>
<array> <array>
<string>/opt/homebrew/bin/node</string> <string>/opt/homebrew/bin/node</string>
<string>/Users/mana/projects/mana-monorepo/services/telegram-ollama-bot/dist/main.js</string> <string>/Users/mana/projects/managarten/services/telegram-ollama-bot/dist/main.js</string>
</array> </array>
<key>WorkingDirectory</key> <key>WorkingDirectory</key>
<string>/Users/mana/projects/mana-monorepo/services/telegram-ollama-bot</string> <string>/Users/mana/projects/managarten/services/telegram-ollama-bot</string>
<key>EnvironmentVariables</key> <key>EnvironmentVariables</key>
<dict> <dict>
<key>PATH</key> <key>PATH</key>

View file

@ -8,7 +8,7 @@
<key>ProgramArguments</key> <key>ProgramArguments</key>
<array> <array>
<string>/bin/bash</string> <string>/bin/bash</string>
<string>/Users/mana/projects/mana-monorepo/scripts/mac-mini/weekly-report.sh</string> <string>/Users/mana/projects/managarten/scripts/mac-mini/weekly-report.sh</string>
</array> </array>
<!-- Run every Sunday at 10:00 AM --> <!-- Run every Sunday at 10:00 AM -->

View file

@ -87,7 +87,7 @@ for i in $(seq 1 12); do
sleep 5 sleep 5
done done
cd ~/projects/mana-monorepo cd ~/projects/managarten
docker compose -f docker-compose.macmini.yml up -d 2>&1 | tail -5 | tee -a "$LOG" docker compose -f docker-compose.macmini.yml up -d 2>&1 | tail -5 | tee -a "$LOG"
log "Containers started." log "Containers started."

View file

@ -31,7 +31,7 @@ push_schema() {
echo "Core Services:" echo "Core Services:"
# Plattform-Services bauen ab dem 2026-05-08-Cutover aus dem # Plattform-Services bauen ab dem 2026-05-08-Cutover aus dem
# Schwester-Repo `../mana/`. Auf dem Mac Mini liegt das als # Schwester-Repo `../mana/`. Auf dem Mac Mini liegt das als
# `/Users/mana/projects/mana/`, parallel zu `mana-monorepo`. # `/Users/mana/projects/mana/`, parallel zu `managarten`.
push_schema "mana-auth" "../mana/services/mana-auth" push_schema "mana-auth" "../mana/services/mana-auth"
push_schema "mana-credits" "../mana/services/mana-credits" push_schema "mana-credits" "../mana/services/mana-credits"
push_schema "mana-user" "services/mana-user" push_schema "mana-user" "services/mana-user"

View file

@ -21,7 +21,7 @@
# 4. Create a new tunnel with the same name `mana-server`. Cloudflare # 4. Create a new tunnel with the same name `mana-server`. Cloudflare
# generates a new UUID and writes a new credentials .json # generates a new UUID and writes a new credentials .json
# 5. Patch the new tunnel ID + credentials path into both # 5. Patch the new tunnel ID + credentials path into both
# ~/projects/mana-monorepo/cloudflared-config.yml AND # ~/projects/managarten/cloudflared-config.yml AND
# ~/.cloudflared/config.yml # ~/.cloudflared/config.yml
# 6. For each hostname in the config file, run # 6. For each hostname in the config file, run
# `cloudflared tunnel route dns -f mana-server <hostname>` so the # `cloudflared tunnel route dns -f mana-server <hostname>` so the
@ -52,7 +52,7 @@ set -euo pipefail
CLOUDFLARED=/opt/homebrew/bin/cloudflared CLOUDFLARED=/opt/homebrew/bin/cloudflared
TUNNEL_NAME="mana-server" TUNNEL_NAME="mana-server"
REPO_CONFIG="$HOME/projects/mana-monorepo/cloudflared-config.yml" REPO_CONFIG="$HOME/projects/managarten/cloudflared-config.yml"
CLOUDFLARED_DIR="$HOME/.cloudflared" CLOUDFLARED_DIR="$HOME/.cloudflared"
LOCAL_CONFIG="$CLOUDFLARED_DIR/config.yml" LOCAL_CONFIG="$CLOUDFLARED_DIR/config.yml"
PLIST_FILE="$HOME/Library/LaunchAgents/com.cloudflare.cloudflared.plist" PLIST_FILE="$HOME/Library/LaunchAgents/com.cloudflare.cloudflared.plist"
@ -357,6 +357,6 @@ else
fi fi
echo "" echo ""
log "Next steps:" log "Next steps:"
log " 1. From your dev box: cd ~/projects/mana-monorepo && git diff cloudflared-config.yml" log " 1. From your dev box: cd ~/projects/managarten && git diff cloudflared-config.yml"
log " -> review the tunnel-id change, then commit + push" log " -> review the tunnel-id change, then commit + push"
log " 2. Smoke-test the apps in your browser" log " 2. Smoke-test the apps in your browser"

View file

@ -5,7 +5,7 @@
set -e set -e
TUNNEL_ID="bb0ea86d-8253-4a54-838b-107bb7945be9" TUNNEL_ID="bb0ea86d-8253-4a54-838b-107bb7945be9"
CONFIG_FILE="$HOME/projects/mana-monorepo/cloudflared-config.yml" CONFIG_FILE="$HOME/projects/managarten/cloudflared-config.yml"
CREDENTIALS_FILE="$HOME/.cloudflared/${TUNNEL_ID}.json" CREDENTIALS_FILE="$HOME/.cloudflared/${TUNNEL_ID}.json"
PLIST_FILE="$HOME/Library/LaunchAgents/com.cloudflare.cloudflared.plist" PLIST_FILE="$HOME/Library/LaunchAgents/com.cloudflare.cloudflared.plist"

View file

@ -51,9 +51,9 @@ echo ""
echo "=== 7. Mirror GitHub repo ===" echo "=== 7. Mirror GitHub repo ==="
echo "After login, create a new migration at:" echo "After login, create a new migration at:"
echo " https://git.mana.how/repo/migrate" echo " https://git.mana.how/repo/migrate"
echo " - Clone Address: https://github.com/Memo-2023/mana-monorepo.git" echo " - Clone Address: https://github.com/Memo-2023/managarten.git"
echo " - Mirror: Yes" echo " - Mirror: Yes"
echo " - Repository Name: mana-monorepo" echo " - Repository Name: managarten"
echo "" echo ""
echo "=== Setup complete ===" echo "=== Setup complete ==="

View file

@ -78,7 +78,7 @@ if docker info >/dev/null 2>&1; then
# every running container, and report any compose service whose # every running container, and report any compose service whose
# container_name is not currently up. # container_name is not currently up.
if [ -f "$COMPOSE_FILE" ]; then if [ -f "$COMPOSE_FILE" ]; then
DEFINED=$(docker compose -p "${COMPOSE_PROJECT_NAME:-mana-monorepo}" \ DEFINED=$(docker compose -p "${COMPOSE_PROJECT_NAME:-managarten}" \
-f "$COMPOSE_FILE" config --format json 2>/dev/null \ -f "$COMPOSE_FILE" config --format json 2>/dev/null \
| python3 -c ' | python3 -c '
import sys, json import sys, json

View file

@ -24,7 +24,7 @@ set -e
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
CONFIG_FILE="$REPO_ROOT/cloudflared-config.yml" CONFIG_FILE="$REPO_ROOT/cloudflared-config.yml"
REMOTE_HOST="mana-server" REMOTE_HOST="mana-server"
REMOTE_PATH='~/projects/mana-monorepo/cloudflared-config.yml' REMOTE_PATH='~/projects/managarten/cloudflared-config.yml'
GREEN='\033[0;32m' GREEN='\033[0;32m'
YELLOW='\033[1;33m' YELLOW='\033[1;33m'
@ -50,7 +50,7 @@ echo -e "${YELLOW}1. Pulling latest from origin (in case the local file is stale
echo -e "${YELLOW} warning: local cloudflared-config.yml differs from origin/main${NC}" echo -e "${YELLOW} warning: local cloudflared-config.yml differs from origin/main${NC}"
echo -e "${YELLOW}2. Ensuring repo on the server is up to date...${NC}" echo -e "${YELLOW}2. Ensuring repo on the server is up to date...${NC}"
ssh "$REMOTE_HOST" 'cd ~/projects/mana-monorepo && git pull --quiet' ssh "$REMOTE_HOST" 'cd ~/projects/managarten && git pull --quiet'
echo -e "${YELLOW}3. Validating the config on the server...${NC}" echo -e "${YELLOW}3. Validating the config on the server...${NC}"
if ! ssh "$REMOTE_HOST" "/opt/homebrew/bin/cloudflared tunnel --config $REMOTE_PATH ingress validate"; then if ! ssh "$REMOTE_HOST" "/opt/homebrew/bin/cloudflared tunnel --config $REMOTE_PATH ingress validate"; then

View file

@ -3,7 +3,7 @@
/** /**
* setup-secrets.mjs Pull dev secrets from the Mac Mini into .env.secrets * setup-secrets.mjs Pull dev secrets from the Mac Mini into .env.secrets
* *
* SSHes to mana-server, reads ~/projects/mana-monorepo/.env, and writes * SSHes to mana-server, reads ~/projects/managarten/.env, and writes
* the secret-shaped keys into a local .env.secrets file. Skips keys that * the secret-shaped keys into a local .env.secrets file. Skips keys that
* are already populated locally so re-running is safe. * are already populated locally so re-running is safe.
* *
@ -28,7 +28,7 @@ const ROOT_DIR = join(__dirname, '..');
const TEMPLATE_FILE = join(ROOT_DIR, '.env.secrets.example'); const TEMPLATE_FILE = join(ROOT_DIR, '.env.secrets.example');
const TARGET_FILE = join(ROOT_DIR, '.env.secrets'); const TARGET_FILE = join(ROOT_DIR, '.env.secrets');
const REMOTE_HOST = 'mana-server'; const REMOTE_HOST = 'mana-server';
const REMOTE_ENV_PATH = '~/projects/mana-monorepo/.env'; const REMOTE_ENV_PATH = '~/projects/managarten/.env';
const FORCE = process.argv.includes('--force'); const FORCE = process.argv.includes('--force');

View file

@ -5,7 +5,7 @@
* batch. All gated by `X-Service-Key` (not a user JWT). * batch. All gated by `X-Service-Key` (not a user JWT).
* *
* After the platform/product split, personas live in apps/api * After the platform/product split, personas live in apps/api
* (`mana-monorepo/apps/api`), not in mana-auth. The constructor takes * (`managarten/apps/api`), not in mana-auth. The constructor takes
* the apps/api URL the file name stays the same to keep the * the apps/api URL the file name stays the same to keep the
* callsite diff small (one import path), but the destination changed. * callsite diff small (one import path), but the destination changed.
*/ */

View file

@ -301,7 +301,7 @@ ScrapingBee hat nur **Abo-Pläne ab $49/Monat** — passt nicht zur Pay-per-use-
Kopiere `.env.secrets.example` nach `.env.secrets` (ist gitignored): Kopiere `.env.secrets.example` nach `.env.secrets` (ist gitignored):
```bash ```bash
cd /Users/till/Documents/Code/mana-monorepo cd /Users/till/Documents/Code/managarten
cp .env.secrets.example .env.secrets cp .env.secrets.example .env.secrets
``` ```