Novedades

Todas las versiones estables de Opfield desde la 2.12.0, la primera pública, de la más reciente a la más antigua. Las notas de versión están en inglés.

Todas las versiones en GitHub

2.12.3

  • Domains can belong to an app, and apps and environments can limit the domains they use (wildcards like *.example.com).
  • Creating a route can create its missing Cloudflare domains.
  • The Secure Link tab shows for routes whose links come from additional routes.
  • A build for a container you stopped updates its image without starting it.
  • Git-source containers take environment variables, secrets and volumes before their first build.
  • Managed Postgres runs on Opfield's own images with extensions; PostGIS and pgRouting install on demand from the Extensions tab.
  • Recreating a container with a volume on a path the image declares no longer fails with "Duplicate mount point".
  • Duplicated and migrated containers keep their own anonymous volumes and data.
  • Routes behind Cloudflare see the real client IP in access lists, rate limits, logs and app headers; each route has a Client IP setting.
  • Pages serve the project's own 404.html for missing paths.
  • Build security policy can block only vulnerabilities that have a fix, for application packages or all packages.
  • Build logs keep whole lines.
  • Build Workers can be paused for new builds.
  • Logs, console and files wait for a recreated container and reconnect instead of showing a token error.
  • Container pages show full volume names, and every link row shows its node and status the same way.
  • Users limited to an app no longer see empty Docker tabs or create buttons they can't use; a page with one tab opens it directly.
  • Streamed AI answers end cleanly and name the published model.
  • Chat requests through API-key providers such as OpenRouter count their tokens and cost against budgets.
  • Models whose names contain brackets get a valid suggested ID.
  • Managed cloud installations support a custom domain, cloud email and the Opfield Cloud AI provider.
  • AI agents can provision servers through hosting providers with documented steps.
  • AI changes to a source's or Pages project's build policy are saved.
  • Bastion nodes can't be created yet; they arrive in 2.14.
  • The unused hosting top-up permission is removed.
  • A Git source shows why its build failed or deployed nothing, and its first build starts at once.
  • Git sources refuse Compose service and blue/green slot containers as targets.
  • AI agents can no longer change Opfield-managed containers from the node console.
  • New built-in alert: Container changed outside Opfield.
  • The admin password link says when it is rate limited.
  • Managed Postgres with availability works with container links.
  • A create on several servers that fails keeps the database or storage on its first server.
  • Deleting a database on several servers completes.
  • Duplicating a container from an image with a volume works.
  • Opfield says clearly when every Build Worker is paused.
  • Starting a Compose project that was never applied says to apply it first.
  • Pages previews of single-page apps return 404 for missing files.
  • The internal registry keeps 2 builds per container.
  • The internal registry can store its data in S3.
  • Build images on nodes follow the container's image cleanup setting.
  • Built-in disk alerts at 85%.
  • Access list rules (and route rewrites and VM firewall rules) can be reordered; rules that can never match are flagged.
  • The failover order of managed databases and storage can be changed.
  • Pinned Pages deployments stay on top.
  • A Pages project without a route is healthy and has a preview.
  • Pinned containers stay pinned after a recreate.
  • Quoted entrypoint and command arguments survive saving deployment settings.
  • The access list API no longer returns password hashes.
  • Docker nodes remove images nothing runs after 12 hours unused; each container keeps its running image and one to roll back to.
  • Database and storage nodes remove old engine images they no longer use.
  • Housekeeping removes old Opfield and relay images on the Opfield host.
  • The internal registry deletes the builds of deleted sources and stops taking builds when its disk is 90% full.
  • Nginx nodes keep route logs within a size limit and remove the logs of deleted routes.
  • Housekeeping shows the real size of nginx logs.
  • Container logs on Docker nodes stay bounded, also for containers created before or outside Opfield.
  • Daemon logs on Alpine hosts no longer grow without limit.
  • The local ClickHouse and the Inference core no longer fill the Opfield disk with logs.
  • Nginx nodes keep only the Pages config versions they need.
  • Pages Routes are no longer republished every minute when a node does not answer.
  • Interrupted Pages uploads, old certificate versions and other leftovers are removed from nginx nodes.
  • Pages uploads are refused when the Opfield disk or the node is almost full.
  • Certificates of deleted routes are removed from nodes that were offline at the time.
  • Build Workers clean their scanner files and caches while idle.
  • Interrupted daemon updates and abandoned node file uploads no longer leave files behind.
  • Old private core versions are removed from the Opfield host after an update.
  • Housekeeping shows what fills each Opfield disk, the largest database tables, Redis and container logs.
  • Housekeeping removes old build logs and inference usage records; lifetime usage totals stay.
  • Housekeeping keeps Opfield's own data bounded even when it is switched off, and runs at once when an Opfield disk is 90% full.
  • New built-in alerts: Opfield disk full, Housekeeping not running.
  • The node disk alert covers every data disk of a node; new alerts for full database disks and oversubscribed nodes.
  • Removing a container, deployment slot or Availability placement also removes its anonymous volumes; volumes you manage or name in a configuration are kept.
  • Orphaned Volumes removes only volumes Opfield created; other unused volumes are listed and kept.
  • Postgres WAL and replication slots no longer fill a database disk.
  • A key-value store with an AOF rewrite setting of 0 no longer grows its file without limit.
  • SeaweedFS storage reclaims deleted space and removes stale multipart uploads.
  • Failed or stopped backups no longer leave partial files at the destination.
  • A repeated alert updates the open alert instead of adding a new one.
  • Housekeeping removes old operation history, run records and finished jobs.
  • An AI Chat Completions request close to its budget limit is no longer refused for being counted twice.
  • The Z.AI Coding Plan provider lists GLM-5.3 Flash.
  • Agent console commands that use Docker are refused with the Opfield tool to use instead, and the assistant no longer asks you to approve them.
  • Agents can no longer run commands over SSH on hosts that are Opfield nodes.
  • The "Container changed outside Opfield" alert now fires for containers removed by hand.
  • The assistant now says when your inference budget is used up or the model's content filter stopped an answer, instead of a generic error.
  • Password setup links are limited to 3 per user per hour, like reset links.
  • Killing Opfield during a registry storage switch no longer leaves the registry on a different storage than its settings; Opfield repairs it until both agree and shows the repair state.
  • The registry storage picker no longer offers managed storage connections, which the registry cannot reach.
  • A registry storage switch checks every image the registry keeps for workloads, not only pinned ones.
  • Sync now answers when the internal registry refuses builds, and the source state says which commit was not built and why.
  • Housekeeping shows container log and registry sizes as file sizes, comparable with the log size limit.
  • Housekeeping shows the real size of unused volumes.
  • Image cleanup "off" on a blue/green deployment keeps all its images.
  • Build images of deleted Git sources stay on nodes for 12 hours as documented.
  • Housekeeping shows per node where old Docker images are and what the next run removes; Prune lists what it would remove first.
  • Detaching a Git source keeps the image the container runs.
  • A Git-source container can be rolled back to its previous build: Roll back on the Source tab, the API, or manage_docker_source rollback.
  • A Git source whose container was removed outside Opfield can now be removed, which frees the container name.
  • A failed build now shows the failing Dockerfile step and its exit code.
  • Build logs no longer end with the builder's cache cleanup table.
  • Finished builds no longer show their rollout as still running.
  • The first build after connecting a repository is now marked as "attach".
  • Starting a Compose operation from the assistant or MCP no longer needs an idempotency key.
  • Connecting a repository through MCP accepts the repository's owner/name.
  • Connecting a repository to a running container now says that the first build replaces its image and may change the port the app listens on.
  • The container details in MCP show the connected Git source.
  • Invalid assistant and MCP arguments now list the allowed values.
  • Container logs with no output come back as an empty list.
  • Volume lists and details in MCP show how much space each volume uses.
  • MCP and the API can list the alerts that are firing now and the alert history of the last 30 days.
  • MCP can create and delete branches on GitHub, GitLab and generic Git.
  • Revoked or expired PKI certificates can be deleted (UI, API, MCP).
  • A route shows its PKI certificate in the console and in get_route.
  • A client blocked by a route's access list now gets 403 while the route is in maintenance.
  • Access list warnings in the API and MCP name the rule's 0-based index.
  • The MCP docs now say an external-DNS domain is added after its DNS points at Opfield, and the error lists the records to create.
  • The MCP inference docs match the tools: they cover reset_user and reorder.
  • The docs now cover failed creates on several servers and the availability error codes.
  • A Docker node whose Docker Engine cannot start containers now shows as degraded with the reason, and the new built-in alert "Docker runtime unavailable" fires.
  • One disk shared by several nodes on the same machine raises one disk alert that names all of them.
  • Node disk lists no longer miss disks of managed databases, storage or volumes.
  • A failed create on several servers names the database or storage it kept, with its server.
  • A create on several servers waits longer for slow servers, survives an Opfield restart, and the resource shows why it ended on one server.
  • Databases and storage on several servers show Creating and Deleting while those run.
  • Availability witnesses show whether the lease reaches them, and a copy that stopped reporting no longer shows as eligible.
  • Availability errors say when a node is not connected instead of claiming it lacks support.
  • Alerts and pickers name nodes by their display name.
  • A managed engine killed by another process is no longer reported as out of memory.
  • Creating a database or making it available on several servers no longer records a false "rejoin failed" event.
  • Servers remove the leftover availability files of sets they no longer run, and release a failed set at once.
  • A removed object storage set no longer leaves a retry loop logging every second.
  • Housekeeping no longer shows a last success that never ran.
  • An nginx node whose nginx is stopped no longer reports its valid configuration as invalid.
  • Inference: a request refused for an exhausted budget now answers 429 with its error code, the recovery time and Retry-After on every endpoint and core version.
  • Inference: a refused request shows its budget error in activity instead of upstream_error.
  • Inference: Chat Completions requests now count their prompt size when reserving budget.
  • Inference: a connection over its monthly API limit hands the request to another connection or refuses it, instead of answering 503.
  • Inference: the error for a typed model id names discoveredModelId and the discovered models.
  • Inference: usage windows that do not limit a user no longer show 100%.
  • Assistant and MCP node console commands run as root, so agents can repair a node, but Docker, containerd and Podman are masked in the agent console (an accident guard, not a security boundary).
  • The agent console now works on nodes whose daemon does not run as root: commands run as the daemon's user, and the result says what that limits.
  • Agent console commands can run up to 5 minutes, and a failed or timed-out command still returns its output and exit code.
  • Agents can no longer reach an Opfield node over SSH through an address the node doesn't report.
  • Stopping, killing, pausing or updating a managed container outside Opfield now raises the "changed outside Opfield" alert, and the message says what the change means.
  • The "changed outside Opfield" alert no longer mentions reset permissions for a container someone created by hand.
  • A container change right after an Opfield action on it is no longer missed.
  • Audit entries for changes made outside Opfield no longer show another request's user agent, address or token.
  • Creating a volume through the API or MCP returns the new volume.
  • The password setup link limit message says that the link sent when the account was created counts toward the limit.
  • During route maintenance, a client the access list denies gets 403 instead of the maintenance page.
  • Every page nginx generates itself (errors, denied clients, unreachable upstreams, the default server) is now an Opfield page; applications' own error pages pass through unchanged.
  • Certificates and keys of deleted routes are removed from nginx nodes, including the ones left by earlier releases.
  • A route whose node is offline can be deleted; the node drops it when it reconnects.
  • Pages upload finalize reports a Deployment that will be published automatically instead of failing.
  • Pages uploads on a full Opfield disk are refused at the start, with the real fill level.
  • Deleting a Pages project no longer leaves an empty folder on the Opfield host.
  • The AI assistant says which inference budget ran out and when it works again, instead of a rate-limit message.
  • Inference activity records an answer stopped by the provider's content filter as content_filter.
  • Inference activity records a turn the inference core refused as inference_core_unavailable instead of an upstream error.
  • Inference limits show when a user's 5-hour, 7-day or 30-day window does not apply because the default limits turn it off.
  • Creating a database or storage on several servers now reports a failure within 3 minutes instead of reporting it as created.
  • A failed create on several servers stays "Creating" until it is cleaned up and shows why it failed.
  • Turning availability off no longer restarts the database that is kept.
  • Making an offline server primary is refused at once and says the server is not connected.
  • A failed primary switch no longer briefly shows the set as healthy or repeats its alerts.
  • A new copy of a database now shows as "New copy seeded" instead of "rebuilt" and "rejoined".
  • Nodes report a health field: degraded while Docker or nginx cannot work, even when connected.
  • A disk shared by several nodes is named as one shared disk in its alert.
  • Node online and offline alerts now carry the node ID and its real hostname.
  • Database and storage lists can be filtered by name.
  • Internal PKI revocation lists now list every revoked certificate correctly, and existing lists are fixed on update.
  • Revocation lists include their CRL number and the issuing CA's key identifier.
  • Revoking a certificate a route still serves says so, and its linked SSL certificate shows the revocation.
  • Deleting a CA says that its revocation list ends with it.
  • Custom threshold alerts say which value crossed the limit.
  • An open threshold alert's message follows the current value.
  • Opfield disk alerts name the disk that is full.
  • The alert list's resource filter also finds a node's disk and container alerts, and resources by name.
  • MCP tools name an argument they do not take, and say when an id is not a UUID.
  • manage_ssl_certificate refuses unknown arguments and lists the valid ones.
  • Refused API requests return a meaningful error code instead of HTTP_ERROR.
  • The access list API rejects fields it does not know.
  • Error messages give full REST paths.
  • write_file points to create_file for a new file.
  • gitlab_create_branch accepts fromRef.
  • Rebuilds after a Build Secret or build setting change are labelled as configuration builds.
  • A build that starts while the internal registry is collecting garbage waits for it, and is retried if the registry restarts mid-push.
  • Rollback refusals list the builds you can roll back to.
  • The registry shows a new storage backend right after a switch, and its disk-full percentage matches df.
  • Old registry storage backups and update migration backups, which hold old secrets, are removed.
  • Pulling an image a node has no grant for answers "denied" instead of 503.
  • Housekeeping's low-disk run waits its hour across restarts.
  • A Housekeeping run is no longer counted as failed because registry maintenance was already running.
  • Partial files of abandoned node file uploads are removed within minutes, also after a restart.
  • The backup storage check writes its test file inside the policy prefix.
  • Daemons remove installer backups of their binary after 14 days.
  • Daemons log the leftovers they clean up at start.
  • A trimmed daemon log keeps its file permissions.
  • Opfield refuses an SSH connector to a node by the node's SSH host key, whatever address reaches it.
  • The node console docs and messages for agents now say plainly that the console sandbox only guards against accidental Docker use and is not a security boundary.
  • New installations use Opfield names throughout: data paths, container labels, volumes and environment; existing installations keep working as they are.
  • Installations read the release feed from get.opfield.dev/opfield.
  • Opfield images are published only to ghcr.io/opfield/opfield.
  • Container archives use the Opfield container archive format (.ofca, application/vnd.opfield.ofca); archives exported by earlier releases cannot be imported.
  • The Pages documentation, tool descriptions and errors for AI agents explain each upload step and name the expected values.
  • The Secure Runtime smoke test of a Docker node no longer raises a "Container changed outside Opfield" alert.
  • Permission restriction pickers list resources that belong to an app under the app and its environments, and dropdown searches no longer reset while the menu closes.
