Appearance
Test with Balto on a bus
Once your payload is on a bus, Balto shows it the way Mission Control sees it: its registration, its telemetry, the commands MC sends it, and the answers. Use it instead of hand-written curl calls.
Without a bus, use Payload Lab. This page is for a payload on a bench bus or a flight bus.
Before you start
- Install Balto and sign in: Set up a test bench.
- Use Balto 5.1.0-rc.21 or later. Check with
balto version; update withbalto update. - Your Urban Sky account needs payload read permission to look, and payload write permission to adopt, enable and send. Ask your organization's admin.
Balto works the same whether your payload is on a Husky bus on your desk or on a cloud bench bus. Balto reaches MC over the Internet in both cases; it does not need to be on the payload's network.
The CLI
| Task | Command |
|---|---|
| See the buses you can reach | balto buses |
| A bus's payloads and their state | balto payloads list --bus <bus> |
| Adopt a payload | balto payloads adopt <payload> |
| Turn commands on, or off | balto payloads enable-commands <payload> · ... --off |
| Send a command | balto payloads send <payload> <command> [key=value ...] [--request-id ID] |
| What MC sent, newest first | balto payloads audit <payload> [--limit N] [--request-id ID] |
| Watch traffic both ways, live | balto trace <payload> --follow |
| Only what your payload sent | balto trace <payload> --up --follow |
| Only what MC sent | balto trace <payload> --down --follow |
| Remove a test registration | balto payloads retire <payload> |
<payload> is the payload's ID or serial. <bus> is a bus name or hardware ID. The payloads commands print JSON, so you can pipe them to jq. balto trace reads the last 10 minutes first (--minutes, up to 1440) and prints one row per source each 30 seconds (--every for one row per message, --json for raw rows).
balto help all lists every command. balto docs prints this guide as it was when your Balto was built.
The app
bash
balto uiOpens Balto in your browser. Open your bus from the sidebar, then choose the Payloads tab:
- Your payload, its status, and whether commands are on.
- Its latest telemetry values.
- Its commands, as forms built from your command manifest. Engineering commands (
audience: "AUDIENCE_ENGINEERING", see Manifest rules) appear only for Urban Sky staff with the payload engineering permission. - Its video, if MC receives a stream for it.
Every read, command and picture on the Payloads tab goes through Mission Control, as an operator's would. Balto adds no checks of its own: if MC accepts a command, Balto sends it.
On a cloud bench bus, the same app pairs the link, runs balto test, and connects your adapter with a live traffic view.
A typical session
bash
balto payloads list --bus uskybus-8901fc # is ENV-001 there? discovered?
balto trace ENV-001 --up --follow # telemetry arriving every 2 s?
balto payloads adopt ENV-001 # adopt
balto payloads enable-commands ENV-001
balto payloads send ENV-001 sensor.set_sample_period seconds=5
balto payloads audit ENV-001 --limit 1 # the ack MC recorded
balto trace ENV-001 --up --minutes 2 # sensor.sample_period_s now 5?What Balto does not show yet
- Pushed logs and metrics. Lines your payload sends to the bus on port
4318go to Urban Sky's monitoring. Balto's Logs area does not list them yet. Check your side withGET /api/v1/payload/statuson the bus (see Send logs and metrics). - Your payload's own files. Balto's Logs area reads a bus's own logs. Copying a payload's log files is for Urban Sky staff only.
Urban Sky staff only
These need staff permissions. They are listed so you know what support can do for you:
| Command | What it does |
|---|---|
balto forward <bus> --payload <payload> [port] | Opens a port of your payload on the staff member's computer, through the bus. |
balto ssh <bus> --payload <payload> --login USER | SSH to your payload through the bus. Needs a declared ssh service. |
balto dev push --bus <bench> -- <command> | Runs payload software on a laptop as if it were plugged into a cloud bench bus. |
balto certify --bus <bench> --device <key> | Checks a payload against the bus's contract, parser and announcer. |
balto local …, balto ui --local | A bus on a cable to the staff member's computer, with no ops. |
balto logs watch payloads <bus> on | Copies a payload's reviewed log units to the staff member's computer. |
To let support reach your payload with balto ssh --payload, declare the service in your announcement: "services": [{ "name": "ssh", "port": 22, "protocol": "ssh" }]. A declaration grants no access by itself.