OPEN SOURCE PLATFORM

Modern deploys. Your cloud. Your servers.

One platform to run your apps on European clouds today, and on your own servers tomorrow. Same simple experience, wherever you deploy.

Any European cloudAGPL v3No lock-in
app.flui.cloud/clusters/control-cluster
1

control-cluster

b2a1a745
HEALTHY
Avg CPU
15%
Avg Memory
71%
Monitoring
NODES
2
+ control-cluster-1 running
+ control-cluster-2 running
NETWORK
Attached
VNet
ebe5cb3c
PLATFORM COMPONENTS
Healthy
16
Degraded
0
Missing
0
View all
FIREWALL
IN_SYNC
Desired rules
5
Applied rules
5
Last sync
3d ago
Manage firewall
BACKUPS

No backups configured for this cluster.

Enable backups
DNS ZONE

Not configured

Manage DNS
VARIABLES
0

No variable sets

Manage variables

Cluster Monitoring

Real-time metrics updated every 5 seconds
NETWORK I/O OVER TIME
last hour
Network InNetwork Out
04:4005:0005:2005:4006:0006:2006:4007:0007:20
SERVER: control-cluster-master
Instance: control-cluster-master
15.1%
CPU Usage
70.5%
Memory
28.6%
Disk Usage
VIRTUAL NETWORK
Manage VNets
VNet Name
flui-env-vnet
IP Range
10.10.0.0/16
Subnets
10.10.1.0/241 server(s) attached

Cluster storage

One disk on the master node, shared with every other node. This is where most of your apps' data lives.
Disabled
Shared storage is disabled
This cluster uses flui-local as the fallback. PVCs land on each node's bundled disk and are not portable across nodes.
WHERE YOUR APPS STORE DATA
Flui picks one automatically based on the app. You almost never need to choose by hand.
Shared storageflui-sharedActive
The default. Disk lives on the master node and is shared with every other node. Good for everything: web apps, queues, file uploads, caches.
Pinned storageflui-dedicatedActive
Disk lives on one specific node and the app stays on that node. Used by databases that need real disk guarantees (Postgres, MariaDB, Valkey, PocketBase). The catalog picks this automatically when needed.
Local fallbackflui-localFallback
When shared storage is turned off, a per-app disk uses the local volume of whatever node it lands on. Data is not portable between nodes.
NODES
2
NameRoleCPUMemoryStatus
control-cluster-1 master 12.4% 65.2% running
control-cluster-2 worker 18.1% 71.8% running

Scaling

Add or remove workers manually, and configure the autoscaling intent and thresholds for when the auto loop ships.
Status
Disabled
Current Nodes
1
Memory
70.3%
CPU
15.2%
AUTOSCALING INTENT
Automatic scale-up is rolling out gradually. For now, when warnings appear, use the + control above to add a worker. The cluster needs a VNet attached to be eligible for autoscaling.
FIREWALL
View & Manage Rules
Status
In Sync
Last Reconciled
3d ago
In sync with provider
APPLIED RULES (5)
DescriptionDirectionProtocolPortIPs
SSH access for server management → In TCP 22 79.45.96.169/32
HTTPS Ingress (Traefik) → In TCP 443 ::/0, 0.0.0.0/0
HTTP Ingress (Traefik) → In TCP 80 ::/0, 0.0.0.0/0
Allow all outbound TCP traffic ← Out TCP any ::/0, 0.0.0.0/0
Allow all outbound UDP traffic ← Out UDP any ::/0, 0.0.0.0/0
DNS ZONE
Manage
No DNS zone assigned
+ Assign DNS Zone
STANDARD CERTIFICATE ISSUERS (HTTP-01)
Manage certificates for standard domains.
letsencrypt-production admin@flui.cloud Ready
Reconfigure standard issuersDelete standard issuers
APP ENDPOINTS
+ Add Endpoint
app.demo.com flui-docs · default Test address Valid Sync
CLUSTER VARIABLE SETS
+ New variable set
No variable sets
Create reusable sets of environment variables and secrets, and attach them to multiple applications at once.
BILLING PERIOD
May 1, 2026 — Jun 1, 2026
360h / 744h elapsed
SPENT THIS MONTH
EUR 0.69
Net: EUR 0.56
From May 1, 2026 to today — includes already-terminated nodes
ComputeEUR 0.69
StorageEUR 0.00
TrafficEUR 0.00
RUN RATE
EUR 4.87
Net: EUR 3.99
1 node + 0 volumes at the current rate, for a full month
ComputeEUR 4.87
StorageEUR 0.00
NODES (1)
control-cluster-master
mastercx23active
EUR 0.69
66h billed

