robot-fleet-connect
Stream your robot's policy decisions to a GROUND CONTROL deployment over WSS — and leave, with a verified purge, at any time.
pip install robot-fleet-connect # after first PyPI publish
pip install ./clients/robot-fleet-connect # from a repo checkout, today
# 1. Mint a guest token (the scope card + consent text come back once):
curl -X POST https://robotfleet.vikramnag.com/ingest/tokens
# 2. Stream — a deterministic simulated G1 decision loop, your own NDJSON,
# or a live ROS2 topic:
robot-fleet-connect --token <TOKEN> --simulate
cat decisions.ndjson | robot-fleet-connect --token <TOKEN> --ndjson
robot-fleet-connect --token <TOKEN> --ros2 --robot-id my_bot
# 3. Leave any time (never budget-blocked); --purge deletes every row you
# streamed and prints the verified counts:
robot-fleet-connect --token <TOKEN> --disconnect --purge
--host http://localhost:8000 points the same commands at a local
make demo stack. Ctrl-C is a graceful close: your data stays (until the
token TTL) and the token keeps working; --disconnect is the explicit
leave.
Consent note: the default host is a PUBLIC demo sandbox — telemetry you stream (robot ids, policy decisions, observations) is visible to other visitors. Do not send anything confidential.
Protocol (Phase 6A wave A, locked): first WS frame {"auth": "<token>"},
then NDJSON batch frames with a {"seq": N} header line; every frame is
ACKed {ack, landed, dropped, duplicates, skew_corrected, reasons[], errors[]} — losses are counted, never silent. Unacked batches are kept and
resent after a reconnect (the server dedups by event id, so a blip never
double-counts), with exponential backoff 500 ms → 8 s plus jitter.
The message-mapping core under robot_fleet_connect/_vendor/gc_ingest_core
is vendored byte-for-byte from the platform's packages/gc_ingest_core
(single source of truth; scripts/sync_vendored_core.py --check fails CI on
drift).
Releasing (PyPI Trusted Publishing)
Releases publish to PyPI via Trusted Publishing (OIDC) — there is no stored
PyPI token anywhere in the repo or CI. The workflow
.github/workflows/publish-client.yml is triggered by a client-v* tag and:
- runs
scripts/sync_vendored_core.py --checkfirst — a drifted vendored core fails the build, so it can never ship; - checks the tag matches the
versioninpyproject.toml; - builds the wheel + sdist from
clients/robot-fleet-connect/; - installs the built wheel in a clean venv across Python 3.10 / 3.11 / 3.12 and
smoke-tests the
robot-fleet-connectconsole script (--help,--version, argument parse + transport generation — the live--simulate→ server path is proven end to end over real TCP intests/phase1/test_phase6b_client_e2e.py); - uploads via
pypa/gh-action-pypi-publishusing the workflow's OIDC identity.
To cut a release once the one-time owner setup below is done: bump version in
pyproject.toml, commit, then tag and push:
git tag client-v0.1.0
git push origin client-v0.1.0
workflow_dispatch runs the build + install matrix as a dry run without
publishing (the publish job is gated on a client-v* tag).
One-time owner setup (gated — not automated here)
The first publish cannot be done by CI alone; the project owner must, on pypi.org:
- register the project name
robot-fleet-connect(or reserve it via a first manual upload), and - add a Trusted Publisher for it: this GitHub repository, workflow filename
publish-client.yml, and environment namepypi.
Until that config exists, the workflow still builds and tests green on every tag — only the final upload step needs the owner's one-time PyPI setup. This is called out explicitly rather than faked: no token is committed, and nothing publishes until the owner wires the trusted publisher.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file robot_fleet_connect-0.1.0.tar.gz.
File metadata
- Download URL: robot_fleet_connect-0.1.0.tar.gz
- Upload date:
- Size: 23.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fc1bccb8c73cc0fbfb29f50df6e8f4c5f502a27c03b676ebe90ddd3f141127b
|
|
| MD5 |
e0ca3482e7dd64cfece88b540681f742
|
|
| BLAKE2b-256 |
aac7b7645b902dbd267843295aa5abfa3c11f9835811f4736875aab3650cfc4a
|
Provenance
The following attestation bundles were made for robot_fleet_connect-0.1.0.tar.gz:
Publisher:
publish-client.yml on vikramnagashoka/robot-fleet-observability-platform
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robot_fleet_connect-0.1.0.tar.gz -
Subject digest:
0fc1bccb8c73cc0fbfb29f50df6e8f4c5f502a27c03b676ebe90ddd3f141127b - Sigstore transparency entry: 2269102459
- Sigstore integration time:
-
Permalink:
vikramnagashoka/robot-fleet-observability-platform@adf83e55ed202885026a829d00804dcb335bb39f -
Branch / Tag:
refs/tags/client-v0.1.0 - Owner: https://github.com/vikramnagashoka
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-client.yml@adf83e55ed202885026a829d00804dcb335bb39f -
Trigger Event:
push
-
Statement type:
File details
Details for the file robot_fleet_connect-0.1.0-py3-none-any.whl.
File metadata
- Download URL: robot_fleet_connect-0.1.0-py3-none-any.whl
- Upload date:
- Size: 23.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13defe2e3bf16eba8eeea310dcd8bc53f2db1a49908a4c743c8ca886e39eb834
|
|
| MD5 |
b5431bbc33472ec000fc252bb41db38b
|
|
| BLAKE2b-256 |
105806c67ec1fc2a3b13b36cf37f20697ab4302fb3540115ea74bd4b4c0028fe
|
Provenance
The following attestation bundles were made for robot_fleet_connect-0.1.0-py3-none-any.whl:
Publisher:
publish-client.yml on vikramnagashoka/robot-fleet-observability-platform
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robot_fleet_connect-0.1.0-py3-none-any.whl -
Subject digest:
13defe2e3bf16eba8eeea310dcd8bc53f2db1a49908a4c743c8ca886e39eb834 - Sigstore transparency entry: 2269102762
- Sigstore integration time:
-
Permalink:
vikramnagashoka/robot-fleet-observability-platform@adf83e55ed202885026a829d00804dcb335bb39f -
Branch / Tag:
refs/tags/client-v0.1.0 - Owner: https://github.com/vikramnagashoka
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-client.yml@adf83e55ed202885026a829d00804dcb335bb39f -
Trigger Event:
push
-
Statement type: