Humanoid Robotics Training Platform - Rust + Keycloak
- Rust 78.2%
- Smarty 10.3%
- Dockerfile 6.6%
- JavaScript 4.6%
- CSS 0.3%
|
|
||
|---|---|---|
| charts/humanoid-platform | ||
| config | ||
| k8s | ||
| marketing@b24705aaa6 | ||
| src | ||
| static | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| Cargo.toml | ||
| Dockerfile | ||
| LEFTOFF.md | ||
| package.json | ||
| postcss.config.js | ||
| README.md | ||
| rustyroad.toml | ||
| tailwind.config.js | ||
| workspace.Cargo.toml | ||
Humanoid Robotics Platform
A self-hosted training platform for humanoid robots, built with Rust.
Train, simulate, and deploy policies to Unitree G1/H1 humanoid robots.
Features
- Robot Management: Connect and manage Unitree G1/H1 robots
- Training Sessions: Reinforcement learning and imitation learning in simulation
- User Management: Role-based access control via Keycloak (self-hosted)
- Real-time Monitoring: WebSocket-based telemetry streaming
- Model Deployment: Push trained policies to physical robots
- Simulator Integration: Bevy + Rapier 3D physics simulation
Quick Start
1. Deploy Keycloak (Authentication)
# Docker Compose (recommended)
docker run -d --name keycloak \
-p 8443:8443 \
-e KEYCLOAK_ADMIN=admin \
-e KEYCLOAK_ADMIN_PASSWORD=admin \
quay.io/keycloak/keycloak:latest start-dev
Then configure your realm and client (see Keycloak Setup).
2. Configure Environment
cp .env.example .env
Edit .env:
# Your Keycloak instance
KEYCLOAK_URL=https://your-keycloak-server.com
KEYCLOAK_REALM=humanoid-platform
KEYCLOAK_CLIENT_ID=humanoid-web
KEYCLOAK_CLIENT_SECRET=your-client-secret
# Database
DATABASE_URL=postgres://user:pass@localhost:5432/humanoid_platform
# Application
APP_URL=http://localhost:8080
SECRET_KEY=your-secret-key-minimum-32-chars
3. Run Database Migrations
cargo run --bin migrate
4. Start the Server
cargo run --release
Platform available at http://localhost:8080
Project Structure
humanoid-platform/
├── src/
│ ├── controllers/ # HTTP request handlers
│ ├── middleware/ # Auth middleware
│ ├── models/ # Database models
│ ├── views/ # Tera templates
│ └── main.rs # Application entry
├── config/
│ └── database/
│ └── migrations/ # SQL migrations
├── static/ # CSS, JS, images
└── Cargo.toml
Keycloak Setup
Required Realm Roles
Create these roles in your Keycloak realm:
super_admin: Full platform accessadmin: Manage robots and training sessionstrainer: Create and run training sessionsviewer: View-only access
Client Configuration
Create a new client in Keycloak:
- Client ID:
humanoid-web - Client Protocol:
openid-connect - Access Type:
confidential - Valid Redirect URIs:
http://your-domain/* - Web Origins:
http://your-domain
API Endpoints
Authentication
GET /login- Redirect to KeycloakGET /logout- Logout and clear sessionGET /auth/callback- OAuth callbackGET /auth/user- Get current user info
Robots
GET /api/robots- List user's robotsPOST /api/robots- Register new robotGET /api/robots/:id- Get robot detailsPOST /api/robots/:id/connect- Connect to robot
Training
GET /api/training- List training sessionsPOST /api/training- Create new sessionGET /api/training/:id- Get session detailsPOST /api/training/:id/start- Start trainingPOST /api/training/:id/stop- Stop training
Supported Robots
| Model | Price Range | Support |
|---|---|---|
| Unitree G1 | $16k-$70k | Full |
| Unitree H1 | $90k-$116k | Full |
| Unitree R1 | $9k-$31k | Planned |
| Custom URDF | - | SDK |
Development
Prerequisites
- Rust 1.75+
- PostgreSQL 14+
- Docker (for Keycloak)
- Node.js 18+ (for Tailwind CSS)
Running Locally
# Install dependencies
cargo build
# Start Tailwind watcher
npx tailwindcss -i ./src/tailwind.css -o ./static/css/output.css --watch
# Run server
cargo run
Running Tests
cargo test
Building for Production
cargo build --release
Deployment
Docker
docker build -t humanoid-platform .
docker run -p 8080:8080 --env-file .env humanoid-platform
Kubernetes
Helm chart coming soon.
License
MIT OR Apache-2.0
Support
- Documentation: docs.humanoid-platform.dev
- Issues: GitHub Issues
- Discord: Coming soon
Built by Evolving Software for the robotics community.