September 2026 update

12 new features 14 improvements 18 bug fixes

New features 12 items

Group your applications

Give an application a group in Settings under General, and the applications overview lists every application in that group together. Put the production and staging version of one project in the same group and they sit side by side.

Before: Applications were listed by creation date, so related applications ended up spread across pages. After: Applications in the same group are listed together, with ungrouped applications at the end.

Coloured environment tags and a page size picker

Tags that name an environment now get a fixed colour on the applications overview, the costs page and in the application header, so a production application is easy to tell apart from a staging one. You can also choose how many applications the overview shows per page.

Transfer files to and from a running instance

The Commands tab has a new Transfer files card. Download a file such as a log from the instance you selected, or upload a file to a path of your choice.

Before: The dashboard had no way to move a file in or out of a running instance. After: Enter a path to download a file, or pick a file and a path to upload one.

Frankfurt region

Germany (Frankfurt) joins Amsterdam, London and Chicago as a region for your applications. The API accepts fra1 as a region and now rejects region names that don't exist, where it used to accept any value.

Telegram notifications

Telegram is now available as a notification channel. Deployment results, uptime checks and storage warnings arrive in the chat or group you pick, and there is no bot to create or token to paste.

ClamAV virus scanning

Add ClamAV from the Custom services card and scan uploads for malware before you store or serve them. Your application streams the file contents to the scanner over port 3310, and the new ClamAV guide includes a PHP helper that does exactly that.

PostgreSQL 17 and 18

PostgreSQL 17 and 18 are available when you add a database service. Extensions such as pgvector used to be limited to PostgreSQL 16 and now work on 16, 17 and 18.

API keys limited to specific teams

When you create an API key you can now pick the teams it may access. A key bound to teams can do everything you can inside those teams and nothing outside them.

Before: Every API key could reach every team you belong to. After: Choose one or more teams per key, or select none to keep access to all of them.

Pick your date and time format

Under Settings, Appearance you can choose whether dates put the day or the month first, and whether times use a 24-hour or 12-hour clock. A preview shows the result, and the choice applies throughout the dashboard, from deployments and logs to billing and monitoring charts.

Managed databases and object storage in infrastructure as code

Your YAML configuration can now create managed databases and object storage, together with an application or on their own. You can also export every managed database and object storage in a team as one YAML document.

Quick deploy through the API

Quick deploy, which deploys your application whenever you push to its default branch, can now be turned on and off through the API and by AI assistants connected to Ploi Cloud. Application responses include whether it is on. If the webhook can't be removed at your Git provider, the response says so, because that webhook can still trigger deployments until you remove it yourself.

Download the source of an uploaded application

Applications that deploy from an uploaded archive instead of a Git repository have a new Source code section in Settings. It shows when the archive was uploaded and has a button to download it.

Improvements 14 items

Command status follows the exit code

The Commands tab now marks a command as failed only when it exits with an error. Warnings and other output written to standard error appear in a separate section instead of turning a successful run red, and the command history shows the exit code of a failed run.

Safer service deletion

Deleting a service that stores data now warns that its storage goes with it, shows how big that storage is, and asks you to type the service name first. The storage is also removed along with the service now, where it used to stay behind. Services without storage keep a simple confirmation.

A tidier application overview

The controls on the application overview now sit in a toolbar along the bottom, where the support chat can't cover them. You can zoom out far enough to see every card at once. Add service in the toolbar opens the same dialog as the service cards, with pricing plans and settings, and a card you hid comes back when you add a service to it.

Statamic content commits run where your content lives

Statamic sites now commit content changes on the instance that serves the site, and a background process pushes new commits to your repository within 30 seconds. When Git automation is on, your environment settings explain why STATAMIC_GIT_QUEUE_CONNECTION has to stay on a connection that runs there. A new guide lists what every combination of settings does.

Reverb worker variables in the dashboard

A Reverb worker now shows the environment variables it generated for your application, with the same values your application receives.

Password managers understand our forms

Fields where you choose a new password tell Safari and 1Password what our password rules are, so a generated password is never rejected. Password managers also recognise the login, password setup and password confirmation forms correctly, and offer your one-time code on the two-factor screen.

A new look for the site and dashboard

The website and dashboard have new colours and typography built around the Ploi Cloud violet. The dashboard is no longer plain grey, and cards stand out from the page behind them.

Direct debit when retrying an invoice

Retrying an open invoice with direct debit used to report a failure while the payment was still on its way. It now tells you the payment has started and can take a few business days. The retry button also shows on every open invoice, unless a payment for it is already being processed.

A clear deadline when a payment fails

When a payment fails, the email now states the date and time your applications will be paused if it keeps failing, 7 days after the first failure. Paying the invoice ends that period right away.

Outstanding balances are settled first

Removing your last payment method now settles everything you still owe first, including open invoices and usage that hasn't been invoiced yet. Deleting a team or your account is blocked while a balance is outstanding, and the message tells you the amount.