What Flui does.

One model from cluster to app

The same dashboard surfaces clusters and the apps that run on them — same operations, same observability, same manifest. Nothing to relearn when you move between layers.

Bring your own infrastructure

Connect a credential for one of the integrated cloud providers and Flui installs the platform layer on top — keeping ownership of the machines, the data, and the manifests with you. Bare-metal and VPS support (BYOS) is on the roadmap.

Observability is not an afterthought.

Metrics, logs, and dashboards from minute zero — for your apps and for the platform itself. Not a stack you install later: a pillar the rest of Flui stands on.

Open source, yours to run

AGPL v3. Self-host the control plane on your own terms. Your code, your servers, your jurisdiction.

App catalog
in development

One-click apps. Open source.
Hosted on your servers.

A curated set of open-source tools — installed on your cluster, in your jurisdiction, with the operational pieces (TLS, backups, metrics) already taken care of.

The catalog is open by design. Any container can become a Flui app — the curated entries are simply reviewed contributions to the same open format.

Coming soon Nextcloud, Vaultwarden, CryptPad, Authentik, Umami, Listmonk, Uptime Kuma, Paperless-ngx — and more.

Curated entry
Plausible Analytics
Privacy-first web analytics — GDPR by default.
kind CatalogApp
image plausible/analytics:v2.1
port 8000
storage 5Gi (PostgreSQL backed)
license AGPL-3.0
Reviewed and packaged in the Flui catalog.
Your application
billing-api
An internal service your team operates.
kind CatalogApp
image registry.acme.com/billing:1.4.2
port 3000
storage none
license proprietary
Wrapped in a CatalogApp manifest by your team.
It's the same format — whether we wrote it or you did.
The dashboard

The dashboard you'd actually want to use.

Inspect clusters, manage networking, scale workloads. From a UI that respects your time.

app.flui.cloud/clusters/control-cluster
1

control-cluster

b2a1a745
HEALTHY
Avg CPU
15%
Avg Memory
71%
Monitoring
NODES
2
+ control-cluster-1 running
+ control-cluster-2 running
NETWORK
Attached
VNet
ebe5cb3c
PLATFORM COMPONENTS
Healthy
16
Degraded
0
Missing
0
View all
FIREWALL
IN_SYNC
Desired rules
5
Applied rules
5
Last sync
3d ago
Manage firewall
BACKUPS

No backups configured for this cluster.

Enable backups
DNS ZONE

Not configured

Manage DNS
VARIABLES
0

No variable sets

Manage variables

Cluster Monitoring

Real-time metrics updated every 5 seconds
NETWORK I/O OVER TIME
last hour
Network InNetwork Out
04:4005:0005:2005:4006:0006:2006:4007:0007:20
SERVER: control-cluster-master
Instance: control-cluster-master
15.1%
CPU Usage
70.5%
Memory
28.6%
Disk Usage
VIRTUAL NETWORK
Manage VNets
VNet Name
flui-env-vnet
IP Range
10.10.0.0/16
Subnets
10.10.1.0/241 server(s) attached

Cluster storage

One disk on the master node, shared with every other node. This is where most of your apps' data lives.
Disabled
Shared storage is disabled
This cluster uses flui-local as the fallback. PVCs land on each node's bundled disk and are not portable across nodes.
WHERE YOUR APPS STORE DATA
Flui picks one automatically based on the app. You almost never need to choose by hand.
Shared storageflui-sharedActive
The default. Disk lives on the master node and is shared with every other node. Good for everything: web apps, queues, file uploads, caches.
Pinned storageflui-dedicatedActive
Disk lives on one specific node and the app stays on that node. Used by databases that need real disk guarantees (Postgres, MariaDB, Valkey, PocketBase). The catalog picks this automatically when needed.
Local fallbackflui-localFallback
When shared storage is turned off, a per-app disk uses the local volume of whatever node it lands on. Data is not portable between nodes.
NODES
2
NameRoleCPUMemoryStatus
control-cluster-1 master 12.4% 65.2% running
control-cluster-2 worker 18.1% 71.8% running

