Skip to content

Remove an application and its data

Removing an application takes the storage it was writing to with it. That is the most destructive thing you can do to an application, so every surface shows you what will be lost before it asks you to confirm.

What “with it” means

The data is deleted. It does not go to a bin or a holding area, and Flui cannot bring it back.

If the contents matter, take a backup first and check that it completed. See flui backup. A backup is stored separately, and removing the application does not touch it. Backups already taken stay where they are and can still be restored; the preview says until when. The application’s backup policy stops, so no new backups are taken.

The data-loss warning

Before it asks, Flui reads the running cluster and works out which storage belongs to this application. Then it shows you a sentence like this:

This also deletes 10 GiB of data in 1 volume.
It cannot be undone.

The platform writes that sentence once, and the CLI, the dashboard and an agent all show the same one, so you never see three different numbers on three surfaces.

Below it is the list of volumes, each with its name and size.

When the cluster cannot be read

The preview asks the cluster. Sometimes the cluster cannot answer, because it is unreachable or its credentials cannot be read.

When that happens, you are told:

The volumes this would delete could not be read
from the cluster.
Assume data will be lost — it is not known to be none.

An empty list means “none found” only when the cluster was actually read. When it was not, no surface shows the empty result as “nothing to lose”. If you see this warning, treat the removal as one that destroys data.

When the cluster was read and no storage is attached, you are told that too.

Bundles and single applications

Some applications were deployed on their own. Others came as part of a catalog bundle, such as an app with its database and cache, installed together.

You do not need to know which kind you have. You name one application and Flui works out what removing it involves. If it belongs to a bundle, the preview lists every part and the removal takes all of them, because nobody wants a bundle left behind without its database.

Because the bundle is handled as one, a removal that is already running is reported as running instead of being started again for another part.

Removing it

Terminal window
flui app delete my-app

The command looks the application up, prints what it is and what it would remove, and then asks you to type the application’s name exactly. Anything else cancels it. -f, --force skips that prompt. It is meant for scripts, so be sure before you use it.

An application the platform installed for itself is protected. The command refuses it and tells you that --force is the only way past.

For a bundle, the command waits and reports progress for up to five minutes. If the removal is still running after that, it says so instead of reporting a failure. --no-wait returns as soon as the removal is queued. For a single application the command always queues and returns; check the result with flui app list.

-c, --cluster <name|id> picks the cluster. When there is only one, it is detected for you.

Storage no application owns

A cluster can hold volumes that no application owns any more, left by an older removal or by something removed outside Flui. You are still paying for them, and nothing else lists them. Flui lists them and lets you remove them.

Terminal window
flui cluster volumes

It prints each abandoned volume with its size, the reason it counts as abandoned, and the total space held. Add -o json for the full details and -c, --cluster to pick the cluster.

To remove one, pass the reference the listing printed:

Terminal window
flui cluster volumes --remove user-a1b2c3/data-uptime-kuma-0

The command refuses a reference that is not in the listing it has just read, so you cannot delete something the scan did not report as abandoned. It then asks you to confirm by typing, unless you pass -f, --force.

What the scan will and will not find

The listing is cautious. Naming a live volume by mistake could cost someone their data, while missing one only leaves a volume where it is. So it lists a volume only when it has a positive reason.

A volume is listed only when nothing running uses it, nothing that still exists could have created it, no existing application owns it, and it has been there long enough to have settled. A volume that appeared minutes ago is far more likely to be in the middle of being created than left behind.

As a result, an empty listing means “none found by these rules”, not “none exist”. A volume with nothing linking it to an application Flui knows about does not appear here, unless it carries the name of an application that was deleted or sits where every application is gone. If the scan could not run at all, it says so, and the empty list proves nothing.

Removal runs the whole check again before it touches anything, so a volume that has been put back into use since the listing was printed is refused, not deleted.

Where this goes next