Skip to main content

Flywheel customer CLI — authenticate and bulk-upload field data to your workspace.

Project description

flywheel-cli

The Flywheel customer CLI: authenticate and bulk-upload field data straight to your workspace's storage bucket, then let the platform ingest poller pull frames into your corpus.

PyPI distribution: ydderd-flywheel-cli · Homebrew formula: flywheel-cli · command: flywheel. (The clean flywheel-cli PyPI name was taken, so the distribution carries the ydderd- prefix; the import package flywheel_cli, the flywheel command, and the brew name are unaffected.)

Why this is a separate package

The CLI talks to the Flywheel API purely over HTTP (and to R2 over S3). It shares no Python code with the backend, so it ships with a tiny dependency set — httpx + boto3 — instead of the full server stack (torch, opencv, fastapi, …). That keeps the install small and avoids shipping the backend's AGPL detector to customers.

Install

brew install ydderd/flywheel/flywheel-cli
# or:
pipx install ydderd-flywheel-cli
flywheel --help

Usage

flywheel auth login                       # opens a browser; a workspace admin approves
flywheel auth whoami                      # confirm tenant
flywheel upload ./your-data --scan        # bulk upload + trigger ingest
flywheel ingest status                    # ingest ledger stats

For headless/CI use, skip the browser with a token minted by a workspace admin: flywheel auth login --token <fw_cli_…>.

Config is stored at ~/.flywheel/config.json. Auth precedence: FLYWHEEL_CLI_TOKEN env > config file.

Developer notes

These knobs exist for Flywheel developers and are intentionally hidden from customer-facing help and docs:

  • --api-url <url> on flywheel auth login — persist a non-production API base URL to the config (e.g. a local API). Hidden via argparse.SUPPRESS.
  • FLYWHEEL_API_URL env — override the API base per-invocation. Takes precedence over the config file.

Precedence for the API base URL: FLYWHEEL_API_URL env > api_url in config > default (https://flywheeling.fly.dev/api — swap to a custom domain once one is live).

Point the CLI at a local backend during development:

FLYWHEEL_API_URL=http://localhost:8000 flywheel auth whoami
# or persist it:
flywheel auth login --token <fw_cli_…> --api-url http://localhost:8000

Local development

cd cli
uv sync
uv run flywheel --help
uv run pytest

Releasing (PyPI + Homebrew)

PyPI is the source of truth; the Homebrew formula wraps the published PyPI sdist.

1. Publish to PyPI — via GitHub Actions (Trusted Publishing, no token)

The .github/workflows/publish-cli.yml workflow builds and publishes over OIDC. Cut a release by pushing a namespaced tag from the monorepo default branch:

git tag cli-v0.1.0 && git push origin cli-v0.1.0

The PyPI project is ydderd-flywheel-cli, published from ydderd/flywheel via the pypi environment. (First publish activates the "pending" Trusted Publisher and creates the project.)

2. Update the Homebrew tap formula

After the PyPI release exists, point release.sh at your tap checkout — with SKIP_PUBLISH=1 it skips the upload and only fetches the published sdist's url/sha256, rewrites the formula, and regenerates its Python resource blocks:

SKIP_PUBLISH=1 \
FORMULA_PATH=/path/to/homebrew-flywheel/Formula/flywheel-cli.rb \
  cli/scripts/release.sh

Then commit + push the tap. Customers install with:

brew install ydderd/flywheel/flywheel-cli

release.sh can also publish to PyPI itself (UV_PUBLISH_TOKEN=pypi-… cli/scripts/release.sh) if you prefer a token-based local release over the GitHub Action.

Bumping a release: change version in pyproject.toml, push a new cli-v* tag, then re-run step 2.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ydderd_flywheel_cli-0.2.2.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ydderd_flywheel_cli-0.2.2-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file ydderd_flywheel_cli-0.2.2.tar.gz.

File metadata

  • Download URL: ydderd_flywheel_cli-0.2.2.tar.gz
  • Upload date:
  • Size: 17.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ydderd_flywheel_cli-0.2.2.tar.gz
Algorithm Hash digest
SHA256 f9670a20f890edf267a82966bbafcde83ba919601d034cddddde9c23659b7c68
MD5 2d5ab9d48eb1db4dc34a5073d2ced34e
BLAKE2b-256 91bb734cbe4b5ce87b53bedb8a9e80a71fd76ebe15913d3a3c9d3b7ba8e314a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for ydderd_flywheel_cli-0.2.2.tar.gz:

Publisher: publish-cli.yml on ydderd/flywheel

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ydderd_flywheel_cli-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for ydderd_flywheel_cli-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fe279fae237cce0ba30eb83876ff6f13921a67ff63e0a9a4954d04bad8801735
MD5 8350fdf4b88a8c16af731e49f694195b
BLAKE2b-256 349dfa8ffb28bb41800e183d146627a0f893bbcd51268020b7de0f996f83232a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ydderd_flywheel_cli-0.2.2-py3-none-any.whl:

Publisher: publish-cli.yml on ydderd/flywheel

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page