| 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 - \U0001F3A5 **Multi-camera\ |
| \ support**: Arbitrary number of camera streams with unique names\n - \U0001F916\ |
| \ **Joint control**: Normalized joint value handling (-100 to +100 range)\n \ |
| \ - \U0001F504 **Real-time inference**: Optimized for robotics control loops\n\ |
| \ - \U0001F4CA **Session management**: Multiple concurrent inference sessions\n\ |
| \ - \U0001F6E0️ **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. |
| |
| |
| If workspace_id is provided, all rooms will be created in that workspace. |
| |
| If workspace_id is not provided, a new workspace will be generated automatically. |
| |
| All 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 |
|
|