Scaffold for training Hugging Face SO-101 robotic arms using Vision-Language-Action policies without demonstrations
Rust
6
18 commits
updated Jun 4, 2026
Production-ready Rust framework for autonomous robotic control with local AI models
Saorsa Robotics provides a comprehensive, safety-first framework for robotic control systems with Vision-Language-Action (VLA) models running entirely on local hardware. Built in Rust for memory safety, performance, and reliability.
unwrap(), expect(), or panic!() in production code# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Clone repository
git clone https://github.com/dirvine/saorsa-robotics
cd saorsa-robotics
# Build all crates
cargo build --release
# Run all tests
cargo test --all
# Run with safety checks
cargo run --bin sr-cli -- --safety-enabled
# VLA Policy Demo
cargo run --example vla_policy_demo
# Wake Word Detection
cargo run --example wake_word_demo
# Safety Constraints Demo
cargo run --bin safety-demo
saorsa-robotics/
βββ apps/ # Application binaries
β βββ sr-cli/ # Main CLI interface
β βββ brain-daemon/ # Central coordination daemon
β βββ safety-demo/ # Safety system demonstration
β βββ kyutai-stt-app/ # Speech-to-text application
βββ crates/ # Core library crates
β βββ vla-policy/ # Vision-Language-Action models
β βββ safety-guard/ # Safety constraint engine
β βββ voice-local/ # On-device voice processing
β βββ vision-stereo/ # Stereo vision and depth
β βββ intent-parser/ # NLU and command parsing
β βββ can-transport/ # CAN bus communication
β βββ device-registry/ # Hardware device management
β βββ continual-learning/ # Online learning framework
βββ examples/ # Example applications
βββ configs/ # Device and system configs
βββ docs/ # Technical documentation
vla-policy)Implements multiple Vision-Language-Action models for robot control:
use vla_policy::{create_policy, PolicyConfig, Observation};
// Create MolmoAct policy with 3D reasoning
let config = PolicyConfig {
model_type: "molmoact".to_string(),
model_path: "models/molmoact-7b".to_string(),
// ... configuration
};
let policy = create_policy(config)?;
let action = policy.predict(&observation).await?;
Features:
safety-guard)Expression-based constraint system ensuring safe operation:
use safety_guard::{SafetyGuard, Constraint};
let mut guard = SafetyGuard::new();
// Define workspace boundaries
guard.add_constraint(Constraint::expression(
"workspace_x",
"x >= -0.5 && x <= 0.5"
)?);
// Check if action is safe
if guard.check_action(&action)? {
robot.execute(action)?;
}
Features:
voice-local)On-device speech recognition and wake word detection:
use voice_local::{KyutaiProvider, WakeWordDetector};
let provider = KyutaiProvider::new(config)?;
let detector = WakeWordDetector::new("hey robot")?;
// Process audio stream
if detector.detect(&audio_frame)? {
let command = provider.transcribe(&audio_buffer)?;
execute_command(command)?;
}
Features:
vision-stereo)Depth perception and 3D scene understanding:
use vision_stereo::{StereoCamera, DepthEstimator};
let camera = StereoCamera::new(config)?;
camera.calibrate()?;
let (left, right) = camera.capture()?;
let depth_map = DepthEstimator::compute(&left, &right)?;
let tags = detect_april_tags(&left)?;
Features:
can-transport)Hardware control via CAN bus:
use can_transport::{SlcanTransport, Message};
let transport = SlcanTransport::new("/dev/ttyUSB0")?;
// Send motor command
let msg = Message::new(0x123, &[0x01, 0x02, 0x03])?;
transport.send(&msg)?;
Features:
All crates maintain 100% test coverage on critical paths:
# Run all tests
cargo test --all
# Run with coverage
cargo tarpaulin --out Html
# Run safety-critical tests
cargo test -p safety-guard
# Run benchmarks
cargo bench
Current test status:
safety-guard: 13/13 passingvla-policy: 21/21 passingvoice-local: All doctests passingintent-parser: 1/1 passingunwrap(), expect(), or panic!() in productionResult<T, E>We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Key areas for contribution:
MIT License - see LICENSE for details.
For the original Python implementation for SO-101 arms, see archive/python-so101
18 commits
Rust
82.6%
Python
15.7%
Shell
1.2%
Scaffold for training Hugging Face SO-101 robotic arms using Vision-Language-Action policies without demonstrations
Rust
6
18 commits
updated Jun 4, 2026
Production-ready Rust framework for autonomous robotic control with local AI models
Saorsa Robotics provides a comprehensive, safety-first framework for robotic control systems with Vision-Language-Action (VLA) models running entirely on local hardware. Built in Rust for memory safety, performance, and reliability.
unwrap(), expect(), or panic!() in production code# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Clone repository
git clone https://github.com/dirvine/saorsa-robotics
cd saorsa-robotics
# Build all crates
cargo build --release
# Run all tests
cargo test --all
# Run with safety checks
cargo run --bin sr-cli -- --safety-enabled
# VLA Policy Demo
cargo run --example vla_policy_demo
# Wake Word Detection
cargo run --example wake_word_demo
# Safety Constraints Demo
cargo run --bin safety-demo
saorsa-robotics/
βββ apps/ # Application binaries
β βββ sr-cli/ # Main CLI interface
β βββ brain-daemon/ # Central coordination daemon
β βββ safety-demo/ # Safety system demonstration
β βββ kyutai-stt-app/ # Speech-to-text application
βββ crates/ # Core library crates
β βββ vla-policy/ # Vision-Language-Action models
β βββ safety-guard/ # Safety constraint engine
β βββ voice-local/ # On-device voice processing
β βββ vision-stereo/ # Stereo vision and depth
β βββ intent-parser/ # NLU and command parsing
β βββ can-transport/ # CAN bus communication
β βββ device-registry/ # Hardware device management
β βββ continual-learning/ # Online learning framework
βββ examples/ # Example applications
βββ configs/ # Device and system configs
βββ docs/ # Technical documentation
vla-policy)Implements multiple Vision-Language-Action models for robot control:
use vla_policy::{create_policy, PolicyConfig, Observation};
// Create MolmoAct policy with 3D reasoning
let config = PolicyConfig {
model_type: "molmoact".to_string(),
model_path: "models/molmoact-7b".to_string(),
// ... configuration
};
let policy = create_policy(config)?;
let action = policy.predict(&observation).await?;
Features:
safety-guard)Expression-based constraint system ensuring safe operation:
use safety_guard::{SafetyGuard, Constraint};
let mut guard = SafetyGuard::new();
// Define workspace boundaries
guard.add_constraint(Constraint::expression(
"workspace_x",
"x >= -0.5 && x <= 0.5"
)?);
// Check if action is safe
if guard.check_action(&action)? {
robot.execute(action)?;
}
Features:
voice-local)On-device speech recognition and wake word detection:
use voice_local::{KyutaiProvider, WakeWordDetector};
let provider = KyutaiProvider::new(config)?;
let detector = WakeWordDetector::new("hey robot")?;
// Process audio stream
if detector.detect(&audio_frame)? {
let command = provider.transcribe(&audio_buffer)?;
execute_command(command)?;
}
Features:
vision-stereo)Depth perception and 3D scene understanding:
use vision_stereo::{StereoCamera, DepthEstimator};
let camera = StereoCamera::new(config)?;
camera.calibrate()?;
let (left, right) = camera.capture()?;
let depth_map = DepthEstimator::compute(&left, &right)?;
let tags = detect_april_tags(&left)?;
Features:
can-transport)Hardware control via CAN bus:
use can_transport::{SlcanTransport, Message};
let transport = SlcanTransport::new("/dev/ttyUSB0")?;
// Send motor command
let msg = Message::new(0x123, &[0x01, 0x02, 0x03])?;
transport.send(&msg)?;
Features:
All crates maintain 100% test coverage on critical paths:
# Run all tests
cargo test --all
# Run with coverage
cargo tarpaulin --out Html
# Run safety-critical tests
cargo test -p safety-guard
# Run benchmarks
cargo bench
Current test status:
safety-guard: 13/13 passingvla-policy: 21/21 passingvoice-local: All doctests passingintent-parser: 1/1 passingunwrap(), expect(), or panic!() in productionResult<T, E>We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Key areas for contribution:
MIT License - see LICENSE for details.
For the original Python implementation for SO-101 arms, see archive/python-so101
18 commits
Rust
82.6%
Python
15.7%
Shell
1.2%