v2.19.16

semaphoreui/semaphorev2.19.16Oct 7, 2026by github-actions[bot]

Upgrading?

AI Summary

This release introduces a configurable check interval for Semaphore runners to reduce network overhead. Previously, runners polled the server every second, which caused significant traffic in high-volume setups. Users can now adjust the polling frequency via configuration or environment variables, with a default of 1 second to maintain backward compatibility.

Key Highlights

  • Configurable polling interval for runners
  • Reduces network request traffic in installations with many runners
  • Configuration via JSON or environment variable
  • Heartbeat remains at 1 second

New Features

  • Runner check interval configuration
  • SEMAPHORE_RUNNER_CHECK_INTERVAL_SECONDS environment variable

Full Release Notes

## Configurable runner check interval

Runners can now be told how often to ask the server for new jobs. Until now the interval was hard-coded to 1 second, which on installations with many runners produced a noticeable amount of request traffic.

New option in the runner section of the runner config:

```
{
  "runner": {
    "check_interval_seconds": 5
  }
}
```
Or via environment variable:

```
SEMAPHORE_RUNNER_CHECK_INTERVAL_SECONDS=5
```

Default: 1 second, so existing installations behave exactly as before. Values of 0, negative values, or values too large to represent as a duration fall back to the default.

What changes and what does not. Only the check for new jobs honours the configured interval. The runner's progress report, which also serves as its heartbeat, keeps running once per second. Raising the check interval therefore does not affect when the server marks a runner offline. Jobs will start up to check_interval_seconds later than before, so pick a value that matches how quickly you need new tasks to be picked up.

Affected components: runner (semaphore runner start), config schema. No database migration, no changes to the server or the web interface.

Related Repositories