Jumpstarter is a free and open source test automation framework. It bridges the gap between embedded development workflows and deployment environments, enabling consistent automated testing across real hardware and virtual environments with CI/CD integration. Every interface is programmatic, so human developers, test scripts, CI pipelines, and AI agents interact with devices through the same APIs.
Highlights
- ๐งช Unified Testing - One tool for physical and virtual devices under test
- ๐ Hardware Abstraction - Control UART, CAN, SPI, GPIO, power, and USB through drivers
- ๐ Python-Powered - Integrate with PyTest and Python's testing ecosystem
- ๐ Collaborative - Share and securely lease test hardware across teams
- โ๏ธ Automation Ready - Same APIs for humans, test scripts, CI pipelines, and AI agents
- ๐ป Cross-Platform - Supports Linux and macOS
Repository Structure
This monorepo contains all Jumpstarter components:
| Directory | Description |
|---|---|
python/ |
Python client, CLI, drivers, and testing framework |
controller/ |
Kubernetes controller and operator (Jumpstarter Service) |
protocol/ |
gRPC protocol definitions (protobuf) |
e2e/ |
End-to-end testing infrastructure |
Quick Start
Install the CLI
pip install --extra-index-url https://pkg.jumpstarter.dev/ jumpstarter-cli
Or install all Python components:
pip install --extra-index-url https://pkg.jumpstarter.dev/ jumpstarter-all
Deploy the Service
To install the Jumpstarter Service in your Kubernetes cluster, see the Service Installation documentation.
Components
Python Client & Drivers (python/)
The Python implementation provides:
jmpCLI tool for interacting with hardware- Client libraries for test automation
- Hardware drivers for various devices
- Testing framework integration
See python/README.md for details.
Jumpstarter Service (controller/)
The Kubernetes-native service that provides:
- Centralized hardware management
- Client and exporter routing
- Authentication and authorization
- Multi-tenant support
Prerequisites:
- Kubernetes (version must match the k8s.io dependencies in controller/go.mod)
- kubectl (version matching the k8s.io dependencies in controller/go.mod)
See controller/README.md for deployment instructions.
Protocol (protocol/)
The gRPC-based communication layer that enables:
- Unified interface for virtual and physical hardware
- Secure communication over HTTPS
- Tunneling support for Unix sockets, TCP, and UDP
- Flexible topology with direct or routed connections
See protocol/README.md for details.
End-to-End Tests (e2e/)
Comprehensive testing infrastructure for the entire Jumpstarter stack:
setup-e2e.sh- One-time environment setup (auto-installs bats libraries on macOS)run-e2e.sh- Quick test runner for iterationsaction.yml- GitHub Actions composite action for CI/CD- Full integration tests covering authentication, exporters, and clients
Run e2e tests locally:
# First time setup make e2e-setup # Run tests (repeat as needed) make e2e # or: make e2e-run # Or full setup + run in one command make e2e-full # Clean up e2e environment (delete cluster, certs, etc.) make e2e-clean
Development
Prerequisites
- Python (for Python components, see .py-version)
- Go (for controller, see .go-version)
- Docker/Podman (for container builds)
- kubectl (version matching the k8s.io dependencies in controller/go.mod)
Building
# Build all components make build # Build specific components make build-python # Python packages make build-controller # Controller binary make build-protocol # Generate protocol code # Run tests make test # Run end-to-end tests make e2e-setup # First time only make e2e # Run tests make e2e-clean # Clean up
Documentation
Jumpstarter's documentation is available at jumpstarter.dev.
Contributing
Jumpstarter welcomes contributors of all levels of experience! See the contributing guide to get started.
Community
License
Jumpstarter is licensed under the Apache 2.0 License (LICENSE or https://www.apache.org/licenses/LICENSE-2.0).