Actualizaciones de nodos

Docker Daemonv2.12.3-docker

  • Domains can belong to an app, and apps and environments can limit the domains they use (wildcards like *.example.com).
  • Creating a route can create its missing Cloudflare domains.
  • The Secure Link tab shows for routes whose links come from additional routes.
  • A build for a container you stopped updates its image without starting it.
  • Git-source containers take environment variables, secrets and volumes before their first build.
  • Managed Postgres runs on Opfield's own images with extensions; PostGIS and pgRouting install on demand from the Extensions tab.
  • Recreating a container with a volume on a path the image declares no longer fails with "Duplicate mount point".
  • Duplicated and migrated containers keep their own anonymous volumes and data.
  • Routes behind Cloudflare see the real client IP in access lists, rate limits, logs and app headers; each route has a Client IP setting.
  • Pages serve the project's own 404.html for missing paths.
  • Build security policy can block only vulnerabilities that have a fix, for application packages or all packages.
  • Build logs keep whole lines.
  • Build Workers can be paused for new builds.
  • Logs, console and files wait for a recreated container and reconnect instead of showing a token error.
  • Container pages show full volume names, and every link row shows its node and status the same way.
  • Users limited to an app no longer see empty Docker tabs or create buttons they can't use; a page with one tab opens it directly.
  • Streamed AI answers end cleanly and name the published model.
  • Chat requests through API-key providers such as OpenRouter count their tokens and cost against budgets.
  • Models whose names contain brackets get a valid suggested ID.
  • Managed cloud installations support a custom domain, cloud email and the Opfield Cloud AI provider.
  • AI agents can provision servers through hosting providers with documented steps.
  • AI changes to a source's or Pages project's build policy are saved.
  • Bastion nodes can't be created yet; they arrive in 2.14.
  • The unused hosting top-up permission is removed.
  • A Git source shows why its build failed or deployed nothing, and its first build starts at once.
  • Git sources refuse Compose service and blue/green slot containers as targets.
  • AI agents can no longer change Opfield-managed containers from the node console.
  • New built-in alert: Container changed outside Opfield.
  • The admin password link says when it is rate limited.
  • Managed Postgres with availability works with container links.
  • A create on several servers that fails keeps the database or storage on its first server.
  • Deleting a database on several servers completes.
  • Duplicating a container from an image with a volume works.
  • Opfield says clearly when every Build Worker is paused.
  • Starting a Compose project that was never applied says to apply it first.
  • Pages previews of single-page apps return 404 for missing files.
  • The internal registry keeps 2 builds per container.
  • The internal registry can store its data in S3.
  • Build images on nodes follow the container's image cleanup setting.
  • Built-in disk alerts at 85%.
  • Access list rules (and route rewrites and VM firewall rules) can be reordered; rules that can never match are flagged.
  • The failover order of managed databases and storage can be changed.
  • Pinned Pages deployments stay on top.
  • A Pages project without a route is healthy and has a preview.
  • Pinned containers stay pinned after a recreate.
  • Quoted entrypoint and command arguments survive saving deployment settings.
  • The access list API no longer returns password hashes.
  • Docker nodes remove images nothing runs after 12 hours unused; each container keeps its running image and one to roll back to.
  • Database and storage nodes remove old engine images they no longer use.
  • Housekeeping removes old Opfield and relay images on the Opfield host.
  • The internal registry deletes the builds of deleted sources and stops taking builds when its disk is 90% full.
  • Nginx nodes keep route logs within a size limit and remove the logs of deleted routes.
  • Housekeeping shows the real size of nginx logs.
  • Container logs on Docker nodes stay bounded, also for containers created before or outside Opfield.
  • Daemon logs on Alpine hosts no longer grow without limit.
  • The local ClickHouse and the Inference core no longer fill the Opfield disk with logs.
  • Nginx nodes keep only the Pages config versions they need.
  • Pages Routes are no longer republished every minute when a node does not answer.
  • Interrupted Pages uploads, old certificate versions and other leftovers are removed from nginx nodes.
  • Pages uploads are refused when the Opfield disk or the node is almost full.
  • Certificates of deleted routes are removed from nodes that were offline at the time.
  • Build Workers clean their scanner files and caches while idle.
  • Interrupted daemon updates and abandoned node file uploads no longer leave files behind.
  • Old private core versions are removed from the Opfield host after an update.
  • Housekeeping shows what fills each Opfield disk, the largest database tables, Redis and container logs.
  • Housekeeping removes old build logs and inference usage records; lifetime usage totals stay.
  • Housekeeping keeps Opfield's own data bounded even when it is switched off, and runs at once when an Opfield disk is 90% full.
  • New built-in alerts: Opfield disk full, Housekeeping not running.
  • The node disk alert covers every data disk of a node; new alerts for full database disks and oversubscribed nodes.
  • Removing a container, deployment slot or Availability placement also removes its anonymous volumes; volumes you manage or name in a configuration are kept.
  • Orphaned Volumes removes only volumes Opfield created; other unused volumes are listed and kept.
  • Postgres WAL and replication slots no longer fill a database disk.
  • A key-value store with an AOF rewrite setting of 0 no longer grows its file without limit.
  • SeaweedFS storage reclaims deleted space and removes stale multipart uploads.
  • Failed or stopped backups no longer leave partial files at the destination.
  • A repeated alert updates the open alert instead of adding a new one.
  • Housekeeping removes old operation history, run records and finished jobs.
  • An AI Chat Completions request close to its budget limit is no longer refused for being counted twice.
  • The Z.AI Coding Plan provider lists GLM-5.3 Flash.
  • Agent console commands that use Docker are refused with the Opfield tool to use instead, and the assistant no longer asks you to approve them.
  • Agents can no longer run commands over SSH on hosts that are Opfield nodes.
  • The "Container changed outside Opfield" alert now fires for containers removed by hand.
  • The assistant now says when your inference budget is used up or the model's content filter stopped an answer, instead of a generic error.
  • Password setup links are limited to 3 per user per hour, like reset links.
  • Killing Opfield during a registry storage switch no longer leaves the registry on a different storage than its settings; Opfield repairs it until both agree and shows the repair state.
  • The registry storage picker no longer offers managed storage connections, which the registry cannot reach.
  • A registry storage switch checks every image the registry keeps for workloads, not only pinned ones.
  • Sync now answers when the internal registry refuses builds, and the source state says which commit was not built and why.
  • Housekeeping shows container log and registry sizes as file sizes, comparable with the log size limit.
  • Housekeeping shows the real size of unused volumes.
  • Image cleanup "off" on a blue/green deployment keeps all its images.
  • Build images of deleted Git sources stay on nodes for 12 hours as documented.
  • Housekeeping shows per node where old Docker images are and what the next run removes; Prune lists what it would remove first.
  • Detaching a Git source keeps the image the container runs.
  • A Git-source container can be rolled back to its previous build: Roll back on the Source tab, the API, or manage_docker_source rollback.
  • A Git source whose container was removed outside Opfield can now be removed, which frees the container name.
  • A failed build now shows the failing Dockerfile step and its exit code.
  • Build logs no longer end with the builder's cache cleanup table.
  • Finished builds no longer show their rollout as still running.
  • The first build after connecting a repository is now marked as "attach".
  • Starting a Compose operation from the assistant or MCP no longer needs an idempotency key.
  • Connecting a repository through MCP accepts the repository's owner/name.
  • Connecting a repository to a running container now says that the first build replaces its image and may change the port the app listens on.
  • The container details in MCP show the connected Git source.
  • Invalid assistant and MCP arguments now list the allowed values.
  • Container logs with no output come back as an empty list.
  • Volume lists and details in MCP show how much space each volume uses.
  • MCP and the API can list the alerts that are firing now and the alert history of the last 30 days.
  • MCP can create and delete branches on GitHub, GitLab and generic Git.
  • Revoked or expired PKI certificates can be deleted (UI, API, MCP).
  • A route shows its PKI certificate in the console and in get_route.
  • A client blocked by a route's access list now gets 403 while the route is in maintenance.
  • Access list warnings in the API and MCP name the rule's 0-based index.
  • The MCP docs now say an external-DNS domain is added after its DNS points at Opfield, and the error lists the records to create.
  • The MCP inference docs match the tools: they cover reset_user and reorder.
  • The docs now cover failed creates on several servers and the availability error codes.
  • A Docker node whose Docker Engine cannot start containers now shows as degraded with the reason, and the new built-in alert "Docker runtime unavailable" fires.
  • One disk shared by several nodes on the same machine raises one disk alert that names all of them.
  • Node disk lists no longer miss disks of managed databases, storage or volumes.
  • A failed create on several servers names the database or storage it kept, with its server.
  • A create on several servers waits longer for slow servers, survives an Opfield restart, and the resource shows why it ended on one server.
  • Databases and storage on several servers show Creating and Deleting while those run.
  • Availability witnesses show whether the lease reaches them, and a copy that stopped reporting no longer shows as eligible.
  • Availability errors say when a node is not connected instead of claiming it lacks support.
  • Alerts and pickers name nodes by their display name.
  • A managed engine killed by another process is no longer reported as out of memory.
  • Creating a database or making it available on several servers no longer records a false "rejoin failed" event.
  • Servers remove the leftover availability files of sets they no longer run, and release a failed set at once.
  • A removed object storage set no longer leaves a retry loop logging every second.
  • Housekeeping no longer shows a last success that never ran.
  • An nginx node whose nginx is stopped no longer reports its valid configuration as invalid.
  • Inference: a request refused for an exhausted budget now answers 429 with its error code, the recovery time and Retry-After on every endpoint and core version.
  • Inference: a refused request shows its budget error in activity instead of upstream_error.
  • Inference: Chat Completions requests now count their prompt size when reserving budget.
  • Inference: a connection over its monthly API limit hands the request to another connection or refuses it, instead of answering 503.
  • Inference: the error for a typed model id names discoveredModelId and the discovered models.
  • Inference: usage windows that do not limit a user no longer show 100%.
  • Assistant and MCP node console commands run as root, so agents can repair a node, but Docker, containerd and Podman are masked in the agent console (an accident guard, not a security boundary).
  • The agent console now works on nodes whose daemon does not run as root: commands run as the daemon's user, and the result says what that limits.
  • Agent console commands can run up to 5 minutes, and a failed or timed-out command still returns its output and exit code.
  • Agents can no longer reach an Opfield node over SSH through an address the node doesn't report.
  • Stopping, killing, pausing or updating a managed container outside Opfield now raises the "changed outside Opfield" alert, and the message says what the change means.
  • The "changed outside Opfield" alert no longer mentions reset permissions for a container someone created by hand.
  • A container change right after an Opfield action on it is no longer missed.
  • Audit entries for changes made outside Opfield no longer show another request's user agent, address or token.
  • Creating a volume through the API or MCP returns the new volume.
  • The password setup link limit message says that the link sent when the account was created counts toward the limit.
  • During route maintenance, a client the access list denies gets 403 instead of the maintenance page.
  • Every page nginx generates itself (errors, denied clients, unreachable upstreams, the default server) is now an Opfield page; applications' own error pages pass through unchanged.
  • Certificates and keys of deleted routes are removed from nginx nodes, including the ones left by earlier releases.
  • A route whose node is offline can be deleted; the node drops it when it reconnects.
  • Pages upload finalize reports a Deployment that will be published automatically instead of failing.
  • Pages uploads on a full Opfield disk are refused at the start, with the real fill level.
  • Deleting a Pages project no longer leaves an empty folder on the Opfield host.
  • The AI assistant says which inference budget ran out and when it works again, instead of a rate-limit message.
  • Inference activity records an answer stopped by the provider's content filter as content_filter.
  • Inference activity records a turn the inference core refused as inference_core_unavailable instead of an upstream error.
  • Inference limits show when a user's 5-hour, 7-day or 30-day window does not apply because the default limits turn it off.
  • Creating a database or storage on several servers now reports a failure within 3 minutes instead of reporting it as created.
  • A failed create on several servers stays "Creating" until it is cleaned up and shows why it failed.
  • Turning availability off no longer restarts the database that is kept.
  • Making an offline server primary is refused at once and says the server is not connected.
  • A failed primary switch no longer briefly shows the set as healthy or repeats its alerts.
  • A new copy of a database now shows as "New copy seeded" instead of "rebuilt" and "rejoined".
  • Nodes report a health field: degraded while Docker or nginx cannot work, even when connected.
  • A disk shared by several nodes is named as one shared disk in its alert.
  • Node online and offline alerts now carry the node ID and its real hostname.
  • Database and storage lists can be filtered by name.
  • Internal PKI revocation lists now list every revoked certificate correctly, and existing lists are fixed on update.
  • Revocation lists include their CRL number and the issuing CA's key identifier.
  • Revoking a certificate a route still serves says so, and its linked SSL certificate shows the revocation.
  • Deleting a CA says that its revocation list ends with it.
  • Custom threshold alerts say which value crossed the limit.
  • An open threshold alert's message follows the current value.
  • Opfield disk alerts name the disk that is full.
  • The alert list's resource filter also finds a node's disk and container alerts, and resources by name.
  • MCP tools name an argument they do not take, and say when an id is not a UUID.
  • manage_ssl_certificate refuses unknown arguments and lists the valid ones.
  • Refused API requests return a meaningful error code instead of HTTP_ERROR.
  • The access list API rejects fields it does not know.
  • Error messages give full REST paths.
  • write_file points to create_file for a new file.
  • gitlab_create_branch accepts fromRef.
  • Rebuilds after a Build Secret or build setting change are labelled as configuration builds.
  • A build that starts while the internal registry is collecting garbage waits for it, and is retried if the registry restarts mid-push.
  • Rollback refusals list the builds you can roll back to.
  • The registry shows a new storage backend right after a switch, and its disk-full percentage matches df.
  • Old registry storage backups and update migration backups, which hold old secrets, are removed.
  • Pulling an image a node has no grant for answers "denied" instead of 503.
  • Housekeeping's low-disk run waits its hour across restarts.
  • A Housekeeping run is no longer counted as failed because registry maintenance was already running.
  • Partial files of abandoned node file uploads are removed within minutes, also after a restart.
  • The backup storage check writes its test file inside the policy prefix.
  • Daemons remove installer backups of their binary after 14 days.
  • Daemons log the leftovers they clean up at start.
  • A trimmed daemon log keeps its file permissions.
  • Opfield refuses an SSH connector to a node by the node's SSH host key, whatever address reaches it.
  • The node console docs and messages for agents now say plainly that the console sandbox only guards against accidental Docker use and is not a security boundary.
  • New installations use Opfield names throughout: data paths, container labels, volumes and environment; existing installations keep working as they are.
  • Installations read the release feed from get.opfield.dev/opfield.
  • Opfield images are published only to ghcr.io/opfield/opfield.
  • Container archives use the Opfield container archive format (.ofca, application/vnd.opfield.ofca); archives exported by earlier releases cannot be imported.
  • The Pages documentation, tool descriptions and errors for AI agents explain each upload step and name the expected values.
  • The Secure Runtime smoke test of a Docker node no longer raises a "Container changed outside Opfield" alert.
  • Permission restriction pickers list resources that belong to an app under the app and its environments, and dropdown searches no longer reset while the menu closes.

