Python 64.6%
TypeScript 33.7%
CSS 0.8%
1{2 "app": "uqo-chat",3 "label": "UQO-Chat — tuteur IA IMM1003 · IMM1033",4 "domain": "www.uqo-chat.app",5 "port": 8190,6 "health_path": "/api/v1/ready",7 "dir": "~/apps/uqo-chat",8 "extra_paths": [],9 "sync_excludes": [10 ".venv/", "venv/", "data/", "__pycache__/", ".pytest_cache/", ".ruff_cache/", ".mypy_cache/",11 "*.egg-info/", ".git/", ".env", "frontend/node_modules/", "frontend/dev-dist/", "content/"12 ],13 "requires": {14 "runtimes": ["pm2", "ngrok", "uv-python@3.12", "uv"],15 "ram_gb": 3,16 "ports": [8190, 8191]17 },18 "ram_mb_observed": 900,19 "size_mb": 12,20 "placement": {21 "pin": null,22 "prefer": "M4M64a",23 "avoid": ["M3U96b", "M1M32"],24 "reason": "API + sandbox Python (sandbox-exec) ; M3U96b réservé hfmarketdata, M1M32 passerelle"25 },26 "processes": [27 {28 "name": "uqo-chat-sandbox",29 "manager": "pm2",30 "script": "{{HOME}}/apps/uqo-chat/sandbox-runner/.venv/bin/python",31 "args": ["-m", "uvicorn", "server:app", "--host", "127.0.0.1", "--port", "8191", "--no-access-log"],32 "interpreter": null,33 "cwd": "{{HOME}}/apps/uqo-chat/sandbox-runner",34 "env": { "SANDBOX_MAX_PARALLEL": "4", "SANDBOX_TOKEN": "{{SANDBOX_TOKEN}}", "PYTHONUNBUFFERED": "1" },35 "cron_restart": null,36 "autorestart": true,37 "max_memory_restart": "2G"38 },39 {40 "name": "uqo-chat-api",41 "manager": "pm2",42 "script": "{{HOME}}/apps/uqo-chat/backend/.venv/bin/python",43 "args": ["-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8190", "--no-access-log", "--timeout-keep-alive", "75"],44 "interpreter": null,45 "cwd": "{{HOME}}/apps/uqo-chat/backend",46 "env": {47 "APP_ENV": "production",48 "APP_URL": "https://www.uqo-chat.app",49 "CORS_ORIGINS": "https://www.uqo-chat.app",50 "PORT": "8190",51 "DATA_DIR": "{{HOME}}/apps/uqo-chat/data",52 "FRONTEND_DIST": "{{HOME}}/apps/uqo-chat/frontend/dist",53 "SANDBOX_URL": "http://127.0.0.1:8191",54 "SANDBOX_TOKEN": "{{SANDBOX_TOKEN}}",55 "LOG_LEVEL": "INFO",56 "PYTHONUNBUFFERED": "1"57 },58 "cron_restart": null,59 "autorestart": true,60 "max_memory_restart": "3G"61 }62 ],63 "ngrok": { "name": "uqo-chat-ngrok", "url": "www.uqo-chat.app", "port": 8190 },64 "launchd": [],65 "env_overrides": {},66 "hooks": {67 "post_sync": [68 "export PATH=\"$HOME/.local/bin:/opt/homebrew/bin:$PATH\"; cd backend && (test -x .venv/bin/python || uv venv --python 3.12 .venv) && uv pip install -q --python .venv/bin/python -e . && echo ' backend deps ok'",69 "export PATH=\"$HOME/.local/bin:/opt/homebrew/bin:$PATH\"; cd sandbox-runner && (test -x .venv/bin/python || uv venv --python 3.12 .venv) && uv pip install -q --python .venv/bin/python -r requirements.txt && echo ' sandbox deps ok'",70 "mkdir -p data/files && echo ' data ok'"71 ],72 "post_start": []73 },74 "ka_repo": false,75 "source_node": null,76 "rebuild": false77}78