v2026.09.21

OpenMOSS/MOSS-TTS-Nanov2026.09.21Sep 20, 2026by knu

Upgrading?

AI Summary

Improves background job recovery mechanisms, introduces opt-in proxy routing for individual Agents, and upgrades the Ruby and Docker runtimes.

Key Highlights

  • Adds optional `delayed_job_master` process for on-demand single-threaded workers
  • Introduces watchdog for master-managed workers with configurable shutdown grace periods
  • Adds opt-in proxy routing for specific Agents via `AGENT_PROXY` and `use_agent_proxy`
  • Upgrades Ruby to 4.0.7 and Docker base to Ubuntu Noble

New Features

  • Background job watchdog and recovery
  • Agent-level proxy routing
  • Ruby 4.0.7 upgrade
  • Docker runtime updates

Full Release Notes

# v2026.09.21

This release improves recovery from stalled background jobs, adds opt-in proxy routing for individual Agents, and updates the Ruby and Docker runtimes.

## Background jobs

- Add an optional `delayed_job_master` process that forks single-threaded workers on demand.  Set `DELAYED_JOB_WORKERS` to control concurrency and `DELAYED_JOB_MAX_MEMORY` to recycle workers after jobs that exceed the memory limit.  The existing threaded runner remains the default; see the separate-process example in [Procfile](https://github.com/huginn/huginn/blob/v2026.09.21/Procfile).
- Add a watchdog for master-managed workers.  It monitors the full reservation, execution and cleanup cycle independently of the database.  When `DELAYED_JOB_MAX_RUNTIME` is exceeded, it requests cancellation and allows `DELAYED_JOB_SHUTDOWN_GRACE` seconds (default: 10) for cleanup before forcibly terminating the worker.  Abandoned jobs are recovered through the normal failure and retry policy.  This watchdog applies to master-managed workers, not the threaded runner or directly executed scheduler work. [#3755](https://github.com/huginn/huginn/pull/3755)
- Limit Agent execution-lock acquisition to 30 seconds by default, configurable with `AGENT_EXECUTION_LOCK_TIMEOUT`.  Background jobs that cannot acquire the lock fail and can be retried. [#3745](https://github.com/huginn/huginn/pull/3745)
- Apply configurable outbound connection and I/O timeouts through `OUTBOUND_NETWORK_OPEN_TIMEOUT` and `OUTBOUND_NETWORK_TIMEOUT`, capped below the background job runtime limit. [#3745](https://github.com/huginn/huginn/pull/3745)
- Fix "Run now" for failed jobs by clearing exhausted attempts and stale reservation state before requeuing. [#3755](https://github.com/huginn/huginn/pull/3755)

## Proxy routing

Trusted-user instances can set `AGENT_PROXY` and enable `use_agent_proxy` on selected Agents, including JavaScriptAgent's `Agent.fetch` and `Agent.fetchAll`.  The Docker images support `START_SMOKESCREEN=true` to start the bundled filtering proxy without forcing all requests through it.  Existing `ENABLE_SMOKESCREEN` and `OUTBOUND_PROXY` enforcement takes precedence and is unchanged.  See [outbound request configuration](https://github.com/huginn/huginn/blob/v2026.09.21/doc/manual/outbound-requests.md).

## Runtime and Docker fixes

- Upgrade Ruby to 4.0.7 and the Docker base to Ubuntu Noble, fixing a `mini_racer` load error during asset precompilation. [#3753](https://github.com/huginn/huginn/pull/3753)
- Make single-process Docker workers wait for pending migrations before starting. [#3746](https://github.com/huginn/huginn/issues/3746)
- Fix FtpsiteAgent initialization on Ruby 4 when FTP timeout options were mistaken for the host.
- Refresh dependencies and keep `json` below 3.0 pending dependency compatibility.

Docker images are available for amd64 and arm64 on GHCR and Docker Hub, tagged `v2026.09.21`.

**Full Changelog**: https://github.com/huginn/huginn/compare/v2026.09.09...v2026.09.21

Related Repositories