openoperator / Agent.md
Leon4gr45's picture
Upload folder using huggingface_hub
3a3bdee verified
|
Raw History Blame Contribute Delete
5.63 kB
# Agent.md - Deployment & Best Practices Guide for Open Operator
This document informs autonomous agents and deployment managers about guidelines, configuration, and ongoing deployment best practices for running Open Operator on Hugging Face Spaces.
---
## 1. Deployment Configuration
### Target Space
- **Profile:** `Leon4gr45`
- **Space:** `openoperator`
- **Full Identifier:** `Leon4gr45/openoperator`
- **Frontend Port:** `7860` (mandatory for all Hugging Face Spaces)
### Deployment Method
- **SDK:** `docker`
### HF Token
- The environment variable `HF_TOKEN` (provided at runtime) is used for authentication.
- Never hardcode tokens in codebase. Always read from environment variables.
### Required Files
- `Dockerfile`: Configured with EXPOSE 7860 and Docker SDK runtime.
- `README.md`: Contains mandatory Hugging Face Space YAML frontmatter:
```yaml
---
title: Open Operator
sdk: docker
app_port: 7860
---
```
- `.hfignore`: Excludes non-essential build/runtime files (`.git`, `.venv`, `usr/`, `tmp/`, `__pycache__`, etc.).
- `Agent.md`: This file, committed before deployment.
---
## 2. API Exposure and Documentation
### Mandatory Endpoints
#### /health
- **Method:** GET
- **Purpose:** Returns HTTP 200 JSON status when the application is ready. Required for Hugging Face to transition Space status from *starting* -> *running*.
- **Request Example:**
`GET /health`
- **Response Example:**
```json
{
"status": "ok"
}
```
#### /api-docs
- **Method:** GET
- **Purpose:** Documents all available API endpoints. Reachable at `https://leon4gr45-openoperator.hf.space/api-docs`.
- **Request Example:**
`GET /api-docs`
- **Response Example:**
```json
{
"title": "Open Operator API Documentation",
"description": "API documentation for Open Operator (Agent Zero)",
"endpoints": [ ... ]
}
```
### Functional Endpoints
#### /api/health
- **Method:** GET / POST
- **Purpose:** Detailed process health and git repository status info.
- **Request Example:**
`GET /api/health`
- **Response Example:**
```json
{
"gitinfo": {
"version": "v1.6",
"commit_time": "2026-01-01 00:00:00"
},
"error": null
}
```
#### /api/message
- **Method:** POST
- **Purpose:** Process synchronous message in specified agent context.
- **Request Example:**
```json
{
"message": "Hello Open Operator",
"context_id": "default"
}
```
- **Response Example:**
```json
{
"response": "Hello! How can I help you today?"
}
```
#### /api/message_async
- **Method:** POST
- **Purpose:** Queue asynchronous message for background agent processing.
- **Request Example:**
```json
{
"message": "Start long-running task",
"context_id": "default"
}
```
- **Response Example:**
```json
{
"status": "queued"
}
```
#### /api/settings_get
- **Method:** GET / POST
- **Purpose:** Retrieve system and user settings snapshot.
- **Request Example:**
`GET /api/settings_get`
- **Response Example:**
```json
{
"settings": {
"chat_model": "gpt-4o"
}
}
```
#### /api/settings_set
- **Method:** POST
- **Purpose:** Update system and user settings.
- **Request Example:**
```json
{
"settings": {
"timezone": "UTC"
}
}
```
- **Response Example:**
```json
{
"success": true
}
```
#### /api/chat_create
- **Method:** POST
- **Purpose:** Create a new chat session context.
- **Request Example:**
```json
{
"name": "Project Discussion"
}
```
- **Response Example:**
```json
{
"context_id": "ctx-98765"
}
```
#### /api/chat_remove
- **Method:** POST
- **Purpose:** Remove an existing chat session context.
- **Request Example:**
```json
{
"context_id": "ctx-98765"
}
```
- **Response Example:**
```json
{
"success": true
}
```
#### /api/chat_load
- **Method:** POST
- **Purpose:** Load conversation history for a chat context.
- **Request Example:**
```json
{
"context_id": "ctx-98765"
}
```
- **Response Example:**
```json
{
"history": []
}
```
#### /api/chat_reset
- **Method:** POST
- **Purpose:** Clear messages in active chat context.
- **Request Example:**
```json
{
"context_id": "ctx-98765"
}
```
- **Response Example:**
```json
{
"success": true
}
```
#### /api/history_get
- **Method:** GET / POST
- **Purpose:** Retrieve message history for active context.
- **Request Example:**
`GET /api/history_get`
- **Response Example:**
```json
{
"history": []
}
```
#### /api/upload
- **Method:** POST
- **Purpose:** Upload file to current context work directory.
- **Request Example:**
Multipart form upload with `file` payload.
- **Response Example:**
```json
{
"filename": "data.csv",
"path": "/a0/usr/workdir/data.csv"
}
```
---
## 3. Deployment Workflow
### Precondition
Clean obsolete non-project files from target Space before upload:
```bash
hf upload Leon4gr45/openoperator . --repo-type=space --delete "*"
```
### Deployment Upload
Upload repository contents to Hugging Face Space:
```bash
hf upload Leon4gr45/openoperator --repo-type=space
```
### Monitoring Build & Run Logs
Stream build logs (SSE):
```bash
curl -N -H "Authorization: Bearer $HF_TOKEN" "https://huggingface.co/api/spaces/Leon4gr45/openoperator/logs/build"
```
Stream run logs (SSE):
```bash
curl -N -H "Authorization: Bearer $HF_TOKEN" "https://huggingface.co/api/spaces/Leon4gr45/openoperator/logs/run"
```
Iterate modifying codebase, redeploying, and monitoring logs until deployment is running and responding cleanly to `/health` and `/api-docs`.