RSS feeds and markdown for the blog and changelog

The blog and changelog have RSS feeds at /blog.rss and /changelog.rss that carry full posts. Add .md to the address of a blog post or changelog entry to get it as markdown, and each changelog entry has buttons to copy it for an AI assistant or open it in ChatGPT, Claude, Perplexity or Mistral.

Free tools and a comparison overview

A new free tools page covers PDF conversion and screenshots through an API with 1,000 free credits every month. The comparisons with Heroku and Laravel Cloud are now collected on one page at /alternative.

WordPress images get the latest security updates

WordPress builds now install pending system security updates while your image is built.

Documentation

Chrome Headless, ClamAV, ClickHouse, Gotenberg, Inertia SSR, Meilisearch, Nightwatch and Typesense each have their own article now. The Reverb guide covers REVERB_ALLOWED_ORIGINS, the Headscale section explains how to put the tag on your key, and the managed database IP filtering guide now correctly says that new databases start with public access turned off.

Bug fixes 18 items

Fixed Bitbucket connections breaking after a few hours

Bitbucket hands out a new refresh token every time one is used, and that new token was thrown away. A connection worked for a couple of hours and then failed until you reconnected. The new token is now stored, so connections stay alive. Accounts with more than 100 repositories or workspaces also no longer hang while loading them.

Fixed passkey registration failing

Registering a passkey could fail with a token mismatch error. It now works on the first attempt.

Fixed wildcard domains outside Amsterdam

Wildcard certificates were always requested in Amsterdam, whatever region the application ran in, so wildcard domains on applications in London or Chicago never got a working certificate. Adding and removing a wildcard domain now happens in the application's own region.

Fixed Reverb workers getting the wrong websocket address

On newer applications, adding a Reverb worker set REVERB_HOST to an address that didn't connect. Deleting a Reverb worker also left its websocket endpoint behind. Both are fixed, and the API now accepts reverb as well as laravel_reverb as the worker type.

Fixed service changes from YAML not being applied

Changing a service's memory or settings through infrastructure as code saved the new values without applying them. They now take effect. A volume size written in Mi was also read as Gi, so 512Mi became 512GB. Sizes convert correctly now, and memory values are checked against each service's minimum.

Fixed the API wiping service settings

Updating a service through the API replaced all of its settings with the ones you sent, so anything you left out was reset. The settings you send are now merged into the existing ones.

Fixed managed Valkey databases showing the wrong details

Valkey databases showed user and database tabs that don't apply to them, and the connection details for your application were missing the REDIS_ variables. Both now match what a Valkey database supports.

Fixed applications stuck as unhealthy

Instances that had already stopped were still counted when working out an application's health, so a healthy application could stay marked as unhealthy indefinitely. Only instances that are still running count now.

Fixed services showing as active while paused

When an application was paused, its database and other services could keep showing as active in the dashboard for hours. Their status now updates together with the application.

Fixed PHP 7.4 builds

Debian bullseye, which PHP 7.4 images are built on, reached end of life and its package sources moved, so PHP 7.4 applications stopped building. They build again and still receive the last security updates published for bullseye.

Fixed Tailscale showing a cost

Tailscale is free, but it appeared in an application's cost breakdown and usage summaries. It no longer does.

Fixed Tailscale with a Headscale control server

Headscale refuses a node that asks for its own tag, and our Tailscale service always asked for one, so connecting through Headscale failed. The tag request is left out for self-hosted control servers now, and the guide shows how to create a key with the tag already on it.

Fixed volume removal acting on the wrong volume

Removing a volume could apply its cleanup to a different volume in the same application, while the volume you removed stayed behind. Removal now targets the volume you picked.

Fixed a long commit message taking over the dashboard

A deployment of a squash-merged branch could fill the whole Recent activity card with its commit message and push every other entry out of view. The card now shows the first line only, with the full text on hover.

Fixed checkboxes in dark mode

A ticked checkbox looked empty in dark mode, and the tag filters on the applications overview and the costs page could not be ticked at all.

Fixed the team switcher labels

The team switcher labelled every team as Team, including your personal team. Personal teams are labelled Personal again and listed first.

Fixed a grace period that outlived a new payment method

Adding a payment method now ends a grace period right away, even if setting up the subscription fails afterwards.

Smaller display fixes

The sidebar highlights Dashboard when you are on it. Long IP addresses no longer overlap their note in database access control. Documentation links and table lines are readable in dark mode, and so is the warning shown when you delete a team.

Important notes

  • Applications pick up the PHP 7.4 build fix and the WordPress security updates on their next deployment.
  • API keys created before this update keep access to all of your teams. Create a new key to limit one to specific teams.
  • Updating a service through the API now merges settings. To clear a setting, send its empty value instead of leaving it out.
  • When a payment fails, your applications keep running for 7 days before they are paused.

Share this update