Monitoring Daemonv2.12.3-monitoring

  • Domains can belong to an app, and apps and environments can limit the domains they use (wildcards like *.example.com).
  • Creating a route can create its missing Cloudflare domains.
  • The Secure Link tab shows for routes whose links come from additional routes.
  • A build for a container you stopped updates its image without starting it.
  • Git-source containers take environment variables, secrets and volumes before their first build.
  • Managed Postgres runs on Opfield's own images with extensions; PostGIS and pgRouting install on demand from the Extensions tab.
  • Recreating a container with a volume on a path the image declares no longer fails with "Duplicate mount point".
  • Duplicated and migrated containers keep their own anonymous volumes and data.
  • Routes behind Cloudflare see the real client IP in access lists, rate limits, logs and app headers; each route has a Client IP setting.
  • Pages serve the project's own 404.html for missing paths.
  • Build security policy can block only vulnerabilities that have a fix, for application packages or all packages.
  • Build logs keep whole lines.
  • Build Workers can be paused for new builds.
  • Logs, console and files wait for a recreated container and reconnect instead of showing a token error.
  • Container pages show full volume names, and every link row shows its node and status the same way.
  • Users limited to an app no longer see empty Docker tabs or create buttons they can't use; a page with one tab opens it directly.
  • Streamed AI answers end cleanly and name the published model.
  • Chat requests through API-key providers such as OpenRouter count their tokens and cost against budgets.
  • Models whose names contain brackets get a valid suggested ID.
  • Managed cloud installations support a custom domain, cloud email and the Opfield Cloud AI provider.
  • AI agents can provision servers through hosting providers with documented steps.
  • AI changes to a source's or Pages project's build policy are saved.
  • Bastion nodes can't be created yet; they arrive in 2.14.
  • The unused hosting top-up permission is removed.
  • A Git source shows why its build failed or deployed nothing, and its first build starts at once.
  • Git sources refuse Compose service and blue/green slot containers as targets.
  • AI agents can no longer change Opfield-managed containers from the node console.
  • New built-in alert: Container changed outside Opfield.
  • The admin password link says when it is rate limited.
  • Managed Postgres with availability works with container links.
  • A create on several servers that fails keeps the database or storage on its first server.
  • Deleting a database on several servers completes.
  • Duplicating a container from an image with a volume works.
  • Opfield says clearly when every Build Worker is paused.
  • Starting a Compose project that was never applied says to apply it first.
  • Pages previews of single-page apps return 404 for missing files.
  • The internal registry keeps 2 builds per container.
  • The internal registry can store its data in S3.
  • Build images on nodes follow the container's image cleanup setting.
  • Built-in disk alerts at 85%.
  • Access list rules (and route rewrites and VM firewall rules) can be reordered; rules that can never match are flagged.
  • The failover order of managed databases and storage can be changed.
  • Pinned Pages deployments stay on top.
  • A Pages project without a route is healthy and has a preview.
  • Pinned containers stay pinned after a recreate.
  • Quoted entrypoint and command arguments survive saving deployment settings.
  • The access list API no longer returns password hashes.
  • Docker nodes remove images nothing runs after 12 hours unused; each container keeps its running image and one to roll back to.
  • Database and storage nodes remove old engine images they no longer use.
  • Housekeeping removes old Opfield and relay images on the Opfield host.
  • The internal registry deletes the builds of deleted sources and stops taking builds when its disk is 90% full.
  • Nginx nodes keep route logs within a size limit and remove the logs of deleted routes.
  • Housekeeping shows the real size of nginx logs.
  • Container logs on Docker nodes stay bounded, also for containers created before or outside Opfield.
  • Daemon logs on Alpine hosts no longer grow without limit.
  • The local ClickHouse and the Inference core no longer fill the Opfield disk with logs.
  • Nginx nodes keep only the Pages config versions they need.
  • Pages Routes are no longer republished every minute when a node does not answer.
  • Interrupted Pages uploads, old certificate versions and other leftovers are removed from nginx nodes.
  • Pages uploads are refused when the Opfield disk or the node is almost full.
  • Certificates of deleted routes are removed from nodes that were offline at the time.
  • Build Workers clean their scanner files and caches while idle.
  • Interrupted daemon updates and abandoned node file uploads no longer leave files behind.
  • Old private core versions are removed from the Opfield host after an update.
  • Housekeeping shows what fills each Opfield disk, the largest database tables, Redis and container logs.
  • Housekeeping removes old build logs and inference usage records; lifetime usage totals stay.
  • Housekeeping keeps Opfield's own data bounded even when it is switched off, and runs at once when an Opfield disk is 90% full.
  • New built-in alerts: Opfield disk full, Housekeeping not running.
  • The node disk alert covers every data disk of a node; new alerts for full database disks and oversubscribed nodes.
  • Removing a container, deployment slot or Availability placement also removes its anonymous volumes; volumes you manage or name in a configuration are kept.
  • Orphaned Volumes removes only volumes Opfield created; other unused volumes are listed and kept.
  • Postgres WAL and replication slots no longer fill a database disk.
  • A key-value store with an AOF rewrite setting of 0 no longer grows its file without limit.
  • SeaweedFS storage reclaims deleted space and removes stale multipart uploads.
  • Failed or stopped backups no longer leave partial files at the destination.
  • A repeated alert updates the open alert instead of adding a new one.
  • Housekeeping removes old operation history, run records and finished jobs.
  • An AI Chat Completions request close to its budget limit is no longer refused for being counted twice.
  • The Z.AI Coding Plan provider lists GLM-5.3 Flash.
  • Agent console commands that use Docker are refused with the Opfield tool to use instead, and the assistant no longer asks you to approve them.
  • Agents can no longer run commands over SSH on hosts that are Opfield nodes.
  • The "Container changed outside Opfield" alert now fires for containers removed by hand.
  • The assistant now says when your inference budget is used up or the model's content filter stopped an answer, instead of a generic error.
  • Password setup links are limited to 3 per user per hour, like reset links.
  • Killing Opfield during a registry storage switch no longer leaves the registry on a different storage than its settings; Opfield repairs it until both agree and shows the repair state.
  • The registry storage picker no longer offers managed storage connections, which the registry cannot reach.
  • A registry storage switch checks every image the registry keeps for workloads, not only pinned ones.
  • Sync now answers when the internal registry refuses builds, and the source state says which commit was not built and why.
  • Housekeeping shows container log and registry sizes as file sizes, comparable with the log size limit.
  • Housekeeping shows the real size of unused volumes.
  • Image cleanup "off" on a blue/green deployment keeps all its images.
  • Build images of deleted Git sources stay on nodes for 12 hours as documented.
  • Housekeeping shows per node where old Docker images are and what the next run removes; Prune lists what it would remove first.
  • Detaching a Git source keeps the image the container runs.
  • A Git-source container can be rolled back to its previous build: Roll back on the Source tab, the API, or manage_docker_source rollback.
  • A Git source whose container was removed outside Opfield can now be removed, which frees the container name.
  • A failed build now shows the failing Dockerfile step and its exit code.
  • Build logs no longer end with the builder's cache cleanup table.
  • Finished builds no longer show their rollout as still running.
  • The first build after connecting a repository is now marked as "attach".
  • Starting a Compose operation from the assistant or MCP no longer needs an idempotency key.
  • Connecting a repository through MCP accepts the repository's owner/name.
  • Connecting a repository to a running container now says that the first build replaces its image and may change the port the app listens on.
  • The container details in MCP show the connected Git source.
  • Invalid assistant and MCP arguments now list the allowed values.
  • Container logs with no output come back as an empty list.
  • Volume lists and details in MCP show how much space each volume uses.
  • MCP and the API can list the alerts that are firing now and the alert history of the last 30 days.
  • MCP can create and delete branches on GitHub, GitLab and generic Git.
  • Revoked or expired PKI certificates can be deleted (UI, API, MCP).
  • A route shows its PKI certificate in the console and in get_route.
  • A client blocked by a route's access list now gets 403 while the route is in maintenance.
  • Access list warnings in the API and MCP name the rule's 0-based index.
  • The MCP docs now say an external-DNS domain is added after its DNS points at Opfield, and the error lists the records to create.
  • The MCP inference docs match the tools: they cover reset_user and reorder.
  • The docs now cover failed creates on several servers and the availability error codes.
  • A Docker node whose Docker Engine cannot start containers now shows as degraded with the reason, and the new built-in alert "Docker runtime unavailable" fires.
  • One disk shared by several nodes on the same machine raises one disk alert that names all of them.
  • Node disk lists no longer miss disks of managed databases, storage or volumes.
  • A failed create on several servers names the database or storage it kept, with its server.
  • A create on several servers waits longer for slow servers, survives an Opfield restart, and the resource shows why it ended on one server.
  • Databases and storage on several servers show Creating and Deleting while those run.
  • Availability witnesses show whether the lease reaches them, and a copy that stopped reporting no longer shows as eligible.
  • Availability errors say when a node is not connected instead of claiming it lacks support.
  • Alerts and pickers name nodes by their display name.
  • A managed engine killed by another process is no longer reported as out of memory.
  • Creating a database or making it available on several servers no longer records a false "rejoin failed" event.
  • Servers remove the leftover availability files of sets they no longer run, and release a failed set at once.
  • A removed object storage set no longer leaves a retry loop logging every second.
  • Housekeeping no longer shows a last success that never ran.
  • An nginx node whose nginx is stopped no longer reports its valid configuration as invalid.
  • Inference: a request refused for an exhausted budget now answers 429 with its error code, the recovery time and Retry-After on every endpoint and core version.
  • Inference: a refused request shows its budget error in activity instead of upstream_error.
  • Inference: Chat Completions requests now count their prompt size when reserving budget.
  • Inference: a connection over its monthly API limit hands the request to another connection or refuses it, instead of answering 503.
  • Inference: the error for a typed model id names discoveredModelId and the discovered models.
  • Inference: usage windows that do not limit a user no longer show 100%.
  • Assistant and MCP node console commands run as root, so agents can repair a node, but Docker, containerd and Podman are masked in the agent console (an accident guard, not a security boundary).
  • The agent console now works on nodes whose daemon does not run as root: commands run as the daemon's user, and the result says what that limits.
  • Agent console commands can run up to 5 minutes, and a failed or timed-out command still returns its output and exit code.
  • Agents can no longer reach an Opfield node over SSH through an address the node doesn't report.
  • Stopping, killing, pausing or updating a managed container outside Opfield now raises the "changed outside Opfield" alert, and the message says what the change means.
  • The "changed outside Opfield" alert no longer mentions reset permissions for a container someone created by hand.
  • A container change right after an Opfield action on it is no longer missed.
  • Audit entries for changes made outside Opfield no longer show another request's user agent, address or token.
  • Creating a volume through the API or MCP returns the new volume.
  • The password setup link limit message says that the link sent when the account was created counts toward the limit.
  • During route maintenance, a client the access list denies gets 403 instead of the maintenance page.
  • Every page nginx generates itself (errors, denied clients, unreachable upstreams, the default server) is now an Opfield page; applications' own error pages pass through unchanged.
  • Certificates and keys of deleted routes are removed from nginx nodes, including the ones left by earlier releases.
  • A route whose node is offline can be deleted; the node drops it when it reconnects.
  • Pages upload finalize reports a Deployment that will be published automatically instead of failing.
  • Pages uploads on a full Opfield disk are refused at the start, with the real fill level.
  • Deleting a Pages project no longer leaves an empty folder on the Opfield host.
  • The AI assistant says which inference budget ran out and when it works again, instead of a rate-limit message.
  • Inference activity records an answer stopped by the provider's content filter as content_filter.
  • Inference activity records a turn the inference core refused as inference_core_unavailable instead of an upstream error.
  • Inference limits show when a user's 5-hour, 7-day or 30-day window does not apply because the default limits turn it off.
  • Creating a database or storage on several servers now reports a failure within 3 minutes instead of reporting it as created.
  • A failed create on several servers stays "Creating" until it is cleaned up and shows why it failed.
  • Turning availability off no longer restarts the database that is kept.
  • Making an offline server primary is refused at once and says the server is not connected.
  • A failed primary switch no longer briefly shows the set as healthy or repeats its alerts.
  • A new copy of a database now shows as "New copy seeded" instead of "rebuilt" and "rejoined".
  • Nodes report a health field: degraded while Docker or nginx cannot work, even when connected.
  • A disk shared by several nodes is named as one shared disk in its alert.
  • Node online and offline alerts now carry the node ID and its real hostname.
  • Database and storage lists can be filtered by name.
  • Internal PKI revocation lists now list every revoked certificate correctly, and existing lists are fixed on update.
  • Revocation lists include their CRL number and the issuing CA's key identifier.
  • Revoking a certificate a route still serves says so, and its linked SSL certificate shows the revocation.
  • Deleting a CA says that its revocation list ends with it.
  • Custom threshold alerts say which value crossed the limit.
  • An open threshold alert's message follows the current value.
  • Opfield disk alerts name the disk that is full.
  • The alert list's resource filter also finds a node's disk and container alerts, and resources by name.
  • MCP tools name an argument they do not take, and say when an id is not a UUID.
  • manage_ssl_certificate refuses unknown arguments and lists the valid ones.
  • Refused API requests return a meaningful error code instead of HTTP_ERROR.
  • The access list API rejects fields it does not know.
  • Error messages give full REST paths.
  • write_file points to create_file for a new file.
  • gitlab_create_branch accepts fromRef.
  • Rebuilds after a Build Secret or build setting change are labelled as configuration builds.
  • A build that starts while the internal registry is collecting garbage waits for it, and is retried if the registry restarts mid-push.
  • Rollback refusals list the builds you can roll back to.
  • The registry shows a new storage backend right after a switch, and its disk-full percentage matches df.
  • Old registry storage backups and update migration backups, which hold old secrets, are removed.
  • Pulling an image a node has no grant for answers "denied" instead of 503.
  • Housekeeping's low-disk run waits its hour across restarts.
  • A Housekeeping run is no longer counted as failed because registry maintenance was already running.
  • Partial files of abandoned node file uploads are removed within minutes, also after a restart.
  • The backup storage check writes its test file inside the policy prefix.
  • Daemons remove installer backups of their binary after 14 days.
  • Daemons log the leftovers they clean up at start.
  • A trimmed daemon log keeps its file permissions.
  • Opfield refuses an SSH connector to a node by the node's SSH host key, whatever address reaches it.
  • The node console docs and messages for agents now say plainly that the console sandbox only guards against accidental Docker use and is not a security boundary.
  • New installations use Opfield names throughout: data paths, container labels, volumes and environment; existing installations keep working as they are.
  • Installations read the release feed from get.opfield.dev/opfield.
  • Opfield images are published only to ghcr.io/opfield/opfield.
  • Container archives use the Opfield container archive format (.ofca, application/vnd.opfield.ofca); archives exported by earlier releases cannot be imported.
  • The Pages documentation, tool descriptions and errors for AI agents explain each upload step and name the expected values.
  • The Secure Runtime smoke test of a Docker node no longer raises a "Container changed outside Opfield" alert.
  • Permission restriction pickers list resources that belong to an app under the app and its environments, and dropdown searches no longer reset while the menu closes.

