Products · Web services

Deploy and run production web apps.
No infrastructure to manage.

Connect your repository and Darwa detects the framework, writes the build and start commands, deploys to the regions you choose, and keeps the service healthy — then tells you what to change when the numbers move.

No build commands to writeNo cold starts, even on freeNo APM bill
darwa deploylive
$darwa deploy ./storefront
Reading repository — 1 web service found
Framework Next.js 15
Runtime Node 22
Build npm ci && npm run build
Start npm start
Port 3000 (detected)
Regions us-east · eu-central · ap-south
Nothing to configure. Deploying…
OKLive at storefront.darwa.app in 41s
01Deploy

You push. Darwa works out the rest.

Other platforms ask you for a build command and a start command before they will deploy anything — and a wrong guess is a failed deploy. Darwa reads the repository first and shows you what it found.

The usual way
setup form
Build Command:   ______________
Start Command:   ______________
Runtime:         [ select ]
Port:            ______________
Instance type:   [ select ]
Region:          [ select ]

Six answers before the first deploy, each one a chance to fail. Beginners guess; experienced teams copy them between services and drift apart over time.

On Darwa
detected
Framework Django 5.0
Runtime Python 3.12
Build pip install -r requirements.txt
Start gunicorn storefront.wsgi
Port 8000 (detected from settings)
Instance 0.5 vCPU / 1 GB — fits your build
Edit anything, or press deploy

Every field is pre-filled and editable. The detection is committed to your project, so a new service in the same repository starts from the same answers.

Next.js
node
React
node
Vue
node
Angular
node
Express
node
NestJS
node
Django
python
FastAPI
python
Flask
python
Laravel
php
Rails
ruby
Spring Boot
java
Gin
go
Axum
rust
Phoenix
elixir
Dockerfile
custom
Three sources

A linked GitHub, GitLab, or Bitbucket repository, a public Git URL, or a prebuilt Docker image. All three deploy the same way.

Deploy on every push

Each commit to the tracked branch builds and releases with zero downtime. Automatic deploys can be paused per branch.

History and rollbacks

Every release is kept with its build log, commit, and configuration. Restoring a previous one takes a single click.

02Preview deployments

Every pull request gets a URL and a verdict.

A preview is not just a link. Darwa builds the branch, runs checks against it, and posts the result back on the pull request.

pull request #124preview
github.com/acme/storefront · pr-124
Built in 38s · preview-124.darwa.app
PASSBuild — no errors, 0 warnings
PASSPerformance — p95 92 ms (main: 96 ms)
PASSSecurity — no new advisories
WARNBundle — +142 KB from a new date library
Preview removed automatically when merged
Temporary URLs

One per pull request, isolated from production, with its own database copy.

Branch deployments

Any long-lived branch can have a permanent environment of its own.

Checks before merge

Build, performance against main, dependency advisories, and bundle size.

Automatic cleanup

Environments and their data are destroyed on merge or close.

03Runtime

One service definition, every kind of process.

Web processes, workers, and scheduled jobs run from the same repository and the same release, so they can never drift out of sync.

Always-on services

Your process stays up. Crashes restart automatically, health checks gate traffic, and no instance ever sleeps — including on the free tier.

Background processes

Run workers beside your web process from the same repository. Queues, consumers, and long jobs share the same release.

Cron jobs

Schedule commands with a cron expression. Each run is a recorded execution with its own logs and exit status.

WebSockets & HTTP/2

Long-lived connections and multiplexed requests are supported by default. No proxy configuration, no upgrade headers to tune.

Port binding · handled for you

Bind to PORT and you are done. If your app binds elsewhere, Darwa detects the listening port at build time instead of failing the deploy.

server.js
const port = process.env.PORT || 3000;

app.listen(port, "0.0.0.0", () => {
  console.log(`listening on ${port}`);
});
Environment & secrets

Variables are set per environment and diffed between them, so the classic “works in staging, missing in production” failure is caught before you deploy.

darwa env diff staging production
= DATABASE_URL set in both
= REDIS_URL set in both
MISSINGQUEUE_URL — absent in production
CHANGEDLOG_LEVEL — debug → warn
1 variable would break the worker on release
04Scaling

Scale before the traffic lands, not after.

Reactive autoscaling always arrives late — it waits for saturation, and your users feel the gap. Darwa reads the shape of your traffic and moves first.

autoscaler · storefrontpredictive
Now 2 instances · CPU 46% · 1,240 req/min
Trend +38% req/min over 6 min
Pattern matches last 4 Fridays 19:00–21:00
WARNForecast — ~10,400 sessions in 30 min
SCALEScaling 2 → 5 instances now
Reason reactive scaling would arrive 4 min late
Scaled down to 2 at 22:10 — cost neutral
Vertical scaling

More CPU and memory for a single instance, applied on a rolling restart with no dropped requests.

Horizontal scaling

More instances behind the load balancer, added and removed automatically within limits you set.

Rules you control

Target CPU, memory, request rate, or queue depth — with hard minimums and maximums per environment.

Weekly capacity review

The agent compares this week to the last and proposes a plan change only when the numbers justify it.

05Networking

Public URL, your domain, and a private network.

Every service gets a darwa.app subdomain immediately. Add your own domain and the certificate is issued and renewed without you touching DNS twice.

Custom domains

Apex, subdomain, and wildcard support with a verification record you paste once.

Automatic SSL

Managed certificates issued on connect, renewed before expiry, HTTP redirected to HTTPS.

Traffic routing

Load balancing across instances and regions, with the closest healthy region serving each request.

Static asset caching

Assets cached at the edge with compression, so your process only serves what changes.

Private services

