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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1eb83b3d3d4850f81726f90aab4a849491712fc4fcb95e71e3a957d1e7c1e1be
|
|
| MD5 |
4462995883cc6b842ac249df2d83dfd2
|
|
| BLAKE2b-256 |
e592e010956a0b05ed1206be9cc39714c9d0fb962dbbad44b708bbb3c3237220
|
Provenance
The following attestation bundles were made for fherma_runner-0.2.0.tar.gz:
Publisher:
publish.yml on fairmath/fherma-runner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fherma_runner-0.2.0.tar.gz -
Subject digest:
1eb83b3d3d4850f81726f90aab4a849491712fc4fcb95e71e3a957d1e7c1e1be - Sigstore transparency entry: 2538759398
- Sigstore integration time:
-
Permalink:
fairmath/fherma-runner@ae403be60f228f1c9227882b099a7aa1c40982d9 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/fairmath
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ae403be60f228f1c9227882b099a7aa1c40982d9 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cb599b0279473168a094bb429a1278f64a29c9e83114300d3564bfc0dbf16e9
|
|
| MD5 |
928d2a47f6866c7b5dc9c9cc4f277f47
|
|
| BLAKE2b-256 |
a8796bed682a551630f9505971b7e195e076ff2637491bde85aad211b6acde6d
|
Provenance
The following attestation bundles were made for fherma_runner-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on fairmath/fherma-runner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fherma_runner-0.2.0-py3-none-any.whl -
Subject digest:
6cb599b0279473168a094bb429a1278f64a29c9e83114300d3564bfc0dbf16e9 - Sigstore transparency entry: 2538759834
- Sigstore integration time:
-
Permalink:
fairmath/fherma-runner@ae403be60f228f1c9227882b099a7aa1c40982d9 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/fairmath
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ae403be60f228f1c9227882b099a7aa1c40982d9 -
Trigger Event:
push
-
Statement type: