Skip to main content

fherma-runner

Takes measurement jobs from a FHERMA platform and reports what happened.

uv tool install fherma-runner        # or: pipx install fherma-runner
fherma-runner --api https://fherma.io --name bench-01 --token fhr_...

A command line tool belongs in an environment of its own, and on macOS it has no choice: the system Python has no pip on the path at all, and Homebrew's is marked externally managed so installing into it is refused. uv tool and pipx both make that environment and leave fherma-runner on the path, which is the part pip install --user does not do.

Neither installed? One line, and nothing else on the machine changes:

curl -LsSf https://astral.sh/uv/install.sh | sh

Check what you got:

$ fherma-runner --version
fherma-runner 0.2.0 · python 3.13.4

The token comes from the platform, is good for an hour and is spent once: the first start exchanges it for this machine's own key and keeps that in ~/.fherma-runner. Every start after the first needs no token.

Every start says what the machine is now, so a server that was re-provisioned is matched on what it is rather than on what it was.

What it needs

An interpreter and docker. There are no dependencies: everything here ships with Python, and docker is called as a command.

What it declares

Hardware, and only hardware — cores, memory, architecture, CPU features, an accelerator and its driver. It does not declare libraries or images, because the environment a job runs in is not a property of a machine: it arrives with the job, pinned to a digest.

fherma-runner --describe

prints what it would report, and stops.

What it does with a job

jobs/<id>/
├── bundle/     the specification's bundle, unpacked
├── solution/   the repository at the commit, and its build
└── points/
    └── p000/   one point at a time, deleted once reported

Per point: the bundle makes the cases, the solution answers them, the bundle judges the answers. Three containers, and the solution is never given the directory holding the expected answers.

Options

--api           where the platform is                  FHERMA_API
--name          what to call this machine              FHERMA_RUNNER_NAME
--token         an invitation, spent once for a key
--interval      seconds between polls                  3
--once          take one assignment, then stop
--describe      print what this machine is, and stop
--version       what is installed, and on what
--re-register   forget the key and join again

The --speed, --fail-rate, --build-seconds and --point-seconds options belong to the half that is still pretended, and go away with it.

Stopping

The platform stops a runner by refusing its heartbeat. It then drops everything at once and sends nothing: finishing the work and reporting it would be reporting into a result somebody else now owns.

If a runner goes quiet instead, its lease lapses, the run is marked expired and the job goes to another machine.

Licence

Apache-2.0.

Download files

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

Source Distribution

fherma_runner-0.2.0.tar.gz (23.9 kB view details)

Uploaded Source

Built Distribution

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

fherma_runner-0.2.0-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for fherma_runner-0.2.0.tar.gz
Algorithm Hash digest
SHA256 1eb83b3d3d4850f81726f90aab4a849491712fc4fcb95e71e3a957d1e7c1e1be
MD5 4462995883cc6b842ac249df2d83dfd2
BLAKE2b-256 e592e010956a0b05ed1206be9cc39714c9d0fb962dbbad44b708bbb3c3237220

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on fairmath/fherma-runner

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

File details

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

File metadata

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

File hashes

Hashes for fherma_runner-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6cb599b0279473168a094bb429a1278f64a29c9e83114300d3564bfc0dbf16e9
MD5 928d2a47f6866c7b5dc9c9cc4f277f47
BLAKE2b-256 a8796bed682a551630f9505971b7e195e076ff2637491bde85aad211b6acde6d

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on fairmath/fherma-runner

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

Release history Release notifications | RSS feed

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

This release

0.2.0 This release

2 files

Supported by

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