Nginx Daemonv2.12.3-nginx

  • Domains can belong to an app, and apps and environments can limit the domains they use (wildcards like *.example.com).
  • Creating a route can create its missing Cloudflare domains.
  • The Secure Link tab shows for routes whose links come from additional routes.
  • A build for a container you stopped updates its image without starting it.
  • Git-source containers take environment variables, secrets and volumes before their first build.
  • Managed Postgres runs on Opfield's own images with extensions; PostGIS and pgRouting install on demand from the Extensions tab.
  • Recreating a container with a volume on a path the image declares no longer fails with "Duplicate mount point".
  • Duplicated and migrated containers keep their own anonymous volumes and data.
  • Routes behind Cloudflare see the real client IP in access lists, rate limits, logs and app headers; each route has a Client IP setting.
  • Pages serve the project's own 404.html for missing paths.
  • Build security policy can block only vulnerabilities that have a fix, for application packages or all packages.
  • Build logs keep whole lines.
  • Build Workers can be paused for new builds.
  • Logs, console and files wait for a recreated container and reconnect instead of showing a token error.
  • Container pages show full volume names, and every link row shows its node and status the same way.
  • Users limited to an app no longer see empty Docker tabs or create buttons they can't use; a page with one tab opens it directly.
  • Streamed AI answers end cleanly and name the published model.
  • Chat requests through API-key providers such as OpenRouter count their tokens and cost against budgets.
  • Models whose names contain brackets get a valid suggested ID.
  • Managed cloud installations support a custom domain, cloud email and the Opfield Cloud AI provider.
  • AI agents can provision servers through hosting providers with documented steps.
  • AI changes to a source's or Pages project's build policy are saved.
  • Bastion nodes can't be created yet; they arrive in 2.14.
  • The unused hosting top-up permission is removed.
  • A Git source shows why its build failed or deployed nothing, and its first build starts at once.
  • Git sources refuse Compose service and blue/green slot containers as targets.
  • AI agents can no longer change Opfield-managed containers from the node console.
  • New built-in alert: Container changed outside Opfield.
  • The admin password link says when it is rate limited.
  • Managed Postgres with availability works with container links.
  • A create on several servers that fails keeps the database or storage on its first server.
  • Deleting a database on several servers completes.
  • Duplicating a container from an image with a volume works.
  • Opfield says clearly when every Build Worker is paused.
  • Starting a Compose project that was never applied says to apply it first.
  • Pages previews of single-page apps return 404 for missing files.
  • The internal registry keeps 2 builds per container.
  • The internal registry can store its data in S3.
  • Build images on nodes follow the container's image cleanup setting.
  • Built-in disk alerts at 85%.
  • Access list rules (and route rewrites and VM firewall rules) can be reordered; rules that can never match are flagged.
  • The failover order of managed databases and storage can be changed.
  • Pinned Pages deployments stay on top.
  • A Pages project without a route is healthy and has a preview.
  • Pinned containers stay pinned after a recreate.
  • Quoted entrypoint and command arguments survive saving deployment settings.
  • The access list API no longer returns password hashes.
  • Docker nodes remove images nothing runs after 12 hours unused; each container keeps its running image and one to roll back to.
  • Database and storage nodes remove old engine images they no longer use.
  • Housekeeping removes old Opfield and relay images on the Opfield host.
  • The internal registry deletes the builds of deleted sources and stops taking builds when its disk is 90% full.
  • Nginx nodes keep route logs within a size limit and remove the logs of deleted routes.
  • Housekeeping shows the real size of nginx logs.
  • Container logs on Docker nodes stay bounded, also for containers created before or outside Opfield.
  • Daemon logs on Alpine hosts no longer grow without limit.
  • The local ClickHouse and the Inference core no longer fill the Opfield disk with logs.
  • Nginx nodes keep only the Pages config versions they need.
  • Pages Routes are no longer republished every minute when a node does not answer.
  • Interrupted Pages uploads, old certificate versions and other leftovers are removed from nginx nodes.
  • Pages uploads are refused when the Opfield disk or the node is almost full.
  • Certificates of deleted routes are removed from nodes that were offline at the time.
  • Build Workers clean their scanner files and caches while idle.
  • Interrupted daemon updates and abandoned node file uploads no longer leave files behind.
  • Old private core versions are removed from the Opfield host after an update.
  • Housekeeping shows what fills each Opfield disk, the largest database tables, Redis and container logs.
  • Housekeeping removes old build logs and inference usage records; lifetime usage totals stay.
  • Housekeeping keeps Opfield's own data bounded even when it is switched off, and runs at once when an Opfield disk is 90% full.
  • New built-in alerts: Opfield disk full, Housekeeping not running.
  • The node disk alert covers every data disk of a node; new alerts for full database disks and oversubscribed nodes.
  • Removing a container, deployment slot or Availability placement also removes its anonymous volumes; volumes you manage or name in a configuration are kept.
  • Orphaned Volumes removes only volumes Opfield created; other unused volumes are listed and kept.
  • Postgres WAL and replication slots no longer fill a database disk.
  • A key-value store with an AOF rewrite setting of 0 no longer grows its file without limit.
  • SeaweedFS storage reclaims deleted space and removes stale multipart uploads.
  • Failed or stopped backups no longer leave partial files at the destination.
  • A repeated alert updates the open alert instead of adding a new one.
  • Housekeeping removes old operation history, run records and finished jobs.
  • An AI Chat Completions request close to its budget limit is no longer refused for being counted twice.
  • The Z.AI Coding Plan provider lists GLM-5.3 Flash.
  • Agent console commands that use Docker are refused with the Opfield tool to use instead, and the assistant no longer asks you to approve them.
  • Agents can no longer run commands over SSH on hosts that are Opfield nodes.
  • The "Container changed outside Opfield" alert now fires for containers removed by hand.
  • The assistant now says when your inference budget is used up or the model's content filter stopped an answer, instead of a generic error.
  • Password setup links are limited to 3 per user per hour, like reset links.
  • Killing Opfield during a registry storage switch no longer leaves the registry on a different storage than its settings; Opfield repairs it until both agree and shows the repair state.
  • The registry storage picker no longer offers managed storage connections, which the registry cannot reach.
  • A registry storage switch checks every image the registry keeps for workloads, not only pinned ones.
  • Sync now answers when the internal registry refuses builds, and the source state says which commit was not built and why.
  • Housekeeping shows container log and registry sizes as file sizes, comparable with the log size limit.
  • Housekeeping shows the real size of unused volumes.
  • Image cleanup "off" on a blue/green deployment keeps all its images.
  • Build images of deleted Git sources stay on nodes for 12 hours as documented.
  • Housekeeping shows per node where old Docker images are and what the next run removes; Prune lists what it would remove first.
  • Detaching a Git source keeps the image the container runs.
  • A Git-source container can be rolled back to its previous build: Roll back on the Source tab, the API, or manage_docker_source rollback.
  • A Git source whose container was removed outside Opfield can now be removed, which frees the container name.
  • A failed build now shows the failing Dockerfile step and its exit code.
  • Build logs no longer end with the builder's cache cleanup table.
  • Finished builds no longer show their rollout as still running.
  • The first build after connecting a repository is now marked as "attach".
  • Starting a Compose operation from the assistant or MCP no longer needs an idempotency key.
  • Connecting a repository through MCP accepts the repository's owner/name.
  • Connecting a repository to a running container now says that the first build replaces its image and may change the port the app listens on.
  • The container details in MCP show the connected Git source.
  • Invalid assistant and MCP arguments now list the allowed values.
  • Container logs with no output come back as an empty list.
  • Volume lists and details in MCP show how much space each volume uses.
  • MCP and the API can list the alerts that are firing now and the alert history of the last 30 days.
  • MCP can create and delete branches on GitHub, GitLab and generic Git.
  • Revoked or expired PKI certificates can be deleted (UI, API, MCP).
  • A route shows its PKI certificate in the console and in get_route.
  • A client blocked by a route's access list now gets 403 while the route is in maintenance.
  • Access list warnings in the API and MCP name the rule's 0-based index.
  • The MCP docs now say an external-DNS domain is added after its DNS points at Opfield, and the error lists the records to create.
  • The MCP inference docs match the tools: they cover reset_user and reorder.
  • The docs now cover failed creates on several servers and the availability error codes.
  • A Docker node whose Docker Engine cannot start containers now shows as degraded with the reason, and the new built-in alert "Docker runtime unavailable" fires.
  • One disk shared by several nodes on the same machine raises one disk alert that names all of them.
  • Node disk lists no longer miss disks of managed databases, storage or volumes.
  • A failed create on several servers names the database or storage it kept, with its server.
  • A create on several servers waits longer for slow servers, survives an Opfield restart, and the resource shows why it ended on one server.
  • Databases and storage on several servers show Creating and Deleting while those run.
  • Availability witnesses show whether the lease reaches them, and a copy that stopped reporting no longer shows as eligible.
  • Availability errors say when a node is not connected instead of claiming it lacks support.
  • Alerts and pickers name nodes by their display name.
  • A managed engine killed by another process is no longer reported as out of memory.
  • Creating a database or making it available on several servers no longer records a false "rejoin failed" event.
  • Servers remove the leftover availability files of sets they no longer run, and release a failed set at once.
  • A removed object storage set no longer leaves a retry loop logging every second.
  • Housekeeping no longer shows a last success that never ran.
  • An nginx node whose nginx is stopped no longer reports its valid configuration as invalid.
  • Inference: a request refused for an exhausted budget now answers 429 with its error code, the recovery time and Retry-After on every endpoint and core version.
  • Inference: a refused request shows its budget error in activity instead of upstream_error.
  • Inference: Chat Completions requests now count their prompt size when reserving budget.
  • Inference: a connection over its monthly API limit hands the request to another connection or refuses it, instead of answering 503.
  • Inference: the error for a typed model id names discoveredModelId and the discovered models.
  • Inference: usage windows that do not limit a user no longer show 100%.
  • Assistant and MCP node console commands run as root, so agents can repair a node, but Docker, containerd and Podman are masked in the agent console (an accident guard, not a security boundary).
  • The agent console now works on nodes whose daemon does not run as root: commands run as the daemon's user, and the result says what that limits.
  • Agent console commands can run up to 5 minutes, and a failed or timed-out command still returns its output and exit code.
  • Agents can no longer reach an Opfield node over SSH through an address the node doesn't report.
  • Stopping, killing, pausing or updating a managed container outside Opfield now raises the "changed outside Opfield" alert, and the message says what the change means.
  • The "changed outside Opfield" alert no longer mentions reset permissions for a container someone created by hand.
  • A container change right after an Opfield action on it is no longer missed.
  • Audit entries for changes made outside Opfield no longer show another request's user agent, address or token.
  • Creating a volume through the API or MCP returns the new volume.
  • The password setup link limit message says that the link sent when the account was created counts toward the limit.
  • During route maintenance, a client the access list denies gets 403 instead of the maintenance page.
  • Every page nginx generates itself (errors, denied clients, unreachable upstreams, the default server) is now an Opfield page; applications' own error pages pass through unchanged.
  • Certificates and keys of deleted routes are removed from nginx nodes, including the ones left by earlier releases.
  • A route whose node is offline can be deleted; the node drops it when it reconnects.
  • Pages upload finalize reports a Deployment that will be published automatically instead of failing.
  • Pages uploads on a full Opfield disk are refused at the start, with the real fill level.
  • Deleting a Pages project no longer leaves an empty folder on the Opfield host.
  • The AI assistant says which inference budget ran out and when it works again, instead of a rate-limit message.
  • Inference activity records an answer stopped by the provider's content filter as content_filter.
  • Inference activity records a turn the inference core refused as inference_core_unavailable instead of an upstream error.
  • Inference limits show when a user's 5-hour, 7-day or 30-day window does not apply because the default limits turn it off.
  • Creating a database or storage on several servers now reports a failure within 3 minutes instead of reporting it as created.
  • A failed create on several servers stays "Creating" until it is cleaned up and shows why it failed.
  • Turning availability off no longer restarts the database that is kept.
  • Making an offline server primary is refused at once and says the server is not connected.
  • A failed primary switch no longer briefly shows the set as healthy or repeats its alerts.
  • A new copy of a database now shows as "New copy seeded" instead of "rebuilt" and "rejoined".
  • Nodes report a health field: degraded while Docker or nginx cannot work, even when connected.
  • A disk shared by several nodes is named as one shared disk in its alert.
  • Node online and offline alerts now carry the node ID and its real hostname.
  • Database and storage lists can be filtered by name.
  • Internal PKI revocation lists now list every revoked certificate correctly, and existing lists are fixed on update.
  • Revocation lists include their CRL number and the issuing CA's key identifier.
  • Revoking a certificate a route still serves says so, and its linked SSL certificate shows the revocation.
  • Deleting a CA says that its revocation list ends with it.
  • Custom threshold alerts say which value crossed the limit.
  • An open threshold alert's message follows the current value.
  • Opfield disk alerts name the disk that is full.
  • The alert list's resource filter also finds a node's disk and container alerts, and resources by name.
  • MCP tools name an argument they do not take, and say when an id is not a UUID.
  • manage_ssl_certificate refuses unknown arguments and lists the valid ones.
  • Refused API requests return a meaningful error code instead of HTTP_ERROR.
  • The access list API rejects fields it does not know.
  • Error messages give full REST paths.
  • write_file points to create_file for a new file.
  • gitlab_create_branch accepts fromRef.
  • Rebuilds after a Build Secret or build setting change are labelled as configuration builds.
  • A build that starts while the internal registry is collecting garbage waits for it, and is retried if the registry restarts mid-push.
  • Rollback refusals list the builds you can roll back to.
  • The registry shows a new storage backend right after a switch, and its disk-full percentage matches df.
  • Old registry storage backups and update migration backups, which hold old secrets, are removed.
  • Pulling an image a node has no grant for answers "denied" instead of 503.
  • Housekeeping's low-disk run waits its hour across restarts.
  • A Housekeeping run is no longer counted as failed because registry maintenance was already running.
  • Partial files of abandoned node file uploads are removed within minutes, also after a restart.
  • The backup storage check writes its test file inside the policy prefix.
  • Daemons remove installer backups of their binary after 14 days.
  • Daemons log the leftovers they clean up at start.
  • A trimmed daemon log keeps its file permissions.
  • Opfield refuses an SSH connector to a node by the node's SSH host key, whatever address reaches it.
  • The node console docs and messages for agents now say plainly that the console sandbox only guards against accidental Docker use and is not a security boundary.
  • New installations use Opfield names throughout: data paths, container labels, volumes and environment; existing installations keep working as they are.
  • Installations read the release feed from get.opfield.dev/opfield.
  • Opfield images are published only to ghcr.io/opfield/opfield.
  • Container archives use the Opfield container archive format (.ofca, application/vnd.opfield.ofca); archives exported by earlier releases cannot be imported.
  • The Pages documentation, tool descriptions and errors for AI agents explain each upload step and name the expected values.
  • The Secure Runtime smoke test of a Docker node no longer raises a "Container changed outside Opfield" alert.
  • Permission restriction pickers list resources that belong to an app under the app and its environments, and dropdown searches no longer reset while the menu closes.

