name: cli-commands description: "Use for dora CLI command questions. Triggers on: dora run, dora build, dora start, dora stop, dora new, dora up, dora destroy, dora list, dora ps, dora logs, dora check, dora graph, dora daemon, dora coordinator, CLI命令, 命令行, 运行数据流, 构建, 启动, 停止" globs: ["/dataflow.yml", "/dataflow.yaml"] source: "https://dora-rs.ai"
Dora CLI Commands
Complete reference for the dora command-line interface
Installation
# Via pip (recommended)
pip install dora-rs-cli
# Via cargo
cargo install dora-cli
# Via shell installer (macOS/Linux)
curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/dora-rs/dora/releases/latest/download/dora-cli-installer.sh | sh
Command Overview
| Command | Description |
|---|---|
dora new |
Create new dataflow, node, or operator |
dora build |
Build nodes in a dataflow |
dora run |
Run dataflow (standalone mode) |
dora up |
Start coordinator and daemon |
dora start |
Start dataflow on daemon |
dora stop |
Stop running dataflow |
dora list / dora ps |
List running dataflows |
dora logs |
View node logs |
dora destroy |
Stop coordinator and daemon |
dora check |
Check system status |
dora graph |
Generate dataflow visualization |
Creating Projects
New Dataflow
# Create new dataflow project
dora new my_project --kind dataflow
# With Python language
dora new my_project --kind dataflow --lang python
# With Rust language
dora new my_project --kind dataflow --lang rust
New Node
# Create new Python node
dora new my_node --kind node --lang python
# Create new Rust node
dora new my_node --kind node --lang rust
New Operator
# Create new operator
dora new my_operator --kind operator --lang rust
Building
# Build all nodes in dataflow
dora build dataflow.yml
# Build with uv (faster Python packages)
dora build dataflow.yml --uv
# Build specific node
dora build dataflow.yml --node camera
Running Dataflows
Standalone Mode (dora run)
# Run dataflow directly (no daemon)
dora run dataflow.yml
# Run with uv for Python packages
dora run dataflow.yml --uv
# Run from URL
dora run https://example.com/dataflow.yml
Daemon Mode
# Step 1: Start coordinator and daemon
dora up
# Step 2: Start dataflow
dora start dataflow.yml
# Step 3: Check status
dora list
# Step 4: Stop dataflow
dora stop <dataflow-id>
# Step 5: Shutdown daemon
dora destroy
Monitoring
List Running Dataflows
# List all running dataflows
dora list
# or
dora ps
View Logs
# View logs for a node
dora logs <dataflow-id> <node-id>
# Follow logs (like tail -f)
dora logs <dataflow-id> <node-id> --follow
Check System Status
# Check dora system status
dora check
# or
dora system status
Visualization
# Generate Mermaid diagram
dora graph dataflow.yml
# Output to file
dora graph dataflow.yml > graph.md
Example output:
flowchart TB
camera[camera]
detector[detector]
plot[plot]
camera -- image --> detector
camera -- image --> plot
detector -- bbox --> plot
Distributed Mode
Coordinator
# Start coordinator on custom port
dora coordinator --port 6012
Daemon
# Connect daemon to remote coordinator
dora daemon --coordinator-addr 192.168.1.100:6012
Remote Dataflow
# dataflow.yml with deployment config
nodes:
- id: camera
path: camera_node.py
_unstable_deploy:
machine: robot-1
- id: processor
path: processor_node.py
_unstable_deploy:
machine: server-1
Common Workflows
Development Workflow
# 1. Create project
dora new my_robot --kind dataflow
# 2. Edit dataflow.yml and create nodes
# 3. Build
dora build dataflow.yml --uv
# 4. Run and test
dora run dataflow.yml --uv
# 5. Stop with Ctrl+C
Production Workflow
# 1. Start services
dora up
# 2. Deploy dataflow
dora start dataflow.yml
# 3. Monitor
dora list
dora logs <id> <node>
# 4. Update (stop and restart)
dora stop <id>
dora start dataflow.yml
# 5. Shutdown
dora destroy
Remote Dataflow
# On coordinator machine
dora coordinator
# On each robot/server
dora daemon --coordinator-addr <coordinator-ip>:6012
# Deploy dataflow
dora start dataflow.yml
Environment Variables
| Variable | Description |
|---|---|
DORA_COORDINATOR_ADDR |
Coordinator address |
DORA_DAEMON_ADDR |
Daemon address |
DORA_OTLP_ENDPOINT |
OpenTelemetry endpoint |
DORA_JAEGER_TRACING |
Enable Jaeger tracing |
Troubleshooting
Common Issues
"Daemon not running"
# Start the daemon
dora up
"Port already in use"
# Kill existing processes
dora destroy
# Then restart
dora up
"Build failed"
# Check build output
dora build dataflow.yml --uv 2>&1 | tee build.log
Debug Mode
# Run with debug output
RUST_LOG=debug dora run dataflow.yml
Related Skills
- dataflow-config - YAML configuration
- node-api-rust - Rust node development
- node-api-python - Python node development