Scaling

Add or remove workers manually, and configure the autoscaling intent and thresholds for when the auto loop ships.
Status
Disabled
Current Nodes
1
Memory
70.3%
CPU
15.2%
AUTOSCALING INTENT
Automatic scale-up is rolling out gradually. For now, when warnings appear, use the + control above to add a worker. The cluster needs a VNet attached to be eligible for autoscaling.
FIREWALL
View & Manage Rules
Status
In Sync
Last Reconciled
3d ago
In sync with provider
APPLIED RULES (5)
DescriptionDirectionProtocolPortIPs
SSH access for server management → In TCP 22 79.45.96.169/32
HTTPS Ingress (Traefik) → In TCP 443 ::/0, 0.0.0.0/0
HTTP Ingress (Traefik) → In TCP 80 ::/0, 0.0.0.0/0
Allow all outbound TCP traffic ← Out TCP any ::/0, 0.0.0.0/0
Allow all outbound UDP traffic ← Out UDP any ::/0, 0.0.0.0/0
DNS ZONE
Manage
No DNS zone assigned
+ Assign DNS Zone
STANDARD CERTIFICATE ISSUERS (HTTP-01)
Manage certificates for standard domains.
letsencrypt-production admin@flui.cloud Ready
Reconfigure standard issuersDelete standard issuers
APP ENDPOINTS
+ Add Endpoint
app.demo.com flui-docs · default Test address Valid Sync
CLUSTER VARIABLE SETS
+ New variable set
No variable sets
Create reusable sets of environment variables and secrets, and attach them to multiple applications at once.
BILLING PERIOD
May 1, 2026 — Jun 1, 2026
360h / 744h elapsed
SPENT THIS MONTH
EUR 0.69
Net: EUR 0.56
From May 1, 2026 to today — includes already-terminated nodes
ComputeEUR 0.69
StorageEUR 0.00
TrafficEUR 0.00
RUN RATE
EUR 4.87
Net: EUR 3.99
1 node + 0 volumes at the current rate, for a full month
ComputeEUR 4.87
StorageEUR 0.00
NODES (1)
control-cluster-master
mastercx23active
EUR 0.69
66h billed
Click any tab above to switch views
App workspace

Every app, one click away.

Logs, metrics, deployments, env vars, and rollbacks — in the same place. The dashboard never makes you guess what's running or where the last deploy went.

See what your apps are doing, live
Follow and search the activity of every part of your app from the same screen. No extra tools to set up, no jumping between dashboards.
When something breaks, you get an answer
Flui looks at recent failures and tells you the likely cause and how to fix it — instead of leaving you with a wall of logs to dig through.
Change settings without downtime
Update keys, passwords and configuration from the dashboard. Your app picks up the change on its own — no waiting, no redeploy.
app.flui.cloud/applications/demo-app
1

demo-app

User
Running
58222c40
REPLICAS
1/ 1
IMAGE
registry.example.com/demo-app:0b1e587
CPU / MEMORY
100m · 128Mi
limits: 500m · 256Mi
LAST DEPLOY
05/15/2026 18:46
LATEST RELEASE
Succeeded
05/15/2026 18:46
registry.example.com/demo-app:3ac8110 registry.example.com/demo-app:0b1e587
Release history
Healthy
CPU
0%
MEMORY
1%
0m · 3.0MiB
Monitoring
https://demo-app.flui.cloud
REPLICAS
1/ 1
ready / desired
CPU / MEMORY
CPU req100m
CPU lim500m
Mem req128Mi
Mem lim256Mi
Edit
CONFIGURATION
0
0 env vars · 0 secrets
Manage
DNS ENDPOINTS
11 sync
endpoint
demo-app.flui.cloud
Manage
RECENT ACTIVITY
View all
Deploy05/15 18:46
Build completed05/15 18:43
Build started05/15 18:40

Application Monitoring