Mark a service private and it leaves the public internet entirely, reachable only by your other services.

Maintenance mode

Serve a holding page on demand while you migrate data, with health checks paused.

Deploy to any of these, and route users to the nearest
us-eastus-westca-centralsa-eastsa-westeu-westeu-centralaf-southaf-westme-centralap-southap-southeastap-northeastoc-southeastoc-west
06Operations

Monitoring that comes with the service.

Latency, errors, saturation, and uptime are part of the platform — not three third-party subscriptions you wire up after launch.

Real-time logs

Build and runtime streams in one place, searchable, filterable by level and instance, downloadable as plain text.

Built-in APM

Request latency, slow endpoints, error rate, memory growth, and CPU pressure — no agent to install, no separate bill.

Health checks

A path you nominate is polled continuously. Failing instances leave rotation before users notice them.

Alerts

Notify on error-rate spikes, saturation, failed deploys, and cron failures — to email, Slack, or a webhook.

Usage against your plan · storefront
CPUAt limit
94% of 2 vCPU
Over the comfortable range — throttling 11% of requests
MemoryNear limit
3.6 of 4.0 GB
Nearing the limit — 2 OOM restarts this week
BandwidthHealthy
412 of 1,000 GB
Comfortable for the rest of the billing period
Application health score
92/ 100
Uptime · 30 days99.98%
Performance · p95128 ms
Securityno advisories
Efficiency1 oversized service

One number per service, with the reason it is not 100 and the change that would fix it.

Cost intelligence
darwa cost storefront
This month $42.10 · projected $58.60
CPU used 35% avg · 61% peak
Memory used 1.2 GB of 4.0 GB provisioned
Idle hours 11h/day below 8% CPU
IDLE4 GB provisioned, 1.2 GB used — oversized
SAVE4 GB → 2 GB saves $18.00/mo, p95 unchanged
darwa apply cost-fix 1

Usage, a monthly estimate, alerts before you cross a threshold, and the specific resize that saves money — with the projected effect on latency stated up front.

07AI assistant

Logs tell you what happened. Darwa tells you why.

The assistant reads the build, the release, the logs, and the metrics together — so a stack trace becomes a cause, a fix, and a button.

What a log line usually gives you
runtime log3 errors
ERRORConnection timeout
ERRORConnection timeout
ERRORConnection timeout
and nothing about why
What Darwa gives you
diagnosis
CAUSEDatabase connections exhausted — pool 20/20
Load 540 req/s against a pool of 20
Since 09:41, after release r-2841
QUEUE42 requests waiting, 0 free connections
FIXRaise pool 20 → 100, recycle idle at 30s
EFFECTProjected p95 340 ms → 96 ms
Apply to staging · Apply to production · Show diff
Explains deployment failures

Why the build broke, which file, and whether it is your code or a missing variable.

Detects crash loops

“Your service restarted 42 times because memory exceeded the limit — raise memory or fix this endpoint.”

Analyses slow requests

Ranks endpoints by time lost, points at the query or call responsible.

Recommends scaling

Proposes instance and plan changes from real usage, never from a default.

Automatic rollback

If error rate jumps after a release, the previous version is restored and you get the reason.

Database intelligence

Flags waits, missing indexes, and pool limits when your app is fast but the query is not.

post-deploy watch · r-2844auto-rollback
ALERTError rate 0.2% → 4.9% within 90s of release
ROUTEPOST /checkout — payment gateway returning 500
ACTIONRolled back to r-2843 automatically
Cause: gateway API version pinned in r-2844 was retired
08Security

Included, not an upsell.

The protections most teams bolt on after an incident ship with every web service.

ProtectionWhat it doesIncluded
HTTPS everywhereManaged certificates, renewed automatically, HTTP redirected to HTTPSAll plans
Secrets managementEncrypted at rest, injected at runtime, never printed in build outputAll plans
Dependency scanningEvery build checks your lockfile against known advisoriesAll plans
Exposed secret detectionCommits and images are scanned for keys before they shipAll plans
DDoS protectionAbsorbed at the edge, with rate limiting per routeAll plans
Private servicesReachable only from your own services, never from the public internetAll plans
09Team

Shared services, scoped access, full history.

Roles decide who can deploy, who can approve, and who can only look.

Permissions

Owner, maintainer, contributor, and viewer — applied per project, not per account.

Deployment approvals

Require one or two sign-offs before a release reaches production.

Activity history

Every deploy, rollback, variable change, and access grant, with who and when.

10Pricing

Priced per service, with a free tier that stays awake.

No cold starts on free, no separate monitoring bill, and a usage estimate on every service before the invoice arrives.

FreeNo sleeping
$0

For community projects and prototypes that still need to be awake.

  • Always available — no cold starts
  • 512 MB / shared CPU
  • 1 region
  • Preview environments
  • Logs, metrics, health checks
  • Community support
Start free
Starter
$7/service · mo

For small production services with real users.

  • 512 MB – 1 GB, 0.5 vCPU
  • 3 regions
  • Custom domains + SSL
  • Autoscaling to 3 instances
  • Cost intelligence
  • Email support
Start free trial
Scale
Custom

For companies with compliance and capacity commitments.

  • Dedicated capacity
  • Private networking + peering
  • SSO, audit logs, SOC 2
  • Custom regions
  • 99.99% SLA
  • Named engineer
Talk to us
Pay-per-use available on Pro and ScaleUsage alerts before thresholdsMonthly estimate on every serviceNo charge for preview environments
Get started

Point Darwa at a repository and watch it deploy.

No build commands, no instance sizing, no monitoring setup. Change your mind later — every detected setting is editable.

Deploy a web serviceRead the docs