Mitosis is a Rust library and command-line tool designed for running distributed platforms, particularly for transport research. It provides a framework for parallelizing tasks across multiple workers in a controlled, managed environment. It is designed for transport-layer research, but it can be used for any other purpose.
Mitosis consists of three main components:
- Coordinator: Central management service that schedules tasks and tracks execution
- Worker: Task execution nodes that fetch and run jobs
- Client: Interface for submitting tasks, managing users, and monitoring progress
The system uses a user-group-based access control model where users can delegate tasks to groups, which are then executed by workers that have been configured to serve those groups.
You can view the full documentation and guidelines at docs.stack.rs/mitosis.
- Rust 1.76 or later
- PostgreSQL database
- S3-compatible storage (e.g., MinIO)
- Redis (optional, for enhanced monitoring)
Using pre-compiled binaries:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/stack-rs/mitosis/releases/latest/download/mito-installer.sh | sh
From source:
git clone https://github.com/stack-rs/mitosis.git
cd mitosis
cargo build --release
From crates.io:
cargo install mito
Now you can execute the mito
command to enter the interactive client mode or use subcommands directly.
# Enter interactive mode:
mito client -i
# directly execute a command:
mito client tasks submit -- echo "Hello, Mitosis!"
For setting up the whole service (including the Coordinator and the Worker), please refer to our full guidelines.
- Distributed Task Execution: Scale workloads across multiple workers
- Role-Based Access Control: Fine-grained permissions for users and groups
- Tag-Based Worker Selection: Target specific worker capabilities
- Artifact Management: Automatic collection and storage of task outputs
- Interactive Client: User-friendly CLI with both interactive and batch modes
- SDK Support: Rust and Python library for programmatic integration
Mitosis follows a coordinator-worker pattern:
- Client submits tasks to the Coordinator
- Coordinator stores tasks and makes them available to Workers
- Workers poll for tasks, execute them, and report results back
- Results and artifacts are stored and can be retrieved through the Client
- User Guide - Complete documentation
- API Reference - Rust SDK documentation
- Contributing Guide - Development setup and guidelines
- OpenAPI Spec - The API specification for the Coordinator's HTTP endpoints
- Research Computing: Distribute computational workloads across lab resources
- CI/CD Pipelines: Execute build and test tasks on dedicated workers
- Data Processing: Parallel processing of large datasets
- Network Testing: Transport layer protocol evaluation and benchmarking
- General Distributed Computing: Any scenario requiring managed task distribution
- GitHub Issues: Report bugs and request features
- Discussions: Community discussions and Q&A
- Contributing: We welcome contributions! See CONTRIBUTING.md
Licensed under the Apache License 2.0. See LICENSE for details.