Real-time metrics updated every 5 seconds
HEALTH
1/1 pods operational
Last check: May 16, 2026, 07:34 AM
15.1% CPU
Usage
15.1m
Limit
500m
1.2% MEMORY
Usage
3.0 MiB
Limit
256 MiB
REPLICAS
Ready:1/Desired:1
CONTAINER RESTARTS
Total
0
Last hour
0.0
NETWORK I/O
Receive
37 B/s
Transmit
1.1 KB/s
POD PHASES
Running1
Pending0
Failed0
HISTORICAL METRICS
1 Hour2 Hours3 Hours6 Hours1 Day
CPU Usage Over Time
CPU Usage History
0%25%50%75%100%
MEMORY USAGE OVER TIME
Memory Usage History
0%25%50%75%100%
NETWORK I/O OVER TIME
Receive Transmit
LOG VOLUME DISTRIBUTION
last 1h
ERROR 0 WARN 8 INFO 274 DEBUG 0 TRACE 0
TimestampLevelMessagePodStream
Timestamp
May 16, 07:41:13.412
Trace ID
a7d2f4c1
Pod
demo-app · pod 1
Container
web
Stream
stdout
Method
GET /
Status
200
Latency
18ms
Raw message
10.42.0.1 - - [16/May/2026:05:41:13 +0000] "GET /" 200 1568
Timestamp
May 16, 07:41:13.487
Trace ID
a7d2f4c2
Pod
demo-app · pod 1
Container
web
Stream
stdout
Method
GET /metrics
Status
200
Latency
4ms
Raw message
10.42.0.1 - - [16/May/2026:05:41:13 +0000] "GET /metrics" 200 412
Timestamp
May 16, 07:41:13.521
Trace ID
a7d2f4c3
Pod
demo-app · pod 1
Container
web
Stream
stderr
Method
GET /api/projects.list
Status
200
Latency
412ms
Raw message
slow query /api/projects.list returned in 412ms (threshold: 300ms)
Timestamp
May 16, 07:41:13.598
Trace ID
a7d2f4c4
Pod
demo-app · pod 1
Container
web
Stream
stdout
Method
GET /api/health
Status
200
Latency
2ms
Raw message
10.42.0.1 - - [16/May/2026:05:41:13 +0000] "GET /api/health" 200 19
Timestamp
May 16, 07:41:13.642
Trace ID
a7d2f4c5
Pod
demo-app · pod 1
Container
web
Stream
stdout
Method
GET /assets/app.js
Status
200
Latency
6ms
Raw message
10.42.0.1 - - [16/May/2026:05:41:13 +0000] "GET /assets/app.js" 200 32k
REVISION HISTORY
Every change to this application is tracked as a revision. Roll back to any prior revision in one click.
rev-7 05/15 18:46 Image updated to 0b1e587 Active Rollback
rev-6 05/15 18:30 CPU limit bumped to 500m Archived Rollback
rev-5 05/14 14:21 Env var WAS_DEBUG removed Archived Rollback
rev-4 05/13 09:02 Initial deploy Archived Rollback
PLAIN VARIABLES (ConfigMap)
JSONSave changes
KeyValue
test-env test-value
+ Add variable
SENSITIVE VARIABLES (Secrets)
JSONSave changes
KeyValue
test-secrete
+ Add variable
REPLICAS
● desired 1 · ● ready 1 · ● available 1Edit
1 + replica
demo-app · pod 1
registry.example.com/demo-app:0b1e587Edit
Usage: 0m (0.0%)
CPU Reserved100m
1m500m1,1k1.4
Usage: 3.0 MiB (1.2%)
Memory Reserved128Mi
1Mi500Mi1,4Gi3,8Gi
CPU requests higher than actual usage — wasting node resources
CPU Maximum500m
Memory Maximum256Mi
APP ENDPOINTS
+ Add Endpoint
demo-app.flui.cloud demo-app · default Valid Sync
Builds
RefreshForce new build
Build history for this application
ProviderStatusBranchCommitImageDurationStarted
CI pipeline Completed main 0b1e587 demo-app:0b1e587 57s 13h ago
CI pipeline Completed main 3ac8110 demo-app:3ac8110 59s 15h ago
CI pipeline Ready to release main 1f6053e demo-app:1f6053e 1m 41s 15h ago
CI pipeline Completed main 1e7ea2d demo-app:1e7ea2d 56s 16h ago
CI pipeline Ready to release main c3a7d09 demo-app:c3a7d09 2m 7s 17h ago
CI pipeline Failed main 4e47fc5 43s 17h ago
Releases · Git build
Refresh
Each version, which is currently deployed and the outcome of past releases.
Currently deployed0b1e587latest
registry.example.com/demo-app:0b1e587
05/15 18:46 · sha256:6839740f0a95
Last released 05/15 18:46 · deployed
Previously released3ac8110
registry.example.com/demo-app:3ac8110
05/15 16:07 · sha256:5117bcdef311
Last released 05/15 16:07 · 2 releases
Deploy
Previously released1f6053e
registry.example.com/demo-app:1f6053e
05/15 16:00 · sha256:3cf2533ca02e
Last released 05/15 16:00 · 2 releases
Deploy
Never releaseda74bdbf
registry.example.com/demo-app:a74bdbf
05/15 16:00 · sha256:a74bdbf
Deploy
Never released6ec7f47
registry.example.com/demo-app:6ec7f47
·
Deploy
Snapshots
All ▾Refresh+ Create snapshot
Point-in-time copies of this app's data. They live on the same real disk that hosts the app, so they take up space there.
No snapshots yet
Create a snapshot to capture the current state of this application's volume. Snapshots consume disk space inside the cluster's shared volume.
Click any tab above to switch views
CLI · API · Open spec