Opfield Relayv2.12.3-relay

  • Domains can belong to an app, and apps and environments can limit the domains they use (wildcards like *.example.com).
  • Creating a route can create its missing Cloudflare domains.
  • The Secure Link tab shows for routes whose links come from additional routes.
  • A build for a container you stopped updates its image without starting it.
  • Git-source containers take environment variables, secrets and volumes before their first build.
  • Managed Postgres runs on Opfield's own images with extensions; PostGIS and pgRouting install on demand from the Extensions tab.
  • Recreating a container with a volume on a path the image declares no longer fails with "Duplicate mount point".
  • Duplicated and migrated containers keep their own anonymous volumes and data.
  • Routes behind Cloudflare see the real client IP in access lists, rate limits, logs and app headers; each route has a Client IP setting.
  • Pages serve the project's own 404.html for missing paths.
  • Build security policy can block only vulnerabilities that have a fix, for application packages or all packages.
  • Build logs keep whole lines.
  • Build Workers can be paused for new builds.
  • Logs, console and files wait for a recreated container and reconnect instead of showing a token error.
  • Container pages show full volume names, and every link row shows its node and status the same way.
  • Users limited to an app no longer see empty Docker tabs or create buttons they can't use; a page with one tab opens it directly.
  • Streamed AI answers end cleanly and name the published model.
  • Chat requests through API-key providers such as OpenRouter count their tokens and cost against budgets.
  • Models whose names contain brackets get a valid suggested ID.
  • Managed cloud installations support a custom domain, cloud email and the Opfield Cloud AI provider.
  • AI agents can provision servers through hosting providers with documented steps.
  • AI changes to a source's or Pages project's build policy are saved.
  • Bastion nodes can't be created yet; they arrive in 2.14.
  • The unused hosting top-up permission is removed.
  • A Git source shows why its build failed or deployed nothing, and its first build starts at once.
  • Git sources refuse Compose service and blue/green slot containers as targets.
  • AI agents can no longer change Opfield-managed containers from the node console.
  • New built-in alert: Container changed outside Opfield.
  • The admin password link says when it is rate limited.
  • Managed Postgres with availability works with container links.
  • A create on several servers that fails keeps the database or storage on its first server.
  • Deleting a database on several servers completes.
  • Duplicating a container from an image with a volume works.
  • Opfield says clearly when every Build Worker is paused.
  • Starting a Compose project that was never applied says to apply it first.
  • Pages previews of single-page apps return 404 for missing files.
  • The internal registry keeps 2 builds per container.
  • The internal registry can store its data in S3.
  • Build images on nodes follow the container's image cleanup setting.
  • Built-in disk alerts at 85%.
  • Access list rules (and route rewrites and VM firewall rules) can be reordered; rules that can never match are flagged.
  • The failover order of managed databases and storage can be changed.
  • Pinned Pages deployments stay on top.
  • A Pages project without a route is healthy and has a preview.
  • Pinned containers stay pinned after a recreate.
  • Quoted entrypoint and command arguments survive saving deployment settings.
  • The access list API no longer returns password hashes.
  • Docker nodes remove images nothing runs after 12 hours unused; each container keeps its running image and one to roll back to.
  • Database and storage nodes remove old engine images they no longer use.
  • Housekeeping removes old Opfield and relay images on the Opfield host.
  • The internal registry deletes the builds of deleted sources and stops taking builds when its disk is 90% full.
  • Nginx nodes keep route logs within a size limit and remove the logs of deleted routes.
  • Housekeeping shows the real size of nginx logs.
  • Container logs on Docker nodes stay bounded, also for containers created before or outside Opfield.
  • Daemon logs on Alpine hosts no longer grow without limit.
  • The local ClickHouse and the Inference core no longer fill the Opfield disk with logs.
  • Nginx nodes keep only the Pages config versions they need.
  • Pages Routes are no longer republished every minute when a node does not answer.
  • Interrupted Pages uploads, old certificate versions and other leftovers are removed from nginx nodes.
  • Pages uploads are refused when the Opfield disk or the node is almost full.
  • Certificates of deleted routes are removed from nodes that were offline at the time.
  • Build Workers clean their scanner files and caches while idle.
  • Interrupted daemon updates and abandoned node file uploads no longer leave files behind.
  • Old private core versions are removed from the Opfield host after an update.
  • Housekeeping shows what fills each Opfield disk, the largest database tables, Redis and container logs.
  • Housekeeping removes old build logs and inference usage records; lifetime usage totals stay.
  • Housekeeping keeps Opfield's own data bounded even when it is switched off, and runs at once when an Opfield disk is 90% full.
  • New built-in alerts: Opfield disk full, Housekeeping not running.
  • The node disk alert covers every data disk of a node; new alerts for full database disks and oversubscribed nodes.
  • Removing a container, deployment slot or Availability placement also removes its anonymous volumes; volumes you manage or name in a configuration are kept.
  • Orphaned Volumes removes only volumes Opfield created; other unused volumes are listed and kept.
  • Postgres WAL and replication slots no longer fill a database disk.
  • A key-value store with an AOF rewrite setting of 0 no longer grows its file without limit.
  • SeaweedFS storage reclaims deleted space and removes stale multipart uploads.
  • Failed or stopped backups no longer leave partial files at the destination.
  • A repeated alert updates the open alert instead of adding a new one.
  • Housekeeping removes old operation history, run records and finished jobs.
  • An AI Chat Completions request close to its budget limit is no longer refused for being counted twice.
  • The Z.AI Coding Plan provider lists GLM-5.3 Flash.
  • Agent console commands that use Docker are refused with the Opfield tool to use instead, and the assistant no longer asks you to approve them.
  • Agents can no longer run commands over SSH on hosts that are Opfield nodes.
  • The "Container changed outside Opfield" alert now fires for containers removed by hand.
  • The assistant now says when your inference budget is used up or the model's content filter stopped an answer, instead of a generic error.
  • Password setup links are limited to 3 per user per hour, like reset links.
  • Killing Opfield during a registry storage switch no longer leaves the registry on a different storage than its settings; Opfield repairs it until both agree and shows the repair state.
  • The registry storage picker no longer offers managed storage connections, which the registry cannot reach.
  • A registry storage switch checks every image the registry keeps for workloads, not only pinned ones.
  • Sync now answers when the internal registry refuses builds, and the source state says which commit was not built and why.
  • Housekeeping shows container log and registry sizes as file sizes, comparable with the log size limit.
  • Housekeeping shows the real size of unused volumes.
  • Image cleanup "off" on a blue/green deployment keeps all its images.
  • Build images of deleted Git sources stay on nodes for 12 hours as documented.
  • Housekeeping shows per node where old Docker images are and what the next run removes; Prune lists what it would remove first.
  • Detaching a Git source keeps the image the container runs.
  • A Git-source container can be rolled back to its previous build: Roll back on the Source tab, the API, or manage_docker_source rollback.
  • A Git source whose container was removed outside Opfield can now be removed, which frees the container name.
  • A failed build now shows the failing Dockerfile step and its exit code.
  • Build logs no longer end with the builder's cache cleanup table.
  • Finished builds no longer show their rollout as still running.
  • The first build after connecting a repository is now marked as "attach".
  • Starting a Compose operation from the assistant or MCP no longer needs an idempotency key.
  • Connecting a repository through MCP accepts the repository's owner/name.
  • Connecting a repository to a running container now says that the first build replaces its image and may change the port the app listens on.
  • The container details in MCP show the connected Git source.
  • Invalid assistant and MCP arguments now list the allowed values.
  • Container logs with no output come back as an empty list.
  • Volume lists and details in MCP show how much space each volume uses.
  • MCP and the API can list the alerts that are firing now and the alert history of the last 30 days.
  • MCP can create and delete branches on GitHub, GitLab and generic Git.
  • Revoked or expired PKI certificates can be deleted (UI, API, MCP).
  • A route shows its PKI certificate in the console and in get_route.
  • A client blocked by a route's access list now gets 403 while the route is in maintenance.
  • Access list warnings in the API and MCP name the rule's 0-based index.
  • The MCP docs now say an external-DNS domain is added after its DNS points at Opfield, and the error lists the records to create.
  • The MCP inference docs match the tools: they cover reset_user and reorder.
  • The docs now cover failed creates on several servers and the availability error codes.
  • A Docker node whose Docker Engine cannot start containers now shows as degraded with the reason, and the new built-in alert "Docker runtime unavailable" fires.
  • One disk shared by several nodes on the same machine raises one disk alert that names all of them.
  • Node disk lists no longer miss disks of managed databases, storage or volumes.
  • A failed create on several servers names the database or storage it kept, with its server.
  • A create on several servers waits longer for slow servers, survives an Opfield restart, and the resource shows why it ended on one server.
  • Databases and storage on several servers show Creating and Deleting while those run.
  • Availability witnesses show whether the lease reaches them, and a copy that stopped reporting no longer shows as eligible.
  • Availability errors say when a node is not connected instead of claiming it lacks support.
  • Alerts and pickers name nodes by their display name.
  • A managed engine killed by another process is no longer reported as out of memory.
  • Creating a database or making it available on several servers no longer records a false "rejoin failed" event.
  • Servers remove the leftover availability files of sets they no longer run, and release a failed set at once.
  • A removed object storage set no longer leaves a retry loop logging every second.
  • Housekeeping no longer shows a last success that never ran.
  • An nginx node whose nginx is stopped no longer reports its valid configuration as invalid.
  • Inference: a request refused for an exhausted budget now answers 429 with its error code, the recovery time and Retry-After on every endpoint and core version.
  • Inference: a refused request shows its budget error in activity instead of upstream_error.
  • Inference: Chat Completions requests now count their prompt size when reserving budget.
  • Inference: a connection over its monthly API limit hands the request to another connection or refuses it, instead of answering 503.
  • Inference: the error for a typed model id names discoveredModelId and the discovered models.
  • Inference: usage windows that do not limit a user no longer show 100%.
  • Assistant and MCP node console commands run as root, so agents can repair a node, but Docker, containerd and Podman are masked in the agent console (an accident guard, not a security boundary).
  • The agent console now works on nodes whose daemon does not run as root: commands run as the daemon's user, and the result says what that limits.
  • Agent console commands can run up to 5 minutes, and a failed or timed-out command still returns its output and exit code.
  • Agents can no longer reach an Opfield node over SSH through an address the node doesn't report.
  • Stopping, killing, pausing or updating a managed container outside Opfield now raises the "changed outside Opfield" alert, and the message says what the change means.
  • The "changed outside Opfield" alert no longer mentions reset permissions for a container someone created by hand.
  • A container change right after an Opfield action on it is no longer missed.
  • Audit entries for changes made outside Opfield no longer show another request's user agent, address or token.
  • Creating a volume through the API or MCP returns the new volume.
  • The password setup link limit message says that the link sent when the account was created counts toward the limit.
  • During route maintenance, a client the access list denies gets 403 instead of the maintenance page.
  • Every page nginx generates itself (errors, denied clients, unreachable upstreams, the default server) is now an Opfield page; applications' own error pages pass through unchanged.
  • Certificates and keys of deleted routes are removed from nginx nodes, including the ones left by earlier releases.
  • A route whose node is offline can be deleted; the node drops it when it reconnects.
  • Pages upload finalize reports a Deployment that will be published automatically instead of failing.
  • Pages uploads on a full Opfield disk are refused at the start, with the real fill level.
  • Deleting a Pages project no longer leaves an empty folder on the Opfield host.
  • The AI assistant says which inference budget ran out and when it works again, instead of a rate-limit message.
  • Inference activity records an answer stopped by the provider's content filter as content_filter.
  • Inference activity records a turn the inference core refused as inference_core_unavailable instead of an upstream error.
  • Inference limits show when a user's 5-hour, 7-day or 30-day window does not apply because the default limits turn it off.
  • Creating a database or storage on several servers now reports a failure within 3 minutes instead of reporting it as created.
  • A failed create on several servers stays "Creating" until it is cleaned up and shows why it failed.
  • Turning availability off no longer restarts the database that is kept.
  • Making an offline server primary is refused at once and says the server is not connected.
  • A failed primary switch no longer briefly shows the set as healthy or repeats its alerts.
  • A new copy of a database now shows as "New copy seeded" instead of "rebuilt" and "rejoined".
  • Nodes report a health field: degraded while Docker or nginx cannot work, even when connected.
  • A disk shared by several nodes is named as one shared disk in its alert.
  • Node online and offline alerts now carry the node ID and its real hostname.
  • Database and storage lists can be filtered by name.
  • Internal PKI revocation lists now list every revoked certificate correctly, and existing lists are fixed on update.
  • Revocation lists include their CRL number and the issuing CA's key identifier.
  • Revoking a certificate a route still serves says so, and its linked SSL certificate shows the revocation.
  • Deleting a CA says that its revocation list ends with it.
  • Custom threshold alerts say which value crossed the limit.
  • An open threshold alert's message follows the current value.
  • Opfield disk alerts name the disk that is full.
  • The alert list's resource filter also finds a node's disk and container alerts, and resources by name.
  • MCP tools name an argument they do not take, and say when an id is not a UUID.
  • manage_ssl_certificate refuses unknown arguments and lists the valid ones.
  • Refused API requests return a meaningful error code instead of HTTP_ERROR.
  • The access list API rejects fields it does not know.
  • Error messages give full REST paths.
  • write_file points to create_file for a new file.
  • gitlab_create_branch accepts fromRef.
  • Rebuilds after a Build Secret or build setting change are labelled as configuration builds.
  • A build that starts while the internal registry is collecting garbage waits for it, and is retried if the registry restarts mid-push.
  • Rollback refusals list the builds you can roll back to.
  • The registry shows a new storage backend right after a switch, and its disk-full percentage matches df.
  • Old registry storage backups and update migration backups, which hold old secrets, are removed.
  • Pulling an image a node has no grant for answers "denied" instead of 503.
  • Housekeeping's low-disk run waits its hour across restarts.
  • A Housekeeping run is no longer counted as failed because registry maintenance was already running.
  • Partial files of abandoned node file uploads are removed within minutes, also after a restart.
  • The backup storage check writes its test file inside the policy prefix.
  • Daemons remove installer backups of their binary after 14 days.
  • Daemons log the leftovers they clean up at start.
  • A trimmed daemon log keeps its file permissions.
  • Opfield refuses an SSH connector to a node by the node's SSH host key, whatever address reaches it.
  • The node console docs and messages for agents now say plainly that the console sandbox only guards against accidental Docker use and is not a security boundary.
  • New installations use Opfield names throughout: data paths, container labels, volumes and environment; existing installations keep working as they are.
  • Installations read the release feed from get.opfield.dev/opfield.
  • Opfield images are published only to ghcr.io/opfield/opfield.
  • Container archives use the Opfield container archive format (.ofca, application/vnd.opfield.ofca); archives exported by earlier releases cannot be imported.
  • The Pages documentation, tool descriptions and errors for AI agents explain each upload step and name the expected values.
  • The Secure Runtime smoke test of a Docker node no longer raises a "Container changed outside Opfield" alert.
  • Permission restriction pickers list resources that belong to an app under the app and its environments, and dropdown searches no longer reset while the menu closes.

