# Agent.md This file documents tricks, ongoing deployment best practices, and the API exposure specification for the Odoo deployment on Hugging Face Spaces. --- ## 1. Deployment Configuration ### Target Space - **Profile:** `Leon4gr45` - **Space:** `odoo` - **Full Identifier:** `Leon4gr45/odoo` - **Frontend Port:** `7860` (mandatory for all Hugging Face Spaces) ### Deployment Method - **Docker SDK:** Configured with Python 3.12-slim executing FastAPI via Uvicorn. This provides full flexibility and extreme performance on basic CPU resources. ### HF Token - Configured using environment variable `HF_TOKEN` at execution/deployment time. - Never hardcode the token. Always read it from the environment. - All monitoring and log‑streaming commands rely on `HF_TOKEN`. ### Required Files - `Dockerfile` (standard python config, exposing port 7860) - `README.md` (metadata with `sdk: docker` and `app_port: 7860`) - `.hfignore` (crucial to ignore all non-essential repository directories to keep build time under 10 seconds and avoid large files upload) - `app.py` (FastAPI lightweight backend) - `Agent.md` (this file) --- ## 2. API Exposure and Documentation ### Mandatory Endpoints Every deployment **must** expose: - **`/health`** - Returns HTTP 200 when the app is ready. - Returns `{"status": "pass"}`. - Required for Hugging Face to transition the Space from *starting* → *running*. - **`/api-docs`** - Documents **all** available API endpoints. - Reachable at: `https://Leon4gr45-odoo.hf.space/api-docs` ### Functional Endpoints ### `/api/version` - **Method:** GET - **Purpose:** Returns application and Odoo version details. - **Request Example:** `GET https://Leon4gr45-odoo.hf.space/api/version` - **Response Example:** ```json { "version": "19.0", "sdk": "docker" } ``` ### `/api/modules` - **Method:** GET - **Purpose:** Lists available Odoo modules. - **Request Example:** `GET https://Leon4gr45-odoo.hf.space/api/modules` - **Response Example:** ```json ["base", "web", "crm", "website", "ecommerce", "inventory", "project"] ``` ### `/api/sysinfo` - **Method:** GET - **Purpose:** Returns platform execution environment details. - **Request Example:** `GET https://Leon4gr45-odoo.hf.space/api/sysinfo` - **Response Example:** ```json { "system": "Linux", "release": "...", "version": "...", "machine": "x86_64", "python_version": "3.12.x" } ``` ### `/api/ping` - **Method:** GET - **Purpose:** Simple ping-pong endpoint to verify responsiveness. - **Request Example:** `GET https://Leon4gr45-odoo.hf.space/api/ping` - **Response Example:** ```json { "ping": "pong" } ``` All endpoints listed above are documented in `/api-docs`. --- ## 3. Deployment Workflow Precondition: Verify space is clean or contains only required metadata files before pushing. ### Standard Deployment Command After any code change, run: ```bash hf upload Leon4gr45/odoo --repo-type=space ``` ### Scan build and run logs - To stream build logs (SSE): ```bash curl -N -H "Authorization: Bearer $HF_TOKEN" "https://huggingface.co/api/spaces/Leon4gr45/odoo/logs/build" ``` - To stream run logs (SSE): ```bash curl -N -H "Authorization: Bearer $HF_TOKEN" "https://huggingface.co/api/spaces/Leon4gr45/odoo/logs/run" ``` - Continuously monitor for up to 300 seconds to ensure the Space starts successfully.