Spaces:
Running
Running
| title: LeRobot Arena | |
| emoji: π€ | |
| colorFrom: blue | |
| colorTo: purple | |
| sdk: docker | |
| app_port: 7860 | |
| suggested_hardware: cpu-upgrade | |
| suggested_storage: small | |
| short_description: A web-based robotics control | |
| tags: | |
| - robotics | |
| - control | |
| - simulation | |
| - websocket | |
| - fastapi | |
| - svelte | |
| - urdf | |
| - 3d-visualization | |
| pinned: true | |
| fullWidth: true | |
| # π€ LeRobot Arena | |
| A web-based robotics control and simulation platform that bridges digital twins and physical robots. Built with Svelte for the frontend and FastAPI for the backend. | |
| ## π Quick Start with Docker | |
| The easiest way to run LeRobot Arena is using Docker, which sets up both the frontend and backend automatically. | |
| ### Prerequisites | |
| - [Docker](https://www.docker.com/get-started) installed on your system | |
| - [Docker Compose](https://docs.docker.com/compose/install/) (usually included with Docker Desktop) | |
| ### Step-by-Step Instructions | |
| 1. **Clone the repository** | |
| ```bash | |
| git clone <your-repo-url> | |
| cd lerobot-arena | |
| ``` | |
| 2. **Build and start the services** | |
| ```bash | |
| docker-compose up --build | |
| ``` | |
| 3. **Access the application** | |
| - **Frontend**: http://localhost:7860 | |
| - **Backend API**: http://localhost:8080 | |
| - **API Documentation**: http://localhost:8080/docs | |
| 4. **Stop the services** | |
| ```bash | |
| # Press Ctrl+C to stop, or in another terminal: | |
| docker-compose down | |
| ``` | |
| ### Alternative Docker Commands | |
| If you prefer using Docker directly: | |
| ```bash | |
| # Build the image | |
| docker build -t lerobot-arena . | |
| # Run the container | |
| docker run -p 7860:7860 lerobot-arena | |
| ``` | |
| ## π οΈ Development Setup | |
| For local development with hot-reload capabilities: | |
| ### Frontend Development | |
| ```bash | |
| # Install dependencies | |
| bun install | |
| # Start the development server | |
| bun run dev | |
| # Or open in browser automatically | |
| bun run dev -- --open | |
| ``` | |
| ### Backend Development | |
| ```bash | |
| # Navigate to Python backend | |
| cd src-python | |
| # Install Python dependencies (using uv) | |
| uv sync | |
| # Or using pip | |
| pip install -e . | |
| # Start the backend server | |
| python start_server.py | |
| ``` | |
| ### Building Standalone Executable | |
| The backend can be packaged as a standalone executable using box-packager: | |
| ```bash | |
| # Navigate to Python backend | |
| cd src-python | |
| # Install box-packager (if not already installed) | |
| uv pip install box-packager | |
| # Package the application | |
| box package | |
| # The executable will be in target/release/lerobot-arena-server | |
| ./target/release/lerobot-arena-server | |
| ``` | |
| Note: Requires [Rust/Cargo](https://rustup.rs/) to be installed for box-packager to work. | |
| ## π Project Structure | |
| ``` | |
| lerobot-arena/ | |
| βββ src/ # Svelte frontend source | |
| β βββ lib/ # Reusable components and utilities | |
| β βββ routes/ # SvelteKit routes | |
| β βββ app.html # App template | |
| βββ src-python/ # Python backend | |
| β βββ src/ # Python source code | |
| β βββ start_server.py # Server entry point | |
| β βββ target/ # Box-packager build output (excluded from git) | |
| β βββ pyproject.toml # Python dependencies | |
| βββ static/ # Static assets | |
| βββ Dockerfile # Docker configuration | |
| βββ docker-compose.yml # Docker Compose setup | |
| βββ package.json # Node.js dependencies | |
| ``` | |
| ## π³ Docker Information | |
| The Docker setup includes: | |
| - **Multi-stage build**: Optimized for production using Bun and uv | |
| - **Automatic startup**: Both services start together | |
| - **Port mapping**: Backend on 8080, Frontend on 7860 (HF Spaces compatible) | |
| - **Static file serving**: Compiled Svelte app served efficiently | |
| - **User permissions**: Properly configured for Hugging Face Spaces | |
| - **Standalone executable**: Backend packaged with box-packager for faster startup | |
| For detailed Docker documentation, see [DOCKER_README.md](./DOCKER_README.md). | |
| ## π§ Building for Production | |
| ### Frontend Only | |
| ```bash | |
| bun run build | |
| ``` | |
| ### Backend Standalone Executable | |
| ```bash | |
| cd src-python | |
| box package | |
| ``` | |
| ### Complete Docker Build | |
| ```bash | |
| docker-compose up --build | |
| ``` | |
| ## π What's Included | |
| - **Real-time Robot Control**: WebSocket-based communication | |
| - **3D Visualization**: Three.js integration for robot visualization | |
| - **URDF Support**: Load and display robot models | |
| - **Multi-robot Management**: Control multiple robots simultaneously | |
| - **WebSocket API**: Real-time bidirectional communication | |
| - **Standalone Distribution**: Self-contained executable with box-packager | |
| ## π¨ Troubleshooting | |
| ### Port Conflicts | |
| If ports 8080 or 7860 are already in use: | |
| ```bash | |
| # Check what's using the ports | |
| lsof -i :8080 | |
| lsof -i :7860 | |
| # Use different ports | |
| docker run -p 8081:8080 -p 7861:7860 lerobot-arena | |
| ``` | |
| ### Container Issues | |
| ```bash | |
| # View logs | |
| docker-compose logs lerobot-arena | |
| # Rebuild without cache | |
| docker-compose build --no-cache | |
| docker-compose up | |
| ``` | |
| ### Development Issues | |
| ```bash | |
| # Clear node modules and reinstall | |
| rm -rf node_modules | |
| bun install | |
| # Clear Svelte kit cache | |
| rm -rf .svelte-kit | |
| bun run dev | |
| ``` | |
| ### Box-packager Issues | |
| ```bash | |
| # Clean build artifacts | |
| cd src-python | |
| box clean | |
| # Rebuild executable | |
| box package | |
| # Install cargo if missing | |
| curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh | |
| ``` | |
| ## π Hugging Face Spaces Deployment | |
| This project is configured for deployment on Hugging Face Spaces: | |
| 1. **Fork** this repository to your GitHub account | |
| 2. **Create a new Space** on Hugging Face Spaces | |
| 3. **Connect** your GitHub repository | |
| 4. **Select Docker SDK** (should be auto-detected from the frontmatter) | |
| 5. **Deploy** - The Space will automatically build and run | |
| The frontend will be available at your Space URL, and the backend API will be accessible at `/api/` endpoints. | |
| ## π Additional Documentation | |
| - [Docker Setup Guide](./DOCKER_README.md) - Detailed Docker instructions | |
| - [Robot Architecture](./ROBOT_ARCHITECTURE.md) - System architecture overview | |
| - [Robot Instancing Guide](./ROBOT_INSTANCING_README.md) - Multi-robot setup | |
| ## π€ Contributing | |
| 1. Fork the repository | |
| 2. Create a feature branch | |
| 3. Make your changes | |
| 4. Test with Docker: `docker-compose up --build` | |
| 5. Submit a pull request | |
| ## π License | |
| This project is licensed under the MIT License. | |
| --- | |
| **Built with β€οΈ for the robotics community** π€ | |