SPB Git forge

spb/ai-atlas

Public
41commits 1branches 0releases
4.6 MBsize
maindefault branch
12 days agolast push
HTML 77.2% TypeScript 10.5% Python 9.6% JavaScript 2.5%
6.7 KB · 182 lines json
Raw Blame History
1{2  "app": "ai-atlas",3  "label": "AI Atlas — the global intelligence layer for artificial intelligence",4  "domain": "www.ai-atlas.co",5  "port": 8320,6  "health_path": "/api/v1/health",7  "dir": "~/apps/ai-atlas",8  "extra_paths": [],9  "sync_excludes": [10    ".venv/",11    "__pycache__/",12    ".pytest_cache/",13    ".ruff_cache/",14    "*.egg-info/",15    ".git/",16    ".env",17    ".env.*",18    "!.env.example",19    "node_modules/",20    "apps/web/.next/",21    "apps/web/next-env.d.ts",22    "*.tsbuildinfo",23    "apps/web/qa/screens/",24    "apps/web/AGENTS.md",25    "apps/web/CLAUDE.md",26    "/data/",27    "/tmp/",28    "logs/",29    ".DS_Store",30    ".claude/",31    "deploy/.admin-token",32    "deploy/.llm-key",33    "deploy/rendered/",34    "tests/fixtures/",35    "apps/web/.next-*/",36    "apps/web/qa/screens/d1/",37    "apps/web/qa/screens/d2/",38    "apps/web/qa/screens/d3/",39    "apps/web/qa/screens/shell/"40  ],41  "requires": {42    "runtimes": [43      "pm2",44      "node",45      "pnpm",46      "uv",47      "uv-python@3.12"48    ],49    "ram_gb": 8,50    "ports": [51      8320,52      832153    ]54  },55  "ram_mb_observed": 3000,56  "size_mb": 60,57  "placement": {58    "pin": "M2M32c",59    "prefer": null,60    "avoid": [61      "M3U96b",62      "M1M32"63    ],64    "reason": "Mac Studio M2 12 c / 32 Go dédié à AI Atlas (aucune autre app) ; Postgres 17 + pgvector + Redis Homebrew installés le 2026-09-11, raccordé au tunnel wg1 (10.67.0.20)"65  },66  "processes": [67    {68      "name": "ai-atlas-api",69      "manager": "pm2",70      "script": "{{HOME}}/apps/ai-atlas/.venv/bin/python",71      "args": [72        "-m",73        "uvicorn",74        "aiatlas.api.main:app",75        "--host",76        "127.0.0.1",77        "--port",78        "8321",79        "--no-access-log",80        "--proxy-headers",81        "--timeout-keep-alive",82        "75",83        "--workers",84        "2"85      ],86      "interpreter": null,87      "cwd": "{{HOME}}/apps/ai-atlas",88      "env": {89        "APP_ENV": "production",90        "AIA_SITE_URL": "https://www.ai-atlas.co",91        "DATABASE_URL": "postgresql+asyncpg://aiatlas:aiatlas@127.0.0.1:5432/aiatlas",92        "REDIS_URL": "redis://127.0.0.1:6379/5",93        "AIA_DATA_DIR": "{{HOME}}/ai-atlas-data",94        "AIA_API_HOST": "127.0.0.1",95        "AIA_API_PORT": "8321",96        "AIA_ADMIN_TOKEN": "{{ADMIN_TOKEN}}",97        "AIA_LLM_BASE_URL": "https://www.llm-api.io/v1",98        "AIA_LLM_API_KEY": "{{LLM_KEY}}",99        "AIA_LOG_JSON": "1",100        "PYTHONUNBUFFERED": "1"101      },102      "cron_restart": null,103      "autorestart": true,104      "max_memory_restart": "3G"105    },106    {107      "name": "ai-atlas-scheduler",108      "manager": "pm2",109      "script": "{{HOME}}/apps/ai-atlas/.venv/bin/aia",110      "args": [111        "schedule"112      ],113      "interpreter": null,114      "cwd": "{{HOME}}/apps/ai-atlas",115      "env": {116        "APP_ENV": "production",117        "AIA_SITE_URL": "https://www.ai-atlas.co",118        "DATABASE_URL": "postgresql+asyncpg://aiatlas:aiatlas@127.0.0.1:5432/aiatlas",119        "REDIS_URL": "redis://127.0.0.1:6379/5",120        "AIA_DATA_DIR": "{{HOME}}/ai-atlas-data",121        "AIA_ADMIN_TOKEN": "{{ADMIN_TOKEN}}",122        "AIA_LLM_BASE_URL": "https://www.llm-api.io/v1",123        "AIA_LLM_API_KEY": "{{LLM_KEY}}",124        "AIA_WORKER_CONCURRENCY": "1",125        "AIA_LOG_JSON": "1",126        "PATH": "/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:/usr/bin:/bin",127        "PYTHONUNBUFFERED": "1"128      },129      "cron_restart": null,130      "autorestart": true,131      "max_memory_restart": "6G"132    },133    {134      "name": "ai-atlas-web",135      "manager": "pm2",136      "script": "/opt/homebrew/bin/node",137      "args": [138        "node_modules/next/dist/bin/next",139        "start",140        "-p",141        "8320",142        "-H",143        "0.0.0.0"144      ],145      "interpreter": null,146      "cwd": "{{HOME}}/apps/ai-atlas/apps/web",147      "env": {148        "NODE_ENV": "production",149        "API_URL": "http://127.0.0.1:8321",150        "NEXT_PUBLIC_SITE_URL": "https://www.ai-atlas.co",151        "AIA_ADMIN_TOKEN": "{{ADMIN_TOKEN}}",152        "NEXT_TELEMETRY_DISABLED": "1"153      },154      "cron_restart": null,155      "autorestart": true,156      "max_memory_restart": "2G"157    }158  ],159  "ngrok": null,160  "launchd": [],161  "env_overrides": {},162  "hooks": {163    "post_sync": [164      "set -o pipefail; mkdir -p $HOME/ai-atlas-data/{raw,text,logs,backups,cache,seed} && echo '  data dirs ok'",165      "set -o pipefail; export PATH=\"$HOME/.local/bin:/opt/homebrew/bin:$PATH\"; (test -x .venv/bin/python || uv venv --python 3.12 .venv) && uv pip install -q --python .venv/bin/python -e . && echo '  python deps ok'",166      "set -o pipefail; export PATH=\"/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:$PATH\"; export DATABASE_URL=postgresql+asyncpg://aiatlas:aiatlas@127.0.0.1:5432/aiatlas AIA_DATA_DIR=$HOME/ai-atlas-data AIA_LOG_JSON=0; .venv/bin/aia migrate 2>&1 | tail -1 && .venv/bin/aia seed 2>&1 | tail -1 && echo '  migrate + seed ok'",167      "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; pnpm install --frozen-lockfile --silent && echo '  web deps ok'",168      "set -o pipefail; export PATH=\"/opt/homebrew/bin:$PATH\"; cd apps/web && API_URL=http://127.0.0.1:8321 NEXT_PUBLIC_SITE_URL=https://www.ai-atlas.co NEXT_TELEMETRY_DISABLED=1 pnpm build 2>&1 | tail -3 && echo '  web build ok'"169    ],170    "post_start": []171  },172  "notes": "v0.1.0 (2026-09-11) : Next 16 :8320 (rewrites /api/v1/* → FastAPI 127.0.0.1:8321, 2 workers uvicorn), scheduler APScheduler + worker de jobs (connecteurs adaptatifs, extraction LLM via llm-api.io, embeddings pgvector, stats/qualité horaires, backup pg_dump 04:40). Postgres 17 + pgvector + Redis Homebrew locaux ; données hors repo ~/ai-atlas-data (archive brute content-addressed, texte, backups, logs). Secrets : AIA_ADMIN_TOKEN (laptop deploy/.admin-token) et AIA_LLM_API_KEY (laptop deploy/.llm-key, clé llm-api.io « ai-atlas »). Après le premier deploy : bash deploy/first-run.sh sur le nœud (corpus initial). v1.1.0 (2026-09-12) : canonical upgrade — ontologie (familles/artefacts/variantes/licences/openness 2.0), migration 0003, aia canonicalize (nightly 03:30 + light pass 6 h via scheduler), API 1.1 (frontier, pulse, pareto, families, deployments, cost, find-a-model, run-locally, open, time-machine, leaderboards groupés, matrix, claims, admin quality/entity-resolution/extractions/quarantine/audit), web terminal (brand atlas-plate, ⌘K, evidence drawer, densité, watchlist, 20+ pages). Après ce deploy : `aia canonicalize --apply` une fois à la main (voir docs/DEPLOY.md).",173  "tunnel": {174    "domain": "www.ai-atlas.co",175    "gateway": "BHS64",176    "redirects": [177      "ai-atlas.co"178    ],179    "note": "DNS GoDaddy A www + A @ → 51.161.112.61 posés par l'utilisateur le 2026-09-11 (vérifiés par dig)."180  }181}182