HTML 77.2%
TypeScript 10.5%
Python 9.6%
JavaScript 2.5%
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