Lease Watchdogv2.12.3-watchdog

  • Domains can belong to an app, and apps and environments can limit the domains they use (wildcards like *.example.com).
  • Creating a route can create its missing Cloudflare domains.
  • The Secure Link tab shows for routes whose links come from additional routes.
  • A build for a container you stopped updates its image without starting it.
  • Git-source containers take environment variables, secrets and volumes before their first build.
  • Managed Postgres runs on Opfield's own images with extensions; PostGIS and pgRouting install on demand from the Extensions tab.
  • Recreating a container with a volume on a path the image declares no longer fails with "Duplicate mount point".
  • Duplicated and migrated containers keep their own anonymous volumes and data.
  • Routes behind Cloudflare see the real client IP in access lists, rate limits, logs and app headers; each route has a Client IP setting.
  • Pages serve the project's own 404.html for missing paths.
  • Build security policy can block only vulnerabilities that have a fix, for application packages or all packages.
  • Build logs keep whole lines.
  • Build Workers can be paused for new builds.
  • Logs, console and files wait for a recreated container and reconnect instead of showing a token error.
  • Container pages show full volume names, and every link row shows its node and status the same way.
  • Users limited to an app no longer see empty Docker tabs or create buttons they can't use; a page with one tab opens it directly.
  • Streamed AI answers end cleanly and name the published model.
  • Chat requests through API-key providers such as OpenRouter count their tokens and cost against budgets.
  • Models whose names contain brackets get a valid suggested ID.
  • Managed cloud installations support a custom domain, cloud email and the Opfield Cloud AI provider.
  • AI agents can provision servers through hosting providers with documented steps.
  • AI changes to a source's or Pages project's build policy are saved.
  • Bastion nodes can't be created yet; they arrive in 2.14.
  • The unused hosting top-up permission is removed.
  • A Git source shows why its build failed or deployed nothing, and its first build starts at once.
  • Git sources refuse Compose service and blue/green slot containers as targets.
  • AI agents can no longer change Opfield-managed containers from the node console.
  • New built-in alert: Container changed outside Opfield.
  • The admin password link says when it is rate limited.
  • Managed Postgres with availability works with container links.
  • A create on several servers that fails keeps the database or storage on its first server.
  • Deleting a database on several servers completes.
  • Duplicating a container from an image with a volume works.
  • Opfield says clearly when every Build Worker is paused.
  • Starting a Compose project that was never applied says to apply it first.
  • Pages previews of single-page apps return 404 for missing files.
  • The internal registry keeps 2 builds per container.
  • The internal registry can store its data in S3.
  • Build images on nodes follow the container's image cleanup setting.
  • Built-in disk alerts at 85%.
  • Access list rules (and route rewrites and VM firewall rules) can be reordered; rules that can never match are flagged.
  • The failover order of managed databases and storage can be changed.
  • Pinned Pages deployments stay on top.
  • A Pages project without a route is healthy and has a preview.
  • Pinned containers stay pinned after a recreate.
  • Quoted entrypoint and command arguments survive saving deployment settings.
  • The access list API no longer returns password hashes.
  • Docker nodes remove images nothing runs after 12 hours unused; each container keeps its running image and one to roll back to.
  • Database and storage nodes remove old engine images they no longer use.
  • Housekeeping removes old Opfield and relay images on the Opfield host.
  • The internal registry deletes the builds of deleted sources and stops taking builds when its disk is 90% full.
  • Nginx nodes keep route logs within a size limit and remove the logs of deleted routes.
  • Housekeeping shows the real size of nginx logs.
  • Container logs on Docker nodes stay bounded, also for containers created before or outside Opfield.
  • Daemon logs on Alpine hosts no longer grow without limit.
  • The local ClickHouse and the Inference core no longer fill the Opfield disk with logs.
  • Nginx nodes keep only the Pages config versions they need.
  • Pages Routes are no longer republished every minute when a node does not answer.
  • Interrupted Pages uploads, old certificate versions and other leftovers are removed from nginx nodes.
  • Pages uploads are refused when the Opfield disk or the node is almost full.
  • Certificates of deleted routes are removed from nodes that were offline at the time.
  • Build Workers clean their scanner files and caches while idle.
  • Interrupted daemon updates and abandoned node file uploads no longer leave files behind.
  • Old private core versions are removed from the Opfield host after an update.
  • Housekeeping shows what fills each Opfield disk, the largest database tables, Redis and container logs.
  • Housekeeping removes old build logs and inference usage records; lifetime usage totals stay.
  • Housekeeping keeps Opfield's own data bounded even when it is switched off, and runs at once when an Opfield disk is 90% full.
  • New built-in alerts: Opfield disk full, Housekeeping not running.
  • The node disk alert covers every data disk of a node; new alerts for full database disks and oversubscribed nodes.
  • Removing a container, deployment slot or Availability placement also removes its anonymous volumes; volumes you manage or name in a configuration are kept.
  • Orphaned Volumes removes only volumes Opfield created; other unused volumes are listed and kept.
  • Postgres WAL and replication slots no longer fill a database disk.
  • A key-value store with an AOF rewrite setting of 0 no longer grows its file without limit.
  • SeaweedFS storage reclaims deleted space and removes stale multipart uploads.
  • Failed or stopped backups no longer leave partial files at the destination.
  • A repeated alert updates the open alert instead of adding a new one.
  • Housekeeping removes old operation history, run records and finished jobs.
  • An AI Chat Completions request close to its budget limit is no longer refused for being counted twice.
  • The Z.AI Coding Plan provider lists GLM-5.3 Flash.
  • Agent console commands that use Docker are refused with the Opfield tool to use instead, and the assistant no longer asks you to approve them.
  • Agents can no longer run commands over SSH on hosts that are Opfield nodes.
  • The "Container changed outside Opfield" alert now fires for containers removed by hand.
  • The assistant now says when your inference budget is used up or the model's content filter stopped an answer, instead of a generic error.
  • Password setup links are limited to 3 per user per hour, like reset links.
  • Killing Opfield during a registry storage switch no longer leaves the registry on a different storage than its settings; Opfield repairs it until both agree and shows the repair state.
  • The registry storage picker no longer offers managed storage connections, which the registry cannot reach.
  • A registry storage switch checks every image the registry keeps for workloads, not only pinned ones.
  • Sync now answers when the internal registry refuses builds, and the source state says which commit was not built and why.
  • Housekeeping shows container log and registry sizes as file sizes, comparable with the log size limit.
  • Housekeeping shows the real size of unused volumes.
  • Image cleanup "off" on a blue/green deployment keeps all its images.
  • Build images of deleted Git sources stay on nodes for 12 hours as documented.
  • Housekeeping shows per node where old Docker images are and what the next run removes; Prune lists what it would remove first.
  • Detaching a Git source keeps the image the container runs.
  • A Git-source container can be rolled back to its previous build: Roll back on the Source tab, the API, or manage_docker_source rollback.
  • A Git source whose container was removed outside Opfield can now be removed, which frees the container name.
  • A failed build now shows the failing Dockerfile step and its exit code.
  • Build logs no longer end with the builder's cache cleanup table.
  • Finished builds no longer show their rollout as still running.
  • The first build after connecting a repository is now marked as "attach".
  • Starting a Compose operation from the assistant or MCP no longer needs an idempotency key.
  • Connecting a repository through MCP accepts the repository's owner/name.
  • Connecting a repository to a running container now says that the first build replaces its image and may change the port the app listens on.
  • The container details in MCP show the connected Git source.
  • Invalid assistant and MCP arguments now list the allowed values.
  • Container logs with no output come back as an empty list.
  • Volume lists and details in MCP show how much space each volume uses.
  • MCP and the API can list the alerts that are firing now and the alert history of the last 30 days.
  • MCP can create and delete branches on GitHub, GitLab and generic Git.
  • Revoked or expired PKI certificates can be deleted (UI, API, MCP).
  • A route shows its PKI certificate in the console and in get_route.
  • A client blocked by a route's access list now gets 403 while the route is in maintenance.
  • Access list warnings in the API and MCP name the rule's 0-based index.
  • The MCP docs now say an external-DNS domain is added after its DNS points at Opfield, and the error lists the records to create.
  • The MCP inference docs match the tools: they cover reset_user and reorder.
  • The docs now cover failed creates on several servers and the availability error codes.
  • A Docker node whose Docker Engine cannot start containers now shows as degraded with the reason, and the new built-in alert "Docker runtime unavailable" fires.
  • One disk shared by several nodes on the same machine raises one disk alert that names all of them.
  • Node disk lists no longer miss disks of managed databases, storage or volumes.
  • A failed create on several servers names the database or storage it kept, with its server.
  • A create on several servers waits longer for slow servers, survives an Opfield restart, and the resource shows why it ended on one server.
  • Databases and storage on several servers show Creating and Deleting while those run.
  • Availability witnesses show whether the lease reaches them, and a copy that stopped reporting no longer shows as eligible.
  • Availability errors say when a node is not connected instead of claiming it lacks support.
  • Alerts and pickers name nodes by their display name.
  • A managed engine killed by another process is no longer reported as out of memory.
  • Creating a database or making it available on several servers no longer records a false "rejoin failed" event.
  • Servers remove the leftover availability files of sets they no longer run, and release a failed set at once.
  • A removed object storage set no longer leaves a retry loop logging every second.
  • Housekeeping no longer shows a last success that never ran.
  • An nginx node whose nginx is stopped no longer reports its valid configuration as invalid.
  • Inference: a request refused for an exhausted budget now answers 429 with its error code, the recovery time and Retry-After on every endpoint and core version.
  • Inference: a refused request shows its budget error in activity instead of upstream_error.
  • Inference: Chat Completions requests now count their prompt size when reserving budget.
  • Inference: a connection over its monthly API limit hands the request to another connection or refuses it, instead of answering 503.
  • Inference: the error for a typed model id names discoveredModelId and the discovered models.
  • Inference: usage windows that do not limit a user no longer show 100%.
  • Assistant and MCP node console commands run as root, so agents can repair a node, but Docker, containerd and Podman are masked in the agent console (an accident guard, not a security boundary).
  • The agent console now works on nodes whose daemon does not run as root: commands run as the daemon's user, and the result says what that limits.
  • Agent console commands can run up to 5 minutes, and a failed or timed-out command still returns its output and exit code.
  • Agents can no longer reach an Opfield node over SSH through an address the node doesn't report.
  • Stopping, killing, pausing or updating a managed container outside Opfield now raises the "changed outside Opfield" alert, and the message says what the change means.
  • The "changed outside Opfield" alert no longer mentions reset permissions for a container someone created by hand.
  • A container change right after an Opfield action on it is no longer missed.
  • Audit entries for changes made outside Opfield no longer show another request's user agent, address or token.
  • Creating a volume through the API or MCP returns the new volume.
  • The password setup link limit message says that the link sent when the account was created counts toward the limit.
  • During route maintenance, a client the access list denies gets 403 instead of the maintenance page.
  • Every page nginx generates itself (errors, denied clients, unreachable upstreams, the default server) is now an Opfield page; applications' own error pages pass through unchanged.
  • Certificates and keys of deleted routes are removed from nginx nodes, including the ones left by earlier releases.
  • A route whose node is offline can be deleted; the node drops it when it reconnects.
  • Pages upload finalize reports a Deployment that will be published automatically instead of failing.
  • Pages uploads on a full Opfield disk are refused at the start, with the real fill level.
  • Deleting a Pages project no longer leaves an empty folder on the Opfield host.
  • The AI assistant says which inference budget ran out and when it works again, instead of a rate-limit message.
  • Inference activity records an answer stopped by the provider's content filter as content_filter.
  • Inference activity records a turn the inference core refused as inference_core_unavailable instead of an upstream error.
  • Inference limits show when a user's 5-hour, 7-day or 30-day window does not apply because the default limits turn it off.
  • Creating a database or storage on several servers now reports a failure within 3 minutes instead of reporting it as created.
  • A failed create on several servers stays "Creating" until it is cleaned up and shows why it failed.
  • Turning availability off no longer restarts the database that is kept.
  • Making an offline server primary is refused at once and says the server is not connected.
  • A failed primary switch no longer briefly shows the set as healthy or repeats its alerts.
  • A new copy of a database now shows as "New copy seeded" instead of "rebuilt" and "rejoined".
  • Nodes report a health field: degraded while Docker or nginx cannot work, even when connected.
  • A disk shared by several nodes is named as one shared disk in its alert.
  • Node online and offline alerts now carry the node ID and its real hostname.
  • Database and storage lists can be filtered by name.
  • Internal PKI revocation lists now list every revoked certificate correctly, and existing lists are fixed on update.
  • Revocation lists include their CRL number and the issuing CA's key identifier.
  • Revoking a certificate a route still serves says so, and its linked SSL certificate shows the revocation.
  • Deleting a CA says that its revocation list ends with it.
  • Custom threshold alerts say which value crossed the limit.
  • An open threshold alert's message follows the current value.
  • Opfield disk alerts name the disk that is full.
  • The alert list's resource filter also finds a node's disk and container alerts, and resources by name.
  • MCP tools name an argument they do not take, and say when an id is not a UUID.
  • manage_ssl_certificate refuses unknown arguments and lists the valid ones.
  • Refused API requests return a meaningful error code instead of HTTP_ERROR.
  • The access list API rejects fields it does not know.
  • Error messages give full REST paths.
  • write_file points to create_file for a new file.
  • gitlab_create_branch accepts fromRef.
  • Rebuilds after a Build Secret or build setting change are labelled as configuration builds.
  • A build that starts while the internal registry is collecting garbage waits for it, and is retried if the registry restarts mid-push.
  • Rollback refusals list the builds you can roll back to.
  • The registry shows a new storage backend right after a switch, and its disk-full percentage matches df.
  • Old registry storage backups and update migration backups, which hold old secrets, are removed.
  • Pulling an image a node has no grant for answers "denied" instead of 503.
  • Housekeeping's low-disk run waits its hour across restarts.
  • A Housekeeping run is no longer counted as failed because registry maintenance was already running.
  • Partial files of abandoned node file uploads are removed within minutes, also after a restart.
  • The backup storage check writes its test file inside the policy prefix.
  • Daemons remove installer backups of their binary after 14 days.
  • Daemons log the leftovers they clean up at start.
  • A trimmed daemon log keeps its file permissions.
  • Opfield refuses an SSH connector to a node by the node's SSH host key, whatever address reaches it.
  • The node console docs and messages for agents now say plainly that the console sandbox only guards against accidental Docker use and is not a security boundary.
  • New installations use Opfield names throughout: data paths, container labels, volumes and environment; existing installations keep working as they are.
  • Installations read the release feed from get.opfield.dev/opfield.
  • Opfield images are published only to ghcr.io/opfield/opfield.
  • Container archives use the Opfield container archive format (.ofca, application/vnd.opfield.ofca); archives exported by earlier releases cannot be imported.
  • The Pages documentation, tool descriptions and errors for AI agents explain each upload step and name the expected values.
  • The Secure Runtime smoke test of a Docker node no longer raises a "Container changed outside Opfield" alert.
  • Permission restriction pickers list resources that belong to an app under the app and its environments, and dropdown searches no longer reset while the menu closes.

