Python 包需额外指定 pkg.jumpstarter.dev 索引源;使用 Jumpstarter Service 需自备 Kubernetes 集群和匹配版本的 kubectl;Python 与 Go 版本需分别参照 .py-version 和 .go-version 文件。
jumpstarter
jumpstarter-devApache-2.0活跃维护把真实或虚拟硬件接入 CI/CD 流水线,支持本地远程、人工或自动化测试,解决嵌入式与硬件在环场景下难以持续集成的问题。
Hardware testing for the software world. Real or virtual, local or remote, human, automated or agentic.
pip install --extra-index-url https://pkg.jumpstarter.dev/ jumpstarter-cliREADME 未说明具体硬件规格;支持 Linux 和 macOS,控制器需部署在 Kubernetes 集群。
开源测试自动化框架,统一管理真实与虚拟硬件的自动化测试
把真实或虚拟硬件接入 CI/CD 流水线,支持本地远程、人工或自动化测试,解决嵌入式与硬件在环场景下难以持续集成的问题。
核心能力
- 用驱动统一控制 UART、CAN、SPI、GPIO、电源和 USB
- 同一套 API 供开发者、测试脚本、CI 和 AI 代理调用
- 支持 PyTest 与 Python 测试生态集成
- 可跨团队安全共享和租用测试硬件
- 通过 Kubernetes 服务集中管理硬件与路由
容易踩的坑
- v0.9.0最新正式版2026-08-18 · 2026-08-18 08:01 UTC
What's New
Installation & Deployment
- Operator-only deployment: Helm charts have been fully removed and operator-based installation is now the sole supported path for Jumpstarter services.
- Configurable installer paths:
INSTALL_DIRandVENV_DIRcan now be set via environment variables for greater flexibility. - MicroShift bootc image: A new container image for MicroShift-based deployments is now available.
Lifecycle & Admin Management
- Lifecycle hooks (Admin): Added support for
beforeLeaseandafterLeasehooks to enable automated device initialization, firmware flashing, and hardware cleanup. Jumpstarter hooks support custom interpreters (e.g., Python, shell), real-time log streaming, and configurable failure handling (warn,endLease,exit). - Lease tags: Leases now support user-defined metadata tags, making it easier to organize and filter leases in multi-team environments.
- Access policy descriptions: Access policy rules now support a description field for documentation purposes.
- Exporter enabled/disabled (JEP-0014 Phase 1): A new
spec.enabledboolean field on the Exporter CRD allows administrators to mark exporters as disabled without deleting them. Disabled exporters are excluded from lease scheduling by default; the--allow-disabledCLI flag (orspec.allowDisabledon Lease) permits investigation of disabled exporters when needed. - Deprecated label warnings: Operators can now configure
deprecatedLabelsin the Jumpstarter config to mark label keys as deprecated. When clients use deprecated labels in lease or exporter queries, they receive warning messages with the configured migration guidance.
Drivers & Capabilities
- MCP Server: with jmp mcp serve you can integrate your existing AI agents in jumpstarter, enabling leasing, connecting, and using any existing drivers configured on your devices.
This release introduces 9 new driver packages and significant updates across the existing driver ecosystem:
-
Android ADB & Emulator drivers (
jumpstarter-driver-android): Enables Android device testing through ADB tunneling and emulator lifecycle management. The ADB driver provides seamless tunneling of ADB connections to remote devices, while the emulator driver handles full emulator lifecycle (start, stop, snapshot) with integrated ADB tunneling for CI/CD workflows. -
DUT Network Isolation driver (
jumpstarter-driver-dut-network): Provides full network isolation of devices under test. Creates an isolated bridge network with DHCP and DNS services via dnsmasq, IP aliasing for address management, a local NTP responder, egress and ingress traffic filtering rules, and live tcpdump streaming for packet capture and debugging. -
mitmproxy driver (
jumpstarter-driver-mitmproxy): Adds HTTP and HTTPS interception capabilities for testing. Supports backend mocking to simulate API responses, traffic recording for replay and analysis, and passthrough mode for selective interception. Useful for testing network-dependent applications without relying on live services. -
NOYITO Relay driver (
jumpstarter-driver-noyito-relay): Power control driver for NOYITO USB relay boards. Provides a simple and affordable way to control device power using com
- v0.9.0-rc.2pre-release2026-08-10 · 2026-08-10 07:13 UTC
查看更新说明
What's Changed
- [Backport release-0.9] ride4: add support for fastboot erase by @jumpstarter-backport-bot[bot] in https://github.com/jumpstarter-dev/jumpstarter/pull/858
- [Backport release-0.9] docs: improve standalone bootc installation documentation by @jumpstarter-backport-bot[bot] in https://github.com/jumpstarter-dev/jumpstarter/pull/861
- [Backport release-0.9] fix(dutlink): remove implicit power off from reset() and close() by @jumpstarter-backport-bot[bot] in https://github.com/jumpstarter-dev/jumpstarter/pull/879
- fix: force close the socket when cleaning up http thread (#889) by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter/pull/891
- [Backport release-0.9] feat: strip hidden labels from exporter display output (#892) by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter/pull/901
- [Backport release-0.9] feat: add enabled field to Exporter CRD and allowDisabled to Lease (JEP-0014 Phase 1) by @bennyz in https://github.com/jumpstarter-dev/jumpstarter/pull/969
- fix: backport retry transient gRPC failures in status reports (#911) to release-0.9 by @bennyz in https://github.com/jumpstarter-dev/jumpstarter/pull/970
- [Backport release-0.9] feat: warn users when selector or exporter labels are deprecated (#905) by @bennyz in https://github.com/jumpstarter-dev/jumpstarter/pull/971
- [Backport release-0.9] fix: unblock post-shell status probe when connection is lost by @jumpstarter-backport-bot[bot] in https://github.com/jumpstarter-dev/jumpstarter/pull/982
- [Backport release-0.9] feat: add --insecure-tls flags to config creation CLI by @jumpstarter-backport-bot[bot] in https://github.com/jumpstarter-dev/jumpstarter/pull/983
- [Backport release-0.9] fix: raise MissingDriverError for driver allow-list mismatches by @jumpstarter-backport-bot[bot] in https://github.com/jumpstarter-dev/jumpstarter/pull/984
- [Backport release-0.9] fix: add logging to authentication errors in controller and router (#812) by @bennyz in https://github.com/jumpstarter-dev/jumpstarter/pull/985
- chore: bump operator version to 0.9.0-rc.2 by @bennyz in https://github.com/jumpstarter-dev/jumpstarter/pull/990
Full Changelog: https://github.com/jumpstarter-dev/jumpstarter/compare/v0.9.0-rc.1...v0.9.0-rc.2
- v0.9.0-rc.1pre-release2026-06-26 · 2026-06-26 13:45 UTC
查看更新说明
What's New
Installation & Deployment
- Operator-only deployment: Helm charts have been fully removed and operator-based installation is now the sole supported path for Jumpstarter services.
- Configurable installer paths:
INSTALL_DIRandVENV_DIRcan now be set via environment variables for greater flexibility. - MicroShift bootc image: A new container image for MicroShift-based deployments is now available.
Lifecycle & Admin Management
- Lifecycle hooks (Admin): Added support for
beforeLeaseandafterLeasehooks to enable automated device initialization, firmware flashing, and hardware cleanup. Jumpstarter hooks support custom interpreters (e.g., Python, shell), real-time log streaming, and configurable failure handling (warn,endLease,exit). - Lease tags: Leases now support user-defined metadata tags, making it easier to organize and filter leases in multi-team environments.
- Access policy descriptions: Access policy rules now support a description field for documentation purposes.
Drivers & Capabilities
This release introduces 9 new driver packages and significant updates across the existing driver ecosystem:
-
Android ADB & Emulator drivers (
jumpstarter-driver-android): Enables Android device testing through ADB tunneling and emulator lifecycle management. The ADB driver provides seamless tunneling of ADB connections to remote devices, while the emulator driver handles full emulator lifecycle (start, stop, snapshot) with integrated ADB tunneling for CI/CD workflows. -
DUT Network Isolation driver (
jumpstarter-driver-dut-network): Provides full network isolation of devices under test. Creates an isolated bridge network with DHCP and DNS services via dnsmasq, IP aliasing for address management, a local NTP responder, egress and ingress traffic filtering rules, and live tcpdump streaming for packet capture and debugging. -
mitmproxy driver (
jumpstarter-driver-mitmproxy): Adds HTTP and HTTPS interception capabilities for testing. Supports backend mocking to simulate API responses, traffic recording for replay and analysis, and passthrough mode for selective interception. Useful for testing network-dependent applications without relying on live services. -
NOYITO Relay driver (
jumpstarter-driver-noyito-relay): Power control driver for NOYITO USB relay boards. Provides a simple and affordable way to control device power using commodity USB relay hardware, implementing the standard Jumpstarter power interface for on/off/cycle operations. -
OBD-II driver (
jumpstarter-driver-obd): Vehicle diagnostics driver using the OBD-II protocol via ELM327 adapters. Allows reading diagnostic trouble codes, live sensor data, and vehicle information for automotive testing and validation workflows. -
Renode driver (
jumpstarter-driver-renode): Integration with the Renode embedded systems emulator. Enables simulation of microcontroller targets for testing firmware without physical hardware, supporting serial communication, power control, and machine management within Jumpstarter exporters. -
SOME/IP driver (
jumpstarter-driver-someip): Wraps the opensomeip Python binding to provide SOME/IP (Scalable service-Oriented MiddlewarE over IP) protocol operations.
- v0.8.1Developer Preview2026-03-26 · 2026-03-26 14:14 UTC
查看更新说明
Jumpstarter v0.8.1 — Release notes
This release begins with version v0.8.1, as version v0.8.0 was accidentally released previously and cannot be undone.
What's new
- Operator-first installation: Helm-based service installs are now deprecated; operator installs are the recommended and supported path for production and new environments.
- OCI-based flashing improvements: Improved
oci://handling, private registry authentication, and more robust remote flashing behavior with retries and timeouts. - Sparse and partition workflows: Improved sparse image support; through
flsandfastboot, theflashersandridesx4drivers can now flash sparse images (simg) encapsulated in OCI artifacts, properly built .simg files can improve flashing times by x2-x10 by avoiding don't care areas in the images. - Authentication and login UX: Continued improvements to simplified login flows and operator-managed endpoint behavior.
- Platform growth: Monorepo transition completed in this release cycle, featuring ongoing operator and driver refinements and more robust CI.
- Monorepo: Python packages, protocol, Kubernetes operator, and automation are now in a single repository (UV workspace under
python/). - CLI & auth: Simplified
jmp login, default client selection after OIDC login, and various auth UX and configuration fixes.
Driver updates
The table below summarizes driver-level changes in
v0.8.1.Status = New driverindicates the package was added during the 0.8 release cycle.Driver Status Notable updates in 0.8 line bleNew driver Added BLE stream driver and fixed console behavior ssh-mitmNew driver Added SSH MITM driver; evolved architecture and compatibility flashersUpdated Added --no-power-offto flashers; chunk long credentials over serialhttpUpdated Tracked rename/delete/copy operations; removed created HTTP/TFTP files by default iscsiUpdated Addressed review fixes; added explicit requestsdependencynetworkUpdated noVNC updates ( encryptoption, documentation, and coverage improvements)opendalUpdated Improved RideSX decompressed-file cleanup and remote hash behavior probe-rsUpdated Added speed configuration option pyserialUpdated Increased StreamReaderlimit; addeddisable_hupcland--no-outputsupportqemuUpdated Improved vsockavailability check; added disk resize supportridesxUpdated Added OCI flashing support and reliability improvements shellUpdated Added per-method descriptions/timeouts and shared method infrastructure sshUpdated stream_asyncnow works as an async context manager; client refinementstftpUpdated Removed created files by default for cleanup consistency tmtUpdated Adjusted default reboot behavior and added --feeling-safesupportubootUpdated Improved error formatting and timeout forwarding in run_command()vncUpdated New VNC driver line updates and noVNC encryptsupportInstallation
Installing the Jumpstarter service on Kubernetes or OpenShift should be done via the Jumpstarter Operator. The operator reconciles a
Jumpstartercustom resource (operator.jumpstarter.dev/v1alpha1) and manages the controller, router, login endpoints, TLS integration with cert-manager, and related networking.Documentation
Example
kubectl apply -f https://github.com/jumpstarter-dev/jumpstarter/releases/download/v0.8.1/operator-installer.yamlContributors
We would like to thank all our contributors, with a special sho
- v0.8.1-rc.1pre-release2026-02-10 · 2026-02-10 19:14 UTC
查看更新说明
What's Changed
(this changelog spans the repo migration from
jumpstarter-dev/jumpstarter-python/jumpstarter-dev/jumpstarter-controllerinto the new monorepojumpstarter-dev/jumpstarter)Legacy repo (
jumpstarter-python) changes afterc5d38de(v0.7.4)- OIDC: allow providing a custom callback port by @evakhoni in https://github.com/jumpstarter-dev/jumpstarter-python/pull/788
- ridesx: improve error for ridesx flashing by @bennyz in https://github.com/jumpstarter-dev/jumpstarter-python/pull/790
- Add compressed image support for QEMU driver by @evakhoni in https://github.com/jumpstarter-dev/jumpstarter-python/pull/789
- Add disk resize support for QEMU driver by @evakhoni in https://github.com/jumpstarter-dev/jumpstarter-python/pull/793
- cli: add auth status by @bennyz in https://github.com/jumpstarter-dev/jumpstarter-python/pull/791
- flashers: support flashing from OCI registries by @bennyz in https://github.com/jumpstarter-dev/jumpstarter-python/pull/795
- cli: add jmp login --force by @bennyz in https://github.com/jumpstarter-dev/jumpstarter-python/pull/797
- ridesx: support http and insecure https by @bennyz in https://github.com/jumpstarter-dev/jumpstarter-python/pull/783
- Revert "ridesx: support http and insecure https" by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter-python/pull/802
- Nvdemux serial support by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter-python/pull/798
- console: do not reset console on exist by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter-python/pull/804
- quick fix qemu resize command by @evakhoni in https://github.com/jumpstarter-dev/jumpstarter-python/pull/808
Legacy controller repo (
jumpstarter-controller) changes afterv0.7.1(5cedce7)- add online field to Exporter by @michalskrivanek in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/154
- log authentication error on exporter registration as Info by @michalskrivanek in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/155
- add missing nodeport option by @bennyz in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/156
- Support running additional routers by @NickCao in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/157
- Fixup validation of oidc configuration by @NickCao in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/159
- Fix typo in exporter online message by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/161
- Offline exporters should be Pending and not Unsatisfiable by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/166
- support future leases, calculate effective begin/end/duration lease times by @michalskrivanek in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/168
- Add the operator in deploy/operator by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/169
- Operator: initial implementation by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/170
- Fix crd generation to put files in the right directory by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/171
- Add a backwards compatible only_active flag on list leases by @michalskrivanek in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/172
- operator: ingress support by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/176
- operator: implement routes and api detection by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/177
- fix race condition in beginlease test by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/178
- Fix operator container building by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/179
- e2e test the operator by @mangelajo in https://github.com/jumpstarter-dev/jumpstarter-controller/pull/180
- fix labe
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Jumpstarter
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
Upgrade the CLI
jmp self update
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.
See the Makefile for available targets.
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).