Skip to main content

AutonomyFit

AutonomyFit

CI Python License

AutonomyFit detects local edge-AI hardware and ranks models against memory, latency, throughput, accuracy, power and runtime constraints. The Python package is the decision engine. Model intelligence lives in a separately versioned, signed registry that can update without publishing a new PyPI release.

Install

pip install autonomyfit

Or clone for development:

git clone https://github.com/sylvesterkaczmarek/autonomyfit.git
cd autonomyfit
python -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'

Quick start

autonomyfit scan
autonomyfit recommend --task detection --fps 30 --latency-ms 40

A known Jetson target can be evaluated without having the device attached:

autonomyfit recommend   --hardware-profile jetson-orin-nx-16gb   --fps 200   --latency-ms 5

The current exact YOLO26n / Jetson Orin NX / TensorRT FP16 evidence produces a VERIFIED_FIT at 4.13 ms. Candidates without matching performance evidence remain BENCHMARK_REQUIRED when a performance constraint is requested.

Continuously updated registry

AutonomyFit 0.2 separates software releases from model-data releases:

PyPI package                         Official model registry
------------------------------       ---------------------------------
hardware detection                   model identity and family
constraint and ranking engine        upstream provenance and revision
benchmarking                         licence and compatibility metadata
registry verification client   <---  accuracy/memory evidence
                                     freshness and verification state

A normal recommendation checks the cached registry first. When the cache becomes old, AutonomyFit performs a conditional refresh. A changed official registry is accepted only after Sigstore verification against the repository's registry publishing workflow identity, schema validation, signed freshness checks and local rollback checks.

Inspect or refresh it explicitly:

autonomyfit registry status
autonomyfit registry update

Model additions therefore do not require pip install --upgrade autonomyfit. A PyPI upgrade is needed only when the engine, schema support or client behavior changes.

Offline operation

autonomyfit recommend --offline --task detection

Offline mode uses the last verified cache. If no verified cache exists, it uses the small registry snapshot bundled with the package. Stale data is labelled explicitly rather than silently presented as current.

Clear only downloaded registry data with:

autonomyfit registry clear-cache

The highest trusted registry version is deliberately retained to preserve rollback protection.

See docs/registry.md for the update and trust model.

Registry provenance

Human output identifies the registry source (remote, cache, bundled-fallback or custom) and warns when freshness is degraded. JSON output additionally exposes registry version, generation/expiry timestamps, signature status, model source URL, upstream revision when known, last-checked/last-verified timestamps and licence metadata.

autonomyfit recommend --task detection --json

Fit decisions

Outcome Meaning
VERIFIED_FIT Exact available evidence satisfies the requested constraints.
FEASIBLE Compatibility and memory screening pass with no unverified performance constraint.
BENCHMARK_REQUIRED Compatibility passes, but latency, FPS or power requires target-device evidence.
CONSTRAINT_FAIL A measured or catalogued constraint is violated.
NO_FIT A hard compatibility or memory screen fails.

Unknown performance remains unknown. Measurements from one hardware/runtime/precision tuple are never silently transferred to another.

Model registry

List currently loaded models:

autonomyfit catalog
autonomyfit catalog --task vlm

Registry Schema v2 separates model identity, upstream provenance, modalities, parameters, input information, runtime/precision compatibility, licence, evidence references, verification state and freshness metadata. See docs/catalog.md.

Legacy schema-v1 custom catalogues remain supported:

autonomyfit recommend --catalog examples/custom-models.json --task detection

Custom catalogues are explicitly user-provided and are not treated as official signed registry data.

Local benchmark

Install optional ONNX benchmarking dependencies:

pip install 'autonomyfit[benchmark]'

Benchmark a local ONNX model:

autonomyfit benchmark model.onnx --iterations 100 --warmup 20 -o result.json

For a dynamic single input:

autonomyfit benchmark model.onnx --shape 1,3,640,640

