Warning
This documentation is actively being updated as the project evolves and may not be complete in all areas.
Setup Direct Mode¶
This guide shows you how to run a Jumpstarter exporter that clients connect to directly over TCP — no controller or Kubernetes cluster required.
Direct mode is useful when you want to expose hardware on one machine to clients on another, without setting up a controller.
Note
Direct mode skips the controller’s lease management. Only one client should connect at a time. For shared, multi-user environments use distributed mode instead.
Instructions¶
Create an Exporter Configuration¶
Unlike distributed mode, you don’t need endpoint or token fields — there
is no controller to register with.
Create example-direct.yaml:
apiVersion: jumpstarter.dev/v1alpha1
kind: ExporterConfig
metadata:
namespace: default
name: example-direct
export:
power:
type: jumpstarter_driver_power.driver.MockPower
hooks:
beforeLease:
script: |
echo "Exporter ready"
j power on
timeout: 30
afterLease:
script: |
j power off
timeout: 30
The hooks section is optional. beforeLease runs once when the exporter
starts (before any client connects), and afterLease runs on shutdown. Hook
scripts can use j commands to interact with the drivers.
Start the Exporter¶
Run the exporter and tell it to listen on a TCP port with --tls-grpc-listener:
$ jmp run --exporter-config example-direct.yaml \
--tls-grpc-listener 0.0.0.0:19090 \
--tls-grpc-insecure
The --tls-grpc-insecure flag disables TLS, which is convenient for local
development. For production use, provide --tls-cert and --tls-key instead.
To require a passphrase from connecting clients, add --passphrase:
$ jmp run --exporter-config example-direct.yaml \
--tls-grpc-listener 0.0.0.0:19090 \
--tls-grpc-insecure \
--passphrase my-secret
Connect a Client¶
$ jmp shell --tls-grpc <HOST>:19090 --tls-grpc-insecure
If the exporter requires a passphrase:
$ jmp shell --tls-grpc <HOST>:19090 --tls-grpc-insecure --passphrase my-secret
Replace <HOST> with the exporter machine’s IP address or hostname. Once
connected, interact with the exporter using j commands:
$ j power on
$ j power off
You can also pass a command directly without opening an interactive shell:
$ jmp shell --tls-grpc <HOST>:19090 --tls-grpc-insecure -- j power on