2.12.2

  • Updates of installations made by the early installers keep the Opfield version: a .env that refers to an old variable name is rewritten, and an update that would start Opfield without a version stops before the restart.
  • API tokens, inference tokens and OAuth grants can expire and be limited to allowed IP addresses.
  • Apps can be sorted into folders, and a project folder in Add Access also covers the Apps folder with the same name.
  • The App header pins the app to the dashboard and sidebar, shuts it down or starts it, isolates it and deletes it.
  • SSL certificates and logging environments can be app members.
  • App Overview shows real data in every card, and app health counts warnings, stopped workloads and offline nodes.
  • Compose services of app members are listed on the Compute tab.
  • Raw view of app environment variables opens in a dialog.
  • New alerts: route 5xx rate and request metrics, apps, backups, domains, PKI, inference, relay pool and Docker Availability.
  • Alert categories show their names.
  • Route access logs record the upstream response time on nodes whose nginx daemon is updated.
  • Managed databases and storage reached through a relay read "Private · through relay" instead of an internal address.
  • Images built from Git show their repository instead of an internal image name.
  • Users with access to apps only see Apps, not empty global sections.
  • Access lines granted by several groups show once and name every group.
  • OAuth applications edit their access with access lines.
  • GitLab group and project search finds names by one or two characters.
  • The AI assistant retries a model call when the provider fails or the answer breaks off, and Retry resends the message.
  • The AI assistant knows which page you are on, on every page.
  • The AI assistant picks the right node type for Docker and node tools.
  • List searches apply as you type.
  • Resource lists give up name width first on narrow screens.
  • After deleting a resource you return to where you opened it, and a resource opened from an app keeps Apps selected.
  • A relay restarting during a pool update shows its update step instead of offline.
  • The inference core shows Updating from the first step of an update.
  • Dialogs close and switch content with their animation.
  • Unsaved changes are highlighted in App settings and other editable blocks.
  • Messages say route instead of proxy host.
  • Links on maintenance, error and Pages 404 pages are white again.
  • The managed database Overview shows its data disk.
  • A folder access line says when a folder of its path was created after it was saved.
  • A database or storage started again with its app reads starting until its next check, not failing.
  • An unknown API path under databases or storage answers 404 instead of asking for the commercial module.