Or skip the UI entirely.

Everything in the dashboard is also a CLI command and a manifest you can version-control. The manifest format is an open spec — schema, validator, and types live in a separate repository and are published to npm. Flui consumes the spec like any other tool could.

flui.yaml is an open specification.

~/projects/marketing-site

From clone to first deploy in about 5 minutes.

flui.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apiVersion: flui.cloud/v1beta1
kind: Application
metadata:
name: marketing-site
build:
strategy: dockerfile
dockerfile: ./Dockerfile
deploy:
port: 3000
exposure: public
resources:
profile: small
scaling:
min: 1
max: 3
domain:
auto: true
tls: true
env:
- name: NODE_ENV
value: production

Spec repository: flui-cloud/flui-spec · npm package: @flui-cloud/spec · JSON Schemas

Where Flui runs

Portable across providers. Yours across servers.

Same flui.yaml, same operating model — regardless of which cloud is underneath.

Hetzner Scaleway Contabo · planned

Need a different provider? Get in touch →

For partners

Build your cloud offering on Flui.

If you operate cloud infrastructure but lack a modern software layer, Flui is the platform your customers expect. Open source, customizable, and engineered for production.

White-label friendly

Brand the platform as your own. Flui is the engine, you're the offering.

Engineered for production

Tested, documented, and built on K3s, Postgres and the same battle-tested open-source stack you already trust to run real workloads.

Custom integrations

Need a specific provider, custom workflow, or tailored deployment? Let's design it together.

Talk about partnering
Built in public

Flui is alpha. Here's what's real today.

Functional, self-hostable, and actively developed. Not yet recommended for production while security hardening and the second provider integration land.

Shipped live
  • Multi-provider deploy (Hetzner, Scaleway)
  • Cluster dashboard
  • App management
  • CLI & flui.yaml
  • Observability stack (Loki, Grafana, Prometheus)
  • App Catalog
  • Log Explorer
  • Pod autoscaling
  • Manual infrastructure scaling
  • Firewall management
  • DNS & SSL/TLS
  • VNet & private networking
  • SSO integration
In progress in progress
  • Security hardening (audit, key management, RBAC review)
  • Bring your own server
  • Contabo & OVH support
  • Automated infrastructure scaling
  • Managed database services
  • Self-hosted Git repositories
  • Container registries — Docker Hub & Harbor
  • Continuous deployment from Git

Follow along on GitHub or in the changelog.

Get started

Build with Flui.

Star the project to follow along, or run it on your own infrastructure today.

Star on GitHub.

Follow the project and help spread modern, ownable cloud infrastructure.

Star on GitHub

Self-host the platform.

Deploy Flui on your own infrastructure in about 5 minutes.

Get started