DigitalOcean is two products in one comparison: App Platform, a PaaS that deploys from a repository, and Droplets, virtual machines you configure yourself. Kuberns is a compelling alternative to both, but for different reasons — against App Platform it competes on detection and recovery, and against Droplets it competes on not being a server you have to run.
Summary
When to choose Kuberns
- Deployment from a repository alone: connect the repo and an AI agent works out the framework, runtime, web port, build commands, and the resources the application needs. No app spec, no Dockerfile, no server to configure.
- No operating system to own: no patching, no systemd units, no nginx configuration, no certbot renewals.
- Automatic recovery: three layers of container self-healing that classify a failure and act on it, with every attempt recorded.
- Managed data beside the app: PostgreSQL, MySQL, and MongoDB as datastores, with Redis, Kafka, and NATS as resources, in the same dashboard as the application.
- Runtime billing: one credit is one dollar, charged while resources run, with bundles priced from your own burn rate.
When to choose DigitalOcean
- Root access: a Droplet runs anything — a system service, an unusual runtime, software that expects a machine. Kuberns has no equivalent.
- Spaces: S3-compatible object storage, which Kuberns does not offer. If you use it, you keep using it.
- Block storage volumes: persistent disks attached to a Droplet, which Kuberns does not document an equivalent for.
- Flat, predictable pricing: a Droplet costs the same every month whatever it does.
- App Platform static sites and functions: component types a container platform does not have.
Using both
This pairing has a genuinely good split, and many teams end up here.
Keep Spaces for object storage and Managed Databases where they are, and move the application compute to Kuberns. Your bucket credentials and database connection string become environment variables on the Kuberns environment, and nothing about your storage or data layer changes.
That is often the smallest useful first step: it removes the server you were maintaining without touching the parts that were already managed and working. The migration guide covers both starting points.
How the same application is described
From App Platform
App Platform is declarative. An app spec holds the components, the commands, and the variables:
services:
- name: api
github:
repo: acme/api
branch: main
build_command: pip install -r requirements.txt
run_command: gunicorn myapp.wsgi
http_port: 8080
workers:
- name: celery
run_command: celery -A myapp worker -l infoKuberns reaches the same result from the other direction. The AI agent reads the repository and proposes the framework, root directory, dependency file, base image, web port, build commands, and Procfile commands, and you edit that before anything is provisioned. The service component becomes the server resource; each worker becomes a background worker.
From a Droplet
There is no file to compare, because a Droplet has no declared model. What makes your application run is spread across the machine, and the migration is largely the work of finding it:
systemctl list-units --type=service # what runs, and the ExecStart line
cat /etc/nginx/sites-enabled/* # the port, and the routing you forgot about
crontab -l # the scheduled work nobody documentedThat third command is the one that matters. Cron entries are the most commonly missed item in a Droplet migration, and nothing reports an error when a job silently stops running.
If your Droplet runs Docker Compose, most of this is already declared and you are much closer than the list suggests.
Projects, services, and environments
Project your product
└── Service one deployable application
└── Environment one branch, with its own variables and resourcesAn environment is tied to a repository branch and owns its variables, resources, domains, logs, and usage. Where a Droplet held staging and production as two machines, or two directories on one machine, these become two environments.
Where Kuberns shines
Against a Droplet: nothing to operate
The comparison against App Platform is a comparison of two PaaS products. The comparison against a Droplet is a different question entirely: how much of your week do you want to spend being a system administrator?
On a Droplet you own the OS patches, the process manager, the reverse proxy, the TLS renewals, the firewall, and the log rotation. None of that is hard, and all of it is yours, forever, including at 3am. On Kuberns none of it exists as a thing you touch. SSL is provisioned when you add a domain, and the routing layer is not a file you edit.
The cost is control. That is the whole trade, and it is worth being honest that some workloads need the control.
Against App Platform: detection you review before it runs
App Platform asks you for a build command, a run command, and an HTTP port. Kuberns proposes all three from the repository and shows you the result as an editable screen, then provisions nothing until you accept it. When detection is wrong — a monorepo root directory, an unusual port — you correct a field.
The agent is a provisioning step, not a runtime. Its infrastructure is cleaned up when it finishes.
Recovery when a container fails
Three recovery layers run in the backend: orchestrator restart, an intelligent healing layer that classifies the failure and selects a recovery action, and a real-time listener fed by health-agent events. Classifications include out-of-memory, memory pressure, database unreachable, port conflict, disk full, CPU throttling, missing variables, startup loop, and expiring SSL. Recovery can force-update a Swarm service, recreate a single-node application, or recalculate memory limits after an out-of-memory kill. Every attempt is recorded as a healing event with a readable state.
Defaults cap this at five restart attempts an hour, triggered by three failed probes. It is best-effort recovery, not a guarantee.
Coming from a Droplet, the comparison is against whatever systemd Restart=always was doing for you, which restarts a process without ever asking why it died. Kuberns Fixes goes further and splits build and runtime diagnostics into platform-side items you can apply from the dashboard and user-side items reported as yours to fix.
Managed data services
Kuberns offers PostgreSQL, MySQL, and MongoDB as managed datastores with their own credentials, metrics, and backup pages, plus Redis, Kafka, and NATS as queue and cache resources.
You can also keep an existing DigitalOcean Managed Database and point environment variables at it, provided the new environment can reach it. For a first migration that is often the right call: move the compute, leave the data where it is already managed and backed up.
Kuberns backups are dumps you download and load yourself. It does not restore one into a running datastore for you.
Topology and scaling
Every Kuberns resource runs under one of two topologies: single node, a Docker Compose deployment, or master node, a Docker Swarm service that supports replicas. Conversion between the two is a supported infrastructure operation. Vertical scaling changes the plan, or the CPU and memory, for a resource.
Scaling consumes runtime credits and is restricted during the free trial.
Billing shaped around runtime
A Droplet costs the same whether it is saturated or idle, which is predictable and is also why half the Droplets in the world are oversized. Kuberns bills runtime credits: one credit is one dollar, charged while resources run.
Bundles are priced from your own burn rate — a one-, three-, or twelve-month bundle is that rate multiplied by the duration, with a better rate on longer bundles. Data transfer is metered per environment, with 5 GB a month included. See Data transfer and storage.
The trial runs seven days with ten credits and no card.
Security and access
Kuberns runs on AWS-backed infrastructure and integrates IAM, EC2, ECR, SSM, Secrets Manager, CodeBuild, CodeDeploy, CodePipeline, CloudWatch, and SES. Controls verified in source include OAuth authentication, role-based service permissions, GitHub webhook HMAC signature verification, IAM-based AWS orchestration, and cleanup of temporary agent infrastructure.
Coming from a Droplet, the meaningful change is that OS-level hardening stops being yours. Security and policy sets out what remains: application code, the secrets you supply, access decisions, data retention, and backups.
Where DigitalOcean still fits better
Anything that needs the machine
A Droplet runs a system service, an unusual runtime, a binary that expects a filesystem, or software that simply assumes it owns a host. Kuberns runs containers built from your repository. If your application is really a machine with software installed on it, that has to change first, and sometimes it should not.
Object storage
Kuberns does not offer object storage. Spaces is S3-compatible and works from anywhere, so the sensible answer is to keep it rather than replace it — but it means DigitalOcean stays in your architecture, and your bill.
Block storage volumes
Kuberns does not document a persistent-disk or volume resource. Anything currently on an attached volume needs to move to object storage or a database before you migrate.
Flat pricing you can predict a year out
A Droplet's price does not move. Runtime billing does, because it reflects what is actually running. Bundles reduce that variance by letting you pre-purchase, but a fixed monthly line on an invoice is still a different thing from a burn rate.
Static sites and functions on App Platform
App Platform has static site and function component types. Kuberns is a container platform, so neither maps directly.
Get started
If you are on App Platform, your app spec holds nearly everything the migration needs, and the DigitalOcean migration guide turns it into Kuberns resources.
If you are on a Droplet, do not start with the migration. Start with crontab -l, your nginx config, and your systemd unit, and write down what you find. That document is the migration, and everything after it is mechanical.