SPB Git

spb/akos

Public
3.2 KB · 36 lines json
1{2  "app": "akos",3  "label": "AKOS — API Knowledge Operating System (akos.spboucher.ai)",4  "domain": "akos.spboucher.ai",5  "port": 8520,6  "health_path": "/api/v1/health",7  "dir": "~/apps/akos",8  "extra_paths": [],9  "sync_excludes": [".git/", ".DS_Store", ".venv/", "web/node_modules/", "web/dist/", "data/", "logs/", "backups/", ".env", "__pycache__/", ".pytest_cache/", "tests/e2e/node_modules/"],10  "requires": { "runtimes": ["uv", "node", "pnpm", "pm2", "postgresql@17"], "ram_gb": 3, "ports": [8520, 8521] },11  "ram_mb_observed": 400,12  "size_mb": 15,13  "placement": { "pin": "M4M64c", "prefer": "M4M64c", "avoid": ["M1M32"], "reason": "PostgreSQL 17 + pgvector installés et initialisés sur M4M64c (DB akos + akos_test, rôle akos, localhost) ; sandbox-exec vérifié ; wg1 10.67.0.33 ; nœud peu chargé (chat + note)" },14  "processes": [15    { "name": "akos-web",    "manager": "pm2", "script": "{{HOME}}/apps/akos/.venv/bin/python", "args": ["-m", "akos", "web"],    "interpreter": null, "cwd": "{{HOME}}/apps/akos", "env": {"AKOS_ROOT": "{{HOME}}/apps/akos"}, "cron_restart": null, "autorestart": true, "max_memory_restart": "1G" },16    { "name": "akos-worker", "manager": "pm2", "script": "{{HOME}}/apps/akos/.venv/bin/python", "args": ["-m", "akos", "worker"], "interpreter": null, "cwd": "{{HOME}}/apps/akos", "env": {"AKOS_ROOT": "{{HOME}}/apps/akos"}, "cron_restart": null, "autorestart": true, "max_memory_restart": "2G" },17    { "name": "akos-proxy",  "manager": "pm2", "script": "{{HOME}}/apps/akos/.venv/bin/python", "args": ["-m", "akos", "proxy"],  "interpreter": null, "cwd": "{{HOME}}/apps/akos", "env": {"AKOS_ROOT": "{{HOME}}/apps/akos"}, "cron_restart": null, "autorestart": true, "max_memory_restart": "512M" }18  ],19  "ngrok": null,20  "launchd": [],21  "env_overrides": {},22  "hooks": {23    "post_sync": [24      "export PATH=\"/opt/homebrew/bin:$HOME/.local/bin:$PATH\"; test -f .env || { echo 'ERREUR: .env absent (secrets) — copier ~/Desktop/Cluster/secrets/akos/.env'; exit 1; }; chmod 600 .env",25      "export PATH=\"/opt/homebrew/bin:$HOME/.local/bin:$PATH\"; uv sync --frozen 2>&1 | tail -1 && echo '  python deps ok'",26      "export PATH=\"/opt/homebrew/bin:$PATH\"; cd web && pnpm install --frozen-lockfile --silent && pnpm build 2>&1 | tail -2 && echo '  web build ok'",27      "export PATH=\"/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:$PATH\"; .venv/bin/python -m akos migrate && echo '  migrations ok'",28      "mkdir -p data/artifacts logs ~/backups/akos && chmod 700 data && echo '  data ok'"29    ],30    "post_start": []31  },32  "ka_repo": false,33  "tunnel": { "domain": "akos.spboucher.ai", "gateway": "BHS64", "note": "DNS GoDaddy A akos.spboucher.ai → 51.161.112.61 vérifié le 2026-11-01 ; route Caddy posée par mld deploy ; akos-web écoute 127.0.0.1 + wg1 seulement" },34  "notes": "FastAPI (uv venv .venv, Python 3.13) + worker + proxy d'égress (127.0.0.1:8521) + Postgres 17 local (DB akos, rôle akos). Secrets uniquement dans ~/apps/akos/.env (600) ; copie ~/Desktop/Cluster/secrets/akos/.env. Vault = trousseau macOS (service akos). Backups nocturnes (worker 03:40 UTC) → ~/backups/akos + M3U96b:~/backups/akos. Tests : make test (offline) / make test-node (sandbox + backup)."35}36
Files · main
Menu

Theme