Skip to content

Releases: ayagmar/runnerd

v0.0.21

Choose a tag to compare

@github-actions github-actions released this 26 Oct 17:52
v0.0.21
869008a

What changed

  • A shorter landing page (#141): seven sections instead of thirteen, each a claim beside the real output that proves it, in one typeface and five type sizes.
  • The cost line is shorter (#143, ADR 0074): "This month: 264 job-minutes here, about $1.58 at GitHub's 2-core Linux rate before your plan's free minutes" on the dashboard, the TUI, runnerctl insights and the daily digest. runnerctl insights still prints what the figure rests on under it.
  • Dashboard fixes (#142): the theme switch sits at the foot of the sidebar on every page, and on a phone the history's filters take one row each and its charts are shorter, so the jobs come sooner.
  • A repository's status lists its pools only (#140): RepositoryStatus no longer carries profile and labels, so runnerctl and the dashboard from 0.0.20 cannot read a 0.0.21 daemon's status. Install both from the same release.

runnerd 0.0.21

Download runnerd 0.0.21

File Platform Checksum
runnerd-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

runnerd-cli 0.0.21

Download runnerd-cli 0.0.21

File Platform Checksum
runnerd-cli-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-cli-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

v0.0.20

Choose a tag to compare

@github-actions github-actions released this 26 Oct 12:42
v0.0.20
6af172c

What changed

  • A redesigned dashboard (#136). On a wide screen the navigation is a sidebar and the overview puts the machine (memory budget, slots, the slice's charts) beside the work (what waits and why, the latest jobs, the repositories). On a phone or tablet the queue comes first, the tab bar fits, and the history filters scroll in their own rows.
  • A new landing page (#135) that shows runnerd's real output instead of describing it.
  • The docs describe today's runnerd (#134), checked page by page against the code, and CI now fails on a broken internal link or anchor.
  • runnerctl insights shows the cost estimate once when the history is younger than both windows (#133).
  • Nothing is kept for versions before 0.0.19 (#137, ADR 0073). A new job history is created from one schema at version 15, and a database from before 0.0.19 is refused with its version instead of migrated.

Download runnerd 0.0.20

File Platform Checksum
runnerd-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

runnerd-cli 0.0.20

Download runnerd-cli 0.0.20

File Platform Checksum
runnerd-cli-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-cli-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

v0.0.19

Choose a tag to compare

@github-actions github-actions released this 26 Oct 10:30
v0.0.19
fe54030

What changed

  • Auto sizing lowers caps every hour, by up to half (#129, ADR 0071). It lowered at most once a day by a quarter, so a cap left high by a job that got lighter held memory, and the jobs queued behind it, for days. 0.0.18 made a lowering that goes too far safe to take back at its first kill, so lowerings now run as often as raises: [sizing] interval defaults to 1h and max_step to 50. A file that sets either keeps its value.
  • What this machine's job minutes would have cost on GitHub-hosted runners (#130, ADR 0072). runnerctl insights, the TUI, the dashboard and the daily digest price each job at GitHub's per-minute rate, rounded up to the minute per job as GitHub bills, before your plan's free minutes. Jobs default to the 2-core Linux runner ubuntu-latest gives a private repository; a profile's priced_as names a larger one. runnerd asks GitHub once a day whether each repository is private, and public ones read as free.

Upgrading

The first start migrates the job history to version 15, which 0.0.18 refuses; copy the database while runnerd is stopped to keep a way back. Install 0.0.19 with install.sh --version v0.0.19, move each profile's image to its -0.0.19 tag and restart runnerd. Details: Upgrading.

Download runnerd 0.0.19

File Platform Checksum
runnerd-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

runnerd-cli 0.0.19

Download runnerd-cli 0.0.19

File Platform Checksum
runnerd-cli-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-cli-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

v0.0.18

Choose a tag to compare

@github-actions github-actions released this 26 Oct 04:52
v0.0.18
a0e87b8

What changed

  • A job reserves memory from its last runs, not its last days (#125, ADR 0070). A job that got lighter, after a workflow fix bounded its heaps or workers, kept reserving its old peaks for up to 7 days and kept its profile's cap for 30. On one host that held a 14G reservation for a job that peaked at 8.8G, and because a runner takes whichever queued job GitHub hands it, every job of the repository waited for 14G free. A job's reservation now follows its last 20 runs, and a hold at its cap ends after 3 runs in a row that stayed clear of it.
  • A cap is raised only when the container's own limit ran out of memory (#125). A JVM grows its heap toward the room it has, so its peak tracked the cap and each raise asked for the next. runnerd now reads memory.events.local: a peak near the cap that the kernel never stopped does not raise it, and neither does a limit an inner container hit. A run killed at its cap raises the profile straight to what the job needed, not one step per kill.
  • Auto sizing lowers memory safely (#125). Lowerings read a longer window of each job's runs, and a lowering is taken back to the cap it came from when a run is killed at the new cap, or when a job that passed before fails 3 runs in a row on two branches. Runs recorded before the upgrade can hold a cap up but never raise one.

Upgrading

The first start migrates the job history to version 14, which 0.0.17 refuses; copy the database while runnerd is stopped to keep a way back. Install 0.0.18 with install.sh --version v0.0.18, move each profile's image to its -0.0.18 tag and restart runnerd. Details: Upgrading.

v0.0.17

Choose a tag to compare

@github-actions github-actions released this 26 Oct 01:43
v0.0.17
77b7903

runnerd 0.0.17

What changed

  • Auto sizing moves cpus on each job's average CPU, not on its CPU peaks (#122, ADR 0068). Parallel builds spike to any cap, so the old rule only ever raised cpus; on one host it took a JVM profile from 16 to 31 CPUs in a day while its jobs averaged 7.5. A raise now needs a job averaging 70% of its cap, and a profile far under its cap steps down by max_step a day. A raise the slice or the CPU budget cannot hold is not written, and every client says why.
  • A job cancelled before any runner took it reads cancelled in queue instead of elsewhere, with no start or run time (#121, ADR 0069).
  • The JIT config is no longer in any process's arguments (#121). It reached run.sh and the listener as --jitconfig, readable by every host user through ps; it is now passed in an environment variable the runner removes before starting a job.
  • Reseeds are safe to interrupt and keep deletions (#119, #120, ADRs 0066 and 0067). A reseed that did not finish starts the profile over from the image, and image files a job deleted stay hidden after a reseed.

Upgrading

The job history stays at version 13. Install 0.0.17 with install.sh --version v0.0.17, move each profile's image to its -0.0.17 tag and restart runnerd. Going back to an older image afterwards needs the profile's snapshot and slot volumes removed. Details: Upgrading.

Download runnerd 0.0.17

File Platform Checksum
runnerd-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

runnerd-cli 0.0.17

Download runnerd-cli 0.0.17

File Platform Checksum
runnerd-cli-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-cli-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

v0.0.16

Choose a tag to compare

@github-actions github-actions released this 25 Oct 20:14
v0.0.16
05ffb8a

runnerd 0.0.16

Download runnerd 0.0.16

File Platform Checksum
runnerd-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

runnerd-cli 0.0.16

Download runnerd-cli 0.0.16

File Platform Checksum
runnerd-cli-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-cli-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

v0.0.15

Choose a tag to compare

@github-actions github-actions released this 25 Oct 07:24
v0.0.15
54624e8

runnerd 0.0.15

Before you upgrade

Nothing to migrate: the job history stays at version 13. A config with a Discord target cannot go back to 0.0.14,
which refuses it; remove those targets first. Upgrading has the steps.

New

  • Discord notifications. kind = "discord" in [[notify.targets]] posts failures, lost jobs, runners that cannot
    start, new insights and the digest to a channel's webhook as one embed, with mentions off so a job name cannot ping
    anyone. Each target kind (webhook, ntfy, Discord) is now its own sender behind one interface
    (ADR 0064).

Fixed

  • The budget said "27.25G of 46G free" while a job waited because the host had 6.52G to spare. When the host leaves
    the slice less than MemoryMax, the free figure is now what the host leaves, and the bar marks the rest held by
    the host
    . While the slice is past 90% under measured admission, or the host stalls, nothing shows as free and the
    bar says why. The host line in status, the TUI and the dashboard ends with what is free.

Download runnerd 0.0.15

File Platform Checksum
runnerd-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

runnerd-cli 0.0.15

Download runnerd-cli 0.0.15

File Platform Checksum
runnerd-cli-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-cli-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

v0.0.14

Choose a tag to compare

@github-actions github-actions released this 25 Oct 06:26
v0.0.14
d5ef5bc

runnerd 0.0.14

Before you upgrade

Nothing to migrate: the job history stays at version 13. Upgrade runnerctl with the daemon, since a 0.0.13 client
cannot read a status that lists a job no profile serves. Upgrading
has the steps.

New

  • Light jobs no longer wait behind heavy ones. A runner may take any queued job its labels match, so it was
    sized for the heaviest: a 300M linter waited behind an 8.5G build's reservation. A repository can now be served
    by several profiles, each with its own labels: repeat its [[repositories]] entry with a small profile and a
    label of its own, and point the light jobs' runs-on at it. Leave self-hosted out of the small pool's labels,
    so jobs you did not move can't land there. Each pool reserves only for its own queue and keeps its own warm
    runners. Split light and heavy jobs
    shows the config.
  • Waits say what to fix. A job whose labels no pool has, such as a typo in runs-on, waits with No profile
    serves the label storefornt-small
    instead of sitting unlisted. A job waiting for the host's memory names what
    holds it: programs outside CI hold 30G, most java 9.3G and qemu-system-x86 5.8G. The host line and
    runnerd doctor name them too.
  • Charts show what was reserved. A job's memory and CPU charts, on the dashboard and in the TUI, draw what
    admission reserved beside the cap, so a job capped at 22 CPUs that reserved 3.6 shows both.

Fixed

  • The failed figure turned red for any failure, including a repository's own failing tests. It now turns red only
    when the runner failed the job (lost with it, or killed for memory at its cap) and says how many.
    GET /v1/activity gains runner_failed.
  • Under admission = "measured" the config check card said a config overflowed MemoryMax by the sum of every
    slot's cap. It now holds what admission does, the largest runner and the mirror; its bar draws one block per
    profile to scale under caps. runnerd check-config and the doctor say the same.
  • A restart force-removed a running runner whose slot, profile or repository the config no longer had. It now
    adopts it and lets it drain, as a reload does.
  • When a job took a warm runner's room on a slice, CPU budget or host already past its limit, admission could start
    it over the budget. A budget that is overdrawn now stays overdrawn in the plan, and the job waits unless the stopped
    runner's room covers it.
  • A reseed's seed container could start past MemoryMax or the host's limit. It now waits for room, and after
    runnerctl reseed the drained profile holds that room against other pools' jobs while the host could fit it.
  • A runner whose container Docker failed to inspect once never recorded its job, and a container recovery failed
    to remove stayed until the next restart. Both are retried on later ticks.
  • Admission cached a placeholder for a warm runner's unlisted job and reserved the profile-wide p95 all its life;
    queued jobs of a removed repository stayed queued for good; admission records showed stale free memory and CPU.

Download runnerd 0.0.14

File Platform Checksum
runnerd-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

runnerd-cli 0.0.14

Download runnerd-cli 0.0.14

File Platform Checksum
runnerd-cli-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-cli-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

v0.0.13

Choose a tag to compare

@github-actions github-actions released this 24 Oct 22:44
v0.0.13
3961157

runnerd 0.0.13

Before you upgrade

The first start migrates the job history to version 13, and 0.0.12 refuses it after that. To keep a way back, copy
the database while runnerd is stopped. Upgrading has the steps.

New

  • Admission follows the host's memory. A host short of memory, such as one with a busy desktop and no swap,
    made the kernel throttle every download in the runners' cgroups: checkouts and action downloads stalled for up to
    about 100 s. runnerd now reads the host's available memory and memory pressure. It starts a runner only while the
    host has room for it beside everything else, and not while the host stalls short of memory. Waiting jobs say
    "The host is short of memory", running jobs are never stopped, and these waits don't count as demand for more
    slots. Nothing to configure, and nothing to change on the host.
  • Caps keep room for page cache. Sizing gives each job at least its largest peak plus 1G. A job pressed against
    its own cap was also throttled.
  • Visible when it happens anyway. A job's page and runnerctl job count the times its downloads were
    throttled. A Memory pressure insight warns when that keeps happening to a repository. The host's memory shows in
    status, the TUI and the dashboard, and runnerd doctor has a host memory check.

Fixed

  • After a restart, runners runnerd adopted reserved their full CPU and memory caps until their jobs ended, which
    held new starts back. They also showed a fresh uptime. Both now carry over.
  • A reload that changed a repository's labels left its warm runner holding a job forever. Waiting runners whose
    labels, limits or image changed are now replaced, the image only once the new one is pulled.
  • A notification target behind a redirect counted as delivered. Warnings that still held were sent again after a
    day of downtime, and a target added by a reload missed the next event.
  • runnerctl caches clean was refused while any warm runner waited.
  • A paused repository's waiting runner could still take its next job.
  • The build cache:
    • refused writes when the config named a repository in another case than GitHub's;
    • lost the uploads of jobs that ended before GitHub had answered;
    • kept a renamed default branch until a restart.
  • The daemon's start waited on Docker measuring every volume.
  • The overview's latest jobs went blank during a burst. A job a warm runner took showed the runner's uptime as its
    wait. Waiting reasons now say what failed, and never "needs 2 CPUs; 2 are free".

Download runnerd 0.0.13

File Platform Checksum
runnerd-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

runnerd-cli 0.0.13

Download runnerd-cli 0.0.13

File Platform Checksum
runnerd-cli-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-cli-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

v0.0.12

Choose a tag to compare

@github-actions github-actions released this 24 Oct 20:58
v0.0.12
1319c62

runnerd 0.0.12

Before you upgrade

The job history stays at version 12, so 0.0.11 still reads it. Move each profile's image to its -0.0.12 tag:
the Docker store fix lives in the images. Upgrading has the steps.

Fixed

  • Each slot now keeps its Docker images and build cache between jobs. Sysbox mounted a directory of its own
    over the data root the image's daemon.json named and deleted it with the container, so every runner started
    with an empty Docker store: every image build re-extracted its base with no cached steps, and Testcontainers
    pulled its images again on every job. The engine now gets its data root as a flag, on the slot's volume.
  • A slot whose Docker store is damaged, by a crash or a full disk, has it emptied and its engine started again,
    instead of failing every runner that lands there.
  • A snapshot over its snapshot_max starts over at its profile's next idle moment, whatever reseed_at says.

New

  • Pull requests from a repository's own branches can write to the build cache. Set
    build_cache_writers = "pull-requests" under a repository. Then a merge to main, which builds what its pull
    request's last run built, finds that build in the cache. GitHub's API decides who acted. Forks, Renovate,
    Dependabot and other bots still only read, and the run's commit must be on its branch.
  • The slots' Docker stores share a quarter of the disk not otherwise used, measured, with nothing to set.
    After a job, the build cache is trimmed first, and images are dropped only when the store is still over its share.
  • The volumes of slots past a lowered slot count are removed at the next moment no job runs.

Download runnerd 0.0.12

File Platform Checksum
runnerd-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd

runnerd-cli 0.0.12

Download runnerd-cli 0.0.12

File Platform Checksum
runnerd-cli-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
runnerd-cli-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo ayagmar/runnerd

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo ayagmar/runnerd