Actualizaciones de nodos

Docker Daemonv2.12.2-docker

  • Managed databases report the size and use of their data disk.

Nginx Daemonv2.12.2-nginx

  • Routes log the upstream response time; the daemon defines the log format before the includes of nginx.conf.
  • Links on the Pages 404 page are white again.

2.12.1

  • The Opfield name everywhere: the interface, installers, nodes, relays, API, webhooks and audit events.
  • Existing installations move to /opt/opfield after the update has proved healthy; data volumes stay as they are.
  • New API and OAuth tokens start with opf_; existing tokens keep working.
  • Webhooks and SIEM events use the x-opfield-* headers.
  • New databases, links, connectors and replicas get Opfield names; existing ones keep theirs.
  • New Compose database links use OPFIELD_DB_* variables; existing links keep theirs.
  • The managed inference core is called Opfield Inference; the desktop companion and the inference sidecars are removed.
  • Apps have a logo and a description, and an app is visible to anyone who can see one of its members.
  • Importing into an app picks resources grouped by node.
  • App overview shows restarts, health, objects and latency.
  • Limit access sets the folders, apps and environments each scope section reaches.
  • Set Up an Inference Harness gives OpenAI- and Anthropic-compatible values with a new API key.
  • Managed installations can change or remove the Opfield account sign-in and use their own SSO.
  • Self-hosted installations connected to Opfield Cloud can use the Opfield account for sign-in, and the account can sign people out when their access is removed.
  • Connecting to Opfield Cloud takes one account code.
  • Maximum connections of a managed PostgreSQL is set in Database settings.
  • Managed PostgreSQL connections stay open through a node update once the database is next recreated.
  • Routes work on Availability containers after they fail over, and route port changes reach every copy.
  • Returning to the preferred node no longer waits 30 seconds for an offline relay.
  • Availability warns that published host ports work only on the original node.
  • A full object storage shows as Degraded and raises the "Storage is full" alert.
  • A relay the nodes cannot reach shows Unreachable and raises an alert.
  • Containers created before 2.12.1 migrate between nodes, and a copy kept on the source node can be started, renamed or removed.
  • Archives import between nodes with different Docker image stores; a migration between such nodes is refused with a clear reason.
  • Nodes with migration history can be deleted.
  • A Pages deploy reloads nginx once.
  • Nginx nodes show when nginx is stopped, and their routes read not served.
  • Nodes on Alpine start their services after a reboot.
  • Configuration export works on LXC hosts.
  • Docker permissions name nodes and resources by ID.
  • Dialogs fit the window, scroll once and keep their content while closing.
  • The audit log shows plain resource names.
  • Diagnostics show the memory, load and uptime of an LXC host.
  • install.sh --version installs an exact release.
  • The logging SDK is published as @opfield/logger under the MIT license.
Actualizaciones de nodos

Docker Daemonv2.12.1-docker

  • The Docker daemon runs under the Opfield names; containers created before keep their labels.
  • Managed PostgreSQL connections stay open through a daemon update once the database is next recreated.
  • Containers created before 2.12.1 migrate between nodes; archives import between Docker image stores.
  • Returning a workload to its preferred node no longer waits for an offline relay.
  • A full managed object storage is detected and reported.
  • Nodes on Alpine start their services after a reboot.

Monitoring Daemonv2.12.1-monitoring

  • The monitoring daemon runs under the Opfield names.
  • An outage of Docker or the network no longer stops the daemon from taking its update.

Nginx Daemonv2.12.1-nginx

  • The nginx daemon runs under the Opfield names.
  • A Pages deploy reloads nginx once.
  • A stopped nginx is reported plainly, also next to another nginx on the server.
  • A daemon running as root starts a stopped nginx again when it applies a configuration.

Opfield Relayv2.12.1-relay

  • The relay runs under the Opfield names and keeps working with nodes that still use the old ones.
  • A relay running as its own user says which old names it keeps and how to fix it.

Lease Watchdogv2.12.1-watchdog

  • The lease watchdog runs as opfield-lease-watchdog and moves right after the Docker daemon updates.

2.12.0

  • The Opfield name, logo, colours and fonts in the console, sign-in page, status page, emails, plan badges, installers and the AI assistant.
  • The sidebar has 14 items; Routes and Certificates each open as one page with tabs.
  • Lists right-align every column but the name, show counts and states as badges and keep row actions in a row menu.
  • Apps, on every plan, group the containers, Compose projects, databases, storage, key-value stores, routes and Pages of one application, with environments such as production and staging.
  • Each app environment has its own variables, secrets, allowed nodes and access; containers get the environment's values on create, update and recreate, and the environment page lists the workloads that still need a recreate.
  • Resources can be created inside an app, imported into it or moved in and out of it; app members leave the normal lists and are labelled in search and on their own pages.
  • An environment can be promoted to another: the exact images, Compose revision and Pages build that run in it.
  • The app page shows each environment's members with their health, alerts and activity.
  • An app can be shut down and started again; its kill switch cuts the app's containers off their networks, holds its Secure Links closed and freezes its members, and releasing it puts everything back as it was.
  • Apps and environments have their own maintenance access codes and a maintenance page for their routes.
  • Apps have their own permissions, can be granted per environment, and can be managed from the REST API, MCP and the AI assistant.
  • New key-value stores run Valkey with the JSON, Bloom and Search modules; Move to Valkey checks an existing Redis store and moves it to Valkey on the same node.
  • On Business and Enterprise, managed PostgreSQL, key-value stores, ClickHouse and storage can run on 2 to 5 servers: one primary takes reads and writes, copies follow it and one takes over when it fails.
  • Failover between those servers keeps working while Opfield is down; relays allowed in Settings > Relay and Docker nodes on other hosts act as witnesses.
  • Settings changes, version updates and restarts of such a database or storage go one server at a time, a node update hands its primary over first, and backups read from an up-to-date copy.
  • After the license grace period, databases and storage on several servers keep failing over and can still be repaired; turning it on, adding servers and changing settings wait for a renewed license.
  • The dashboard points out databases and storage on several servers that need a look.
  • The owner of a relay's machine can make the relay protected: Opfield then has no console, file or host access through it, and it shows a Protected badge.
  • Remote relays no longer carry built-in local services; only the local relay next to Opfield does.
  • Nodes try a relay that refuses new connections under load after the other relays and retry it at a slower pace, and Relay Pool placement stops probing it meanwhile.
  • An installation can be connected to an Opfield cloud account with a code in Settings > Cloud; the link's requests are audited and listed, privileged requests need remote management to be allowed, and cloud node tokens choose the kind of node they enrol.
  • A managed installation bought in the Opfield account starts with its license active and its owner signed in with the Opfield account.
  • On a managed installation the settings the cloud depends on (address, Opfield account sign-in, license, cloud link) are read-only.
  • install.sh --domain and --acme-email serve the console on port 443 with a Let's Encrypt certificate that renews itself.
  • Sections, tabs and actions your plan does not include are hidden; a direct link to one shows the plan instead of an error.
  • Every audit entry shows a readable action and description, in the audit log, its export and the activity panels.
  • Each OAuth consent is listed on its own with its own scopes; editing or revoking one no longer changes another consent of the same app.
  • Opfield finds the license service through a signed list of addresses and uses the next address when one does not answer; LICENSE_SERVICE_URL adds an address of your own.
  • The continuity grant now puts the source code of the last release, commercial core included, under the MIT License if Opfield is discontinued, and key holders can keep running it without the license service.
  • Opfield images and release binaries are signed with Sigstore and come with SBOMs; the Verifying Releases guide in the repository shows how to check them with cosign.
  • The installation can be exported to one encrypted file in Settings > General and restored on another host from the setup wizard or with install.sh --restore; nodes and relays can be told the new address in advance.
  • AI agents learn what Opfield is from the MCP server and the assistant; the agent skills are now opfield/opfield-skills with the entry skill using-opfield, and the old skill name still answers over MCP.
  • Pages build variables can be edited as text.
  • Backups of deleted databases can be listed and restored.
  • A successful image pull is no longer reported as failed.
  • Saving a container's environment no longer shows a container error while the container is recreated.
  • Database links whose client left before the connection opened no longer cause warnings.
  • Relay connections stay on their relay when a placement change keeps that relay, or when a relay without connections is drained or resumed.
  • A Relay Pool update ends at once when a relay refuses it.
  • Updates, release downloads and the installer come from get.opfield.dev and images from ghcr.io/opfield/opfield; the earlier addresses keep working.

Installs on 2.11.4 or earlier are offered 2.11.5 first, automatically, and 2.12.0 after it. Update Opfield first, then the Docker, nginx and monitoring nodes, then the Relay Pool. Firewalls that allow updates.thesqlabs.com need get.opfield.dev as well.

Actualizaciones de nodos

Docker Daemonv2.12.0-docker

  • Storage nodes run the servers of managed PostgreSQL, key-value stores, ClickHouse and storage that run on several servers, and Docker nodes on other hosts can run their witnesses.
  • Failover of databases and storage on several servers runs between the nodes and relays and keeps working while Opfield is down.
  • Before the daemon updates, a primary database or storage on the node hands over to an up-to-date copy.
  • Key-value stores run on Valkey, and Redis stores can be checked and moved to it.
  • An app's kill switch cuts its containers off their networks and puts them back exactly as they were.
  • A relay that refuses new connections under load is tried after the other relays and retried at a slower pace.
  • Connections stay on their relay when a placement change keeps that relay, or when a relay without connections is drained or resumed.
  • Storage nodes show their daemon logs.
  • Deleting managed storage no longer leaves a loop device on the node.
  • Database links whose client left before the connection opened no longer cause warnings.
  • Updates come from get.opfield.dev; the earlier address keeps working.
  • The service and its messages say Opfield.
  • The node keeps the address Opfield is moving to and switches to it once the old address stays unreachable for 10 minutes.

Update Opfield to 2.12.0 before the node.

Monitoring Daemonv2.12.0-monitoring

  • A relay that refuses new connections under load is tried after the other relays.
  • Updates come from get.opfield.dev; the earlier address keeps working.
  • The service says Opfield.
  • The node keeps the address Opfield is moving to and switches to it once the old address stays unreachable for 10 minutes.

Nginx Daemonv2.12.0-nginx

  • Works with databases and storage that run on several servers.
  • A relay that refuses new connections under load is tried after the other relays and retried at a slower pace.
  • Route Secure Link connections stay on their relay when a placement change keeps that relay.
  • Pages error and maintenance pages use the Opfield name and colours.
  • Updates come from get.opfield.dev; the earlier address keeps working.
  • The node keeps the address Opfield is moving to and switches to it once the old address stays unreachable for 10 minutes.

Opfield Relayv2.12.0-relay

  • Protected mode: the owner of the relay's machine turns it on with relay-supervisor protected on or the installer's --protected; Opfield then gets no console, files or host details through the relay, and the relay updates only to newer releases.
  • The relay supervisor runs witnesses for databases and storage on several servers when an administrator allows it, and on a protected relay only when its owner allows it too.
  • Relays serve databases and storage on several servers and decide their failover together with the nodes while Opfield is down.
  • Remote relays refuse tunnels to built-in local services.
  • The secure-link connector tries a relay that refuses new connections under load after the other relays.
  • Updates and images come from get.opfield.dev and ghcr.io/opfield/opfield; the earlier addresses keep working.
  • The service says Opfield.
  • The relay keeps the address Opfield is moving to and switches to it once the old address stays unreachable for 10 minutes.

Update Opfield to 2.12.0 first, then the Relay Pool.

Lease Watchdogv2.12.0-watchdog

  • The watchdog reconnects through another relay faster when its relay fails or refuses new connections under load.
  • Updates come from get.opfield.dev; the earlier address keeps working.
  • The service says Opfield.
  • The watchdog keeps the address Opfield is moving to and switches to it once the old address stays unreachable for 10 minutes.

Toda tu flota en un solo campo.

Instala Opfield en tu propio servidor en minutos, o habla con nosotros para desplegarlo en tus equipos.

Empezar
Habla con nosotros →