Solo Server
Fastest way to deploy physical AI
CLI for Solo-Server Serving models in the physical world; optimized for on-device operation
Installation
#Choose one of the following for solo-server installation
#1. Install solo server from PyPI python manager
uv pip install solo-server
#2. Install solo server from source
git clone https://github.com/GetSoloTech/solo-server.git
cd solo-server
uv pip install -e .
# Solo commands
solo --help
Quick Installation for Mac (Automated)
For Mac users, we provide an automated installation script that handles all the setup steps:
# Clone the repository
git clone https://github.com/GetSoloTech/solo-server.git
cd solo-server
# Make the installation script executable
chmod +x install_mac.sh
# Run the automated installation
./install_mac.sh
The script will automatically:
- Install uv package manager (version 0.9.3)
- Create a virtual environment with Python 3.12.12
- Set up environment variables for dependencies
- Install solo-server in development mode with fallback handling for mujoco dependencies
After installation, activate the virtual environment:
source solo_venv/bin/activate
Solo Commands:
solo --help
╭─ Commands ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ setup Set up Solo Server environment with interactive prompts and saves configuration to config.json. │
│ robo Robotics operations: motor setup, calibration, teleoperation, data recording, training, and inference │
│ serve Start a model server with the specified model. │
│ status Check running models, system status, and configuration. │
│ list List all downloaded models available in HuggingFace cache and Ollama. │
│ test Test if the Solo server is running correctly. Performs an inference test to verify server functionality. │
│ stop Stops Solo Server services. You can specify a server type with 'ollama', 'vllm', or 'llama.cpp' │
│ Otherwise, all Solo services will be stopped. │
│ download Downloads a Hugging Face model using the huggingface repo id. │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Start server with SML models
# Note that you will need Docker for solo serve
solo setup
solo serve --server ollama --model llama3.2:1b
Interactive Lerobot With Solo Server
Find more details here: Solo Robo Documentation
# Motors (both) → Calibrate (both) → Teleop
solo robo --type lerobot --motors all
solo robo --type lerobot --calibrate all
solo robo --type lerobot --teleop
# Record a new local dataset with prompts
solo robo --type lerobot --record
# Train Diffusion Policy on a recorded dataset and push to Hub
solo robo --type lerobot --train
# Inference with a hub model id (with optional Teleop override)
solo robo --type lerobot --inference
API Reference
Find more details here: OpenAI -> OpenAI API Docs Ollama -> Ollama API Docs
vLLM & llama.cpp (OpenAI Compatible)
# Chat request endpoint
curl http://localhost:5070/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.2",
"messages": [{"role": "user", "content": "Analyze sensor data"}],
"tools": [{"type": "mcp", "name": "VitalSignsMCP"}]
}'
Ollama
# Chat request endpoint
curl http://localhost:5070/api/chat -d '{
"model": "llama3.2",
"messages": [
{
"role": "user",
"content": "why is the sky blue?"
}
]
}'
Configuration
Navigate to config file
.solo_server/config.json
{
"hardware": {
"use_gpu": false,
"cpu_model": "Apple M3",
"cpu_cores": 8,
"memory_gb": 16.0,
"gpu_vendor": "None",
"gpu_model": "None",
"gpu_memory": 0,
"compute_backend": "CPU",
"os": "Darwin"
},
"user": {
"domain": "Software",
"role": "Full-Stack Developer"
},
"server": {
"type": "ollama",
"ollama": {
"default_port": 5070
}
},
"active_model": {
"server": "ollama",
"name": "llama3.2:1b",
"full_model_name": "llama3.2:1b",
"port": 5070,
"last_used": "2025-10-09 11:30:06"
}
}
Contributing
- Fork the repository
- Create feature branch (
git checkout -b feature/name) - Commit changes (
git commit -m 'Add feature') - Push to branch (
git push origin feature/name) - Open Pull Request
Metadata
Release files for solo-server 0.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| solo_server-0.5.2.tar.gz | 71.2 kB | Without provenance | Details for solo_server-0.5.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| solo_server-0.5.2-py3-none-any.whl | Python 3 | none | any | Details for solo_server-0.5.2-py3-none-any.whl |
Total release size: 157.1 kB
Release files / solo_server-0.5.2.tar.gz
| Download URL | solo_server-0.5.2.tar.gz |
|---|---|
| Size | 71.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f1e80cc7107987374796b7f227623e904ff72647f09dc31c72ccdca1453562cd
|
|
BLAKE2b-256 checksum How to use checksums |
2f7a766df2670af2f9595554ee22cf5eadf6a300eb9a1f97396e9950e725bf57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / solo_server-0.5.2-py3-none-any.whl
| Download URL | solo_server-0.5.2-py3-none-any.whl |
|---|---|
| Size | 85.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cde99c47ee7a85a818674f8a4909fde31db28a4f136a25d61f8de6d2cf9832d9
|
|
BLAKE2b-256 checksum How to use checksums |
f4b984f92e387c537954588b8aa0dbc2dc548963c2b598d06aba6af383d22800
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Security for solo-server 0.5.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.