Spaces:
Sleeping
Sleeping
{ | |
"openapi": "3.1.0", | |
"info": { | |
"title": "LeRobot Arena AI Server", | |
"summary": "ACT Model Inference Server for Real-time Robot Control", | |
"description": "\n ## LeRobot Arena AI Server\n\n This server provides **ACT (Action Chunking Transformer)** model inference for robotics applications.\n It uses the LeRobot Arena communication system with multiple rooms per session for:\n\n ### Core Features:\n - 🎥 **Multi-camera support**: Arbitrary number of camera streams with unique names\n - 🤖 **Joint control**: Normalized joint value handling (-100 to +100 range)\n - 🔄 **Real-time inference**: Optimized for robotics control loops\n - 📊 **Session management**: Multiple concurrent inference sessions\n - 🛠️ **Debug endpoints**: Comprehensive monitoring and debugging tools\n\n ### Communication Architecture:\n 1. **Camera rooms**: Receives video streams from robot cameras (supports multiple cameras)\n 2. **Joint input room**: Receives current robot joint positions (**NORMALIZED VALUES**)\n 3. **Joint output room**: Sends predicted joint commands (**NORMALIZED VALUES**)\n\n ### Supported Cameras:\n Each camera stream has a unique name (e.g., \"front\", \"wrist\", \"overhead\") \n and all streams are synchronized for inference.\n\n ### Joint Value Convention:\n - All joint inputs/outputs use **NORMALIZED VALUES**\n - Range: -100 to +100 for most joints, 0 to 100 for gripper\n - Matches training data format exactly\n\n ### Getting Started:\n 1. Create a session with your trained ACT model\n 2. Connect your robot to the generated rooms\n 3. Start inference to begin real-time control\n ", | |
"version": "1.0.0", | |
"contact": { | |
"name": "LeRobot Arena Team", | |
"url": "https://github.com/huggingface/lerobot" | |
}, | |
"license": { | |
"name": "Apache 2.0", | |
"url": "https://www.apache.org/licenses/LICENSE-2.0.html" | |
}, | |
"x-logo": { | |
"url": "https://huggingface.co/datasets/huggingface/brand-assets/resolve/main/hf-logo.png", | |
"altText": "LeRobot Logo" | |
} | |
}, | |
"paths": { | |
"/": { | |
"get": { | |
"tags": [ | |
"Health" | |
], | |
"summary": "Root", | |
"description": "Health check endpoint.", | |
"operationId": "root__get", | |
"responses": { | |
"200": { | |
"description": "Successful Response", | |
"content": { | |
"application/json": { | |
"schema": {} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/health": { | |
"get": { | |
"tags": [ | |
"Health" | |
], | |
"summary": "Health Check", | |
"description": "Detailed health check.", | |
"operationId": "health_check_health_get", | |
"responses": { | |
"200": { | |
"description": "Successful Response", | |
"content": { | |
"application/json": { | |
"schema": {} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/sessions": { | |
"get": { | |
"tags": [ | |
"Sessions" | |
], | |
"summary": "List Sessions", | |
"description": "List all sessions.", | |
"operationId": "list_sessions_sessions_get", | |
"responses": { | |
"200": { | |
"description": "Successful Response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"items": { | |
"$ref": "#/components/schemas/SessionStatusResponse" | |
}, | |
"type": "array", | |
"title": "Response List Sessions Sessions Get" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"post": { | |
"tags": [ | |
"Sessions" | |
], | |
"summary": "Create Session", | |
"description": "Create a new inference session.\n\nIf workspace_id is provided, all rooms will be created in that workspace.\nIf workspace_id is not provided, a new workspace will be generated automatically.\nAll rooms for a session (cameras + joints) are always created in the same workspace.", | |
"operationId": "create_session_sessions_post", | |
"requestBody": { | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/CreateSessionRequest" | |
} | |
} | |
}, | |
"required": true | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful Response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/CreateSessionResponse" | |
} | |
} | |
} | |
}, | |
"422": { | |
"description": "Validation Error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/HTTPValidationError" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/sessions/{session_id}": { | |
"get": { | |
"tags": [ | |
"Sessions" | |
], | |
"summary": "Get Session Status", | |
"description": "Get status of a specific session.", | |
"operationId": "get_session_status_sessions__session_id__get", | |
"parameters": [ | |
{ | |
"name": "session_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string", | |
"title": "Session Id" | |
} | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful Response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/SessionStatusResponse" | |
} | |
} | |
} | |
}, | |
"422": { | |
"description": "Validation Error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/HTTPValidationError" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"delete": { | |
"tags": [ | |
"Sessions" | |
], | |
"summary": "Delete Session", | |
"description": "Delete a session.", | |
"operationId": "delete_session_sessions__session_id__delete", | |
"parameters": [ | |
{ | |
"name": "session_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string", | |
"title": "Session Id" | |
} | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful Response", | |
"content": { | |
"application/json": { | |
"schema": {} | |
} | |
} | |
}, | |
"422": { | |
"description": "Validation Error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/HTTPValidationError" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/sessions/{session_id}/start": { | |
"post": { | |
"tags": [ | |
"Control" | |
], | |
"summary": "Start Inference", | |
"description": "Start inference for a session.", | |
"operationId": "start_inference_sessions__session_id__start_post", | |
"parameters": [ | |
{ | |
"name": "session_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string", | |
"title": "Session Id" | |
} | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful Response", | |
"content": { | |
"application/json": { | |
"schema": {} | |
} | |
} | |
}, | |
"422": { | |
"description": "Validation Error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/HTTPValidationError" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/sessions/{session_id}/stop": { | |
"post": { | |
"tags": [ | |
"Control" | |
], | |
"summary": "Stop Inference", | |
"description": "Stop inference for a session.", | |
"operationId": "stop_inference_sessions__session_id__stop_post", | |
"parameters": [ | |
{ | |
"name": "session_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string", | |
"title": "Session Id" | |
} | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful Response", | |
"content": { | |
"application/json": { | |
"schema": {} | |
} | |
} | |
}, | |
"422": { | |
"description": "Validation Error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/HTTPValidationError" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/sessions/{session_id}/restart": { | |
"post": { | |
"tags": [ | |
"Control" | |
], | |
"summary": "Restart Inference", | |
"description": "Restart inference for a session.", | |
"operationId": "restart_inference_sessions__session_id__restart_post", | |
"parameters": [ | |
{ | |
"name": "session_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string", | |
"title": "Session Id" | |
} | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful Response", | |
"content": { | |
"application/json": { | |
"schema": {} | |
} | |
} | |
}, | |
"422": { | |
"description": "Validation Error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/HTTPValidationError" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/debug/system": { | |
"get": { | |
"tags": [ | |
"Debug" | |
], | |
"summary": "Get System Info", | |
"description": "Get system information for debugging.", | |
"operationId": "get_system_info_debug_system_get", | |
"responses": { | |
"200": { | |
"description": "Successful Response", | |
"content": { | |
"application/json": { | |
"schema": {} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/debug/logs": { | |
"get": { | |
"tags": [ | |
"Debug" | |
], | |
"summary": "Get Recent Logs", | |
"description": "Get recent log entries for debugging.", | |
"operationId": "get_recent_logs_debug_logs_get", | |
"responses": { | |
"200": { | |
"description": "Successful Response", | |
"content": { | |
"application/json": { | |
"schema": {} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/debug/sessions/{session_id}/reset": { | |
"post": { | |
"tags": [ | |
"Debug" | |
], | |
"summary": "Debug Reset Session", | |
"description": "Reset a session's internal state for debugging.", | |
"operationId": "debug_reset_session_debug_sessions__session_id__reset_post", | |
"parameters": [ | |
{ | |
"name": "session_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string", | |
"title": "Session Id" | |
} | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful Response", | |
"content": { | |
"application/json": { | |
"schema": {} | |
} | |
} | |
}, | |
"422": { | |
"description": "Validation Error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/HTTPValidationError" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/debug/sessions/{session_id}/queue": { | |
"get": { | |
"tags": [ | |
"Debug" | |
], | |
"summary": "Get Session Queue Info", | |
"description": "Get detailed information about a session's action queue.", | |
"operationId": "get_session_queue_info_debug_sessions__session_id__queue_get", | |
"parameters": [ | |
{ | |
"name": "session_id", | |
"in": "path", | |
"required": true, | |
"schema": { | |
"type": "string", | |
"title": "Session Id" | |
} | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful Response", | |
"content": { | |
"application/json": { | |
"schema": {} | |
} | |
} | |
}, | |
"422": { | |
"description": "Validation Error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/HTTPValidationError" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"components": { | |
"schemas": { | |
"CreateSessionRequest": { | |
"properties": { | |
"session_id": { | |
"type": "string", | |
"title": "Session Id" | |
}, | |
"policy_path": { | |
"type": "string", | |
"title": "Policy Path" | |
}, | |
"camera_names": { | |
"items": { | |
"type": "string" | |
}, | |
"type": "array", | |
"title": "Camera Names", | |
"default": [ | |
"front" | |
] | |
}, | |
"arena_server_url": { | |
"type": "string", | |
"title": "Arena Server Url", | |
"default": "http://localhost:8000" | |
}, | |
"workspace_id": { | |
"anyOf": [ | |
{ | |
"type": "string" | |
}, | |
{ | |
"type": "null" | |
} | |
], | |
"title": "Workspace Id" | |
} | |
}, | |
"type": "object", | |
"required": [ | |
"session_id", | |
"policy_path" | |
], | |
"title": "CreateSessionRequest" | |
}, | |
"CreateSessionResponse": { | |
"properties": { | |
"workspace_id": { | |
"type": "string", | |
"title": "Workspace Id" | |
}, | |
"camera_room_ids": { | |
"additionalProperties": { | |
"type": "string" | |
}, | |
"type": "object", | |
"title": "Camera Room Ids" | |
}, | |
"joint_input_room_id": { | |
"type": "string", | |
"title": "Joint Input Room Id" | |
}, | |
"joint_output_room_id": { | |
"type": "string", | |
"title": "Joint Output Room Id" | |
} | |
}, | |
"type": "object", | |
"required": [ | |
"workspace_id", | |
"camera_room_ids", | |
"joint_input_room_id", | |
"joint_output_room_id" | |
], | |
"title": "CreateSessionResponse" | |
}, | |
"HTTPValidationError": { | |
"properties": { | |
"detail": { | |
"items": { | |
"$ref": "#/components/schemas/ValidationError" | |
}, | |
"type": "array", | |
"title": "Detail" | |
} | |
}, | |
"type": "object", | |
"title": "HTTPValidationError" | |
}, | |
"SessionStatusResponse": { | |
"properties": { | |
"session_id": { | |
"type": "string", | |
"title": "Session Id" | |
}, | |
"status": { | |
"type": "string", | |
"title": "Status" | |
}, | |
"policy_path": { | |
"type": "string", | |
"title": "Policy Path" | |
}, | |
"camera_names": { | |
"items": { | |
"type": "string" | |
}, | |
"type": "array", | |
"title": "Camera Names" | |
}, | |
"workspace_id": { | |
"type": "string", | |
"title": "Workspace Id" | |
}, | |
"rooms": { | |
"additionalProperties": true, | |
"type": "object", | |
"title": "Rooms" | |
}, | |
"stats": { | |
"additionalProperties": true, | |
"type": "object", | |
"title": "Stats" | |
}, | |
"inference_stats": { | |
"anyOf": [ | |
{ | |
"additionalProperties": true, | |
"type": "object" | |
}, | |
{ | |
"type": "null" | |
} | |
], | |
"title": "Inference Stats" | |
}, | |
"error_message": { | |
"anyOf": [ | |
{ | |
"type": "string" | |
}, | |
{ | |
"type": "null" | |
} | |
], | |
"title": "Error Message" | |
} | |
}, | |
"type": "object", | |
"required": [ | |
"session_id", | |
"status", | |
"policy_path", | |
"camera_names", | |
"workspace_id", | |
"rooms", | |
"stats" | |
], | |
"title": "SessionStatusResponse" | |
}, | |
"ValidationError": { | |
"properties": { | |
"loc": { | |
"items": { | |
"anyOf": [ | |
{ | |
"type": "string" | |
}, | |
{ | |
"type": "integer" | |
} | |
] | |
}, | |
"type": "array", | |
"title": "Location" | |
}, | |
"msg": { | |
"type": "string", | |
"title": "Message" | |
}, | |
"type": { | |
"type": "string", | |
"title": "Error Type" | |
} | |
}, | |
"type": "object", | |
"required": [ | |
"loc", | |
"msg", | |
"type" | |
], | |
"title": "ValidationError" | |
} | |
}, | |
"securitySchemes": { | |
"BearerAuth": { | |
"type": "http", | |
"scheme": "bearer", | |
"bearerFormat": "JWT" | |
}, | |
"ApiKeyAuth": { | |
"type": "apiKey", | |
"in": "header", | |
"name": "X-API-Key" | |
} | |
} | |
}, | |
"servers": [ | |
{ | |
"url": "http://localhost:8001", | |
"description": "Development server" | |
}, | |
{ | |
"url": "https://your-production-server.com", | |
"description": "Production server" | |
} | |
], | |
"tags": [ | |
{ | |
"name": "Health", | |
"description": "Health check and server status endpoints" | |
}, | |
{ | |
"name": "Sessions", | |
"description": "Inference session management - create, control, and monitor AI sessions" | |
}, | |
{ | |
"name": "Control", | |
"description": "Session control operations - start, stop, restart inference" | |
}, | |
{ | |
"name": "Debug", | |
"description": "Debug and monitoring endpoints for system diagnostics" | |
} | |
] | |
} |