The benchmark reports mean, p50, p95 and p99 latency, derived FPS, provider, input shape and mean sampled power where a supported NVIDIA/Jetson power reader is available.

Security model

The official registry is signed keylessly in GitHub Actions with Sigstore. The client verifies both the artifact signature and the expected GitHub workflow identity. It additionally rejects lower registry versions, rejects changed content that reuses an already trusted version, and checks signed generated_at / expires_at timestamps.

The cache is written atomically. Invalid remote data never replaces a previously valid cache. Network or trust failures fall back to previously verified data or the bundled snapshot with a visible warning.

Stage 1 uses Sigstore rather than a full TUF repository because automated GitHub OIDC signing does not require maintaining long-lived private signing keys. If registry distribution later moves to multiple mirrors or gains managed offline/online signing infrastructure, adopting a full TUF role hierarchy remains a reasonable hardening step.

Evidence and limitations

Current exact performance evidence remains intentionally narrow. The registry can now update independently, but Stage 1 does not yet automatically discover every newly released model. Registry population is still curated. Automated upstream discovery, normalization and approval are the next stage.

Also:

  • a registry fit is not proof that an end-to-end robotic workload meets its deadline
  • published latency does not include every preprocessing, communication or control-loop cost
  • parameter-derived memory values are screening estimates unless explicitly marked published
  • synthetic ONNX execution does not validate task accuracy or safety
  • power depends on clocks, thermal state, power mode, peripherals and workload
  • model weights and runtimes retain their upstream licences and terms

See docs/evidence.md and docs/reproducibility.md.

Development validation

make test
make smoke
python scripts/validate_registry.py registry/source/registry-v2.json

CI tests Python 3.10 through 3.13, builds wheel and sdist distributions, checks package metadata, installs the built wheel and smoke-tests the installed CLI.

Cite

Kaczmarek, S. (2026). AutonomyFit. GitHub.

@software{Kaczmarek_2026_AutonomyFit,
  author = {Sylvester Kaczmarek},
  title  = {{AutonomyFit}},
  year   = {2026},
  url    = {https://github.com/sylvesterkaczmarek/autonomyfit}
}

License

MIT. See LICENSE.

© Sylvester Kaczmarek · https://www.sylvesterkaczmarek.com

Download files

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

Source Distribution

autonomyfit-0.2.0.tar.gz (36.9 kB view details)

Uploaded Source

Built Distribution

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

autonomyfit-0.2.0-py3-none-any.whl (33.2 kB view details)

Uploaded Python 3

File details

Details for the file autonomyfit-0.2.0.tar.gz.

File metadata

  • Download URL: autonomyfit-0.2.0.tar.gz
  • Upload date:
  • Size: 36.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for autonomyfit-0.2.0.tar.gz
Algorithm Hash digest
SHA256 99d1278ac14e5c1d07f4acc81d6952381e9b8ea28f788fcdc9ab6a616f0d5e86
MD5 157ceca5c7abef9b30f5438f7ccb61c5
BLAKE2b-256 91d52bf41c923101cedc7fe8e4e4b94507259f9fa21a54952719409f7ca3e2ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for autonomyfit-0.2.0.tar.gz:

Publisher: release.yml on sylvesterkaczmarek/autonomyfit

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

File details

Details for the file autonomyfit-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: autonomyfit-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 33.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for autonomyfit-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1fd0f0e95edf5d2db52bff05a8de7e6e704bac776070e01f98f180d3d1fc586d
MD5 95fff776c177d8ef61e80b6151eaf445
BLAKE2b-256 fc72aa1ce658ea1c5b8bfac5fc9b3dd1cdbfa53bcc2721b973c37f43d646bc6f

See more details on using hashes here.

Provenance

The following attestation bundles were made for autonomyfit-0.2.0-py3-none-any.whl:

Publisher: release.yml on sylvesterkaczmarek/autonomyfit

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 Sentry Error logging StatusPage Status page