Products · Static websites

Every CDN is fast.
The difference is what happens on the way out.

Push a frontend and Darwa builds it, converts the images, drops the dead JavaScript, checks the metadata and the contrast, writes the cache rules, and ships it to fifteen regions — then hands you the report.

Deploy a websiteSee pricing
https://acme.comLCP 0.9s
92deploy report
−12.4 MB34 images converted to AVIF
118 KBunused JavaScript still shipped
2 pagesmissing a meta description
2.9:1contrast fails on .hero-sub
Apply 3 fixes
41s
Median deploy
incremental builds
0.9 s
LCP after optimization
from 3.1 s
15
Edge regions
cache primed on release
$0
Image CDN bill
included in every plan
One push, seven stages

Follow a deploy from your commit to the edge.

01
Push

Connect the repository and stop filling in build forms.

Framework, build command, output directory, and Node version are read from the project itself. Every value is shown before the first deploy and stays editable.

Elsewhere
new site
Framework:         [ select ]
Build command:     ______________
Publish directory: ______________
Node version:      [ select ]

Four guesses before anything is built, and a failed deploy if one is wrong.

On Darwa
detected
Framework Next.js 15 (static export)
Node 22 — from .nvmrc
Build npm run build
Output ./out
ONImage + bundle optimization
Next.js
static export
React
vite / cra
Vue
vite
Angular
ng build
Svelte
sveltekit
Astro
astro build
Nuxt
generate
Hugo
hugo
Gatsby
gatsby build
Docusaurus
docs
Eleventy
11ty
HTML / CSS / JS
no build
Environment variables · stored per environment
darwa env list --project marketing-site1 warning
production preview
PUBLICNEXT_PUBLIC_API_URL api.acme.com api.staging…
PUBLICNEXT_PUBLIC_PLAUSIBLE on off
SECRETCONTENTFUL_TOKEN •••••••• ••••••••
SECRETREVALIDATE_HOOK •••••••• ••••••••
WARNSTRIPE_SECRET_KEY is referenced in client code
Build blocked until it is removed or renamed

Secrets are decrypted inside the build container only, and never written into the output you ship to the edge.

Separate values per environmentProduction, preview, and each branch environment hold their own values — one variable, different value, no duplicated project.
Build-time and public variablesValues baked into the bundle are labelled public in the dashboard, so nobody has to remember which prefix leaks.
Secrets stay server-sideTokens for your CMS, search index, or webhooks are available to the build and never to the browser.
Secret scanning on every buildIf a secret-marked value appears in client output, the build fails with the file and line — instead of shipping your key to the CDN.
Change without a code pushUpdate a value and redeploy from the dashboard or CLI; the previous build stays available for rollback.
Preview overridesPoint previews at staging APIs and test keys automatically, so a pull request can never write to production data.
02
Build

Rebuild what changed, not four thousand pages.

A typo fix should not cost eighteen minutes. Darwa diffs your commit against the previous build and rebuilds only the output that depends on it.

Dependency graphPages rebuild when their content, components, or data change — nothing rebuilds on a timer.
Asset cacheOptimized images and compressed bundles are keyed by content hash and reused between builds.
Safe cold buildsA dependency or config change invalidates the cache and rebuilds everything.
Explainable logsEvery skip and rebuild decision is printed, so a surprise full rebuild has a reason.
darwa build · incremental41s vs 18m
$git push (8f21a0c — 3 files changed)
Diffing against build #482
SKIP3,961 pages unchanged — reused
BUILD39 pages rebuilt
SKIP34 optimized images reused
OKDeployed in 41s
03
Optimize

Images, bundles, and dead weight — handled before delivery.

This is the stage other platforms skip. Your original file goes in; the format, size, and density each browser actually wants comes out.

image pipeline · /hero.jpg
IN4.2 MB · 4000×2500 · uncompressed
avif 1600w 188 KB
avif 800w 71 KB
webp 1600w 240 KB
jpeg 1600w 402 KB fallback
OUT188 KB served — LCP 3.1s → 0.9s
AVIF and WebP with fallbacksChosen per request from the visitor's own headers, never by a build flag you set once.
Responsive variantsGenerated from the source file — no hand-written srcset, no layout shift.
Lazy loading below the foldDeferred with dimensions reserved, applied automatically where it is safe.
Bundle analysisWhich package added weight, on which route, compared against the previous deploy.
Unused dependency detectionPackages shipped to the browser but never imported at runtime.
No per-transformation pricingImage optimization is part of the plan, not a metered add-on.
04
Check

SEO and accessibility, verified on every deploy.

The problems that quietly cost you traffic are caught on the way out — not in a quarterly audit someone eventually commissions.

Sitemap and robots.txtGenerated from your routes, with previews excluded from indexing automatically.
Metadata checksMissing titles, duplicate descriptions, and pages with no canonical URL, listed per route.
OpenGraph previewsSee exactly how each page renders when it is shared, before you ship it.
Structured data suggestionsArticle, product, and FAQ schema proposed from what the page already contains.
AccessibilityContrast, alt text, heading order, and focus traps — each with the offending selector.
darwa check4 findings
SEO/pricing — no meta description
SEO/blog/2 — duplicate title
A11Y.hero-sub contrast 2.9:1 (needs 4.5:1)
A11Y3 images without alt text
OKSitemap, robots, canonicals present
05
Deliver

Fifteen regions, primed before the first visitor arrives.

Cache warming happens at deploy, so nobody pays the cold-miss penalty for your release. Cache rules are written for you — immutable assets forever, HTML revalidated, everything purged on deploy.

HTTP/3 and HTTP/2QUIC by default with fallback — fewer round trips on mobile and lossy networks.
Brotli, precompressedText assets compressed at build time, so there is no CPU cost per request.
Automatic cache managementNo headers to hand-tune and no stale HTML after a release.
Security headersCSP, HSTS, referrer and frame policy from one config block.
DDoS protectionAbsorbed at the edge, included on every plan.
Edge regions
us-eastus-westca-centralsa-eastsa-westeu-westeu-centralaf-southaf-westme-centralap-southap-southeastap-northeastoc-southeastoc-west
darwa.json
{
  "redirects": [
    { "from": "/old-page", "to": "/new-page", "status": 301 }
  ],
  "rewrites": [
    { "from": "/api/*", "to": "https://api.acme.com/*" }
  ],
  "headers": [
    { "for": "/*", "set": { "X-Frame-Options": "DENY" } }
  ]
}
06
Review

Every pull request gets a URL and a verdict.

A link on its own tells you nothing. Darwa diffs the preview against production and posts what changed — pages, performance, and layout — back onto the pull request.

https://preview-42.darwa.apppr #42
preview report · pull request #421 issue
Built from 8f21a0c in 38s
NEWPage added — /pricing
DIFFButton colour changed on 14 pages
PERFLCP 0.9s (production 1.1s)
WARN/pricing table overflows at 375px
Preview and its data removed on merge
Password-protected

Share a client review link without exposing unreleased work to the internet or to search engines.

Team-only access

Restrict a preview to signed-in members of your organisation.

Branch previews

Give any long-lived branch a permanent URL for staging or design review.

07
Report

Traffic and performance, attached to the deploy that changed them.

Cookie-free analytics collected at the edge, next to a performance report you can act on with one click — and the agent can open the pull request that fixes it.

25,412
Visitors · 30 days
+18% vs previous period
1.2 s
Median load
0.9 s at p75
/
Top page
9,120 views · 42%
Search
Top source
44% search · 31% direct
Findings · apply individually
darwa optimize --report
1hero.jpg 4.2 MB → AVIF saves 4.0 MB
2moment.js unused — saves 340 KB
3Fonts block render — saves 240 ms
412 below-fold images load eagerly
darwa optimize --apply 1,2,3,4
PROpens a pull request for review
Core web vitals
LCP0.9 s
CLS0.02
Total blocking time310 ms
Unused JavaScript118 KB

Real visitor timings by country and device — not a synthetic lab score. Every release marks the timeline, so a regression has an obvious suspect.

On the roadmap

Not shipped yet, and nothing above depends on it.

Soon
AI website builder
Describe the site, get a real project, deployed and editable.
Soon
AI performance engineer
Opens pull requests to raise Lighthouse, SEO, and speed.
Soon
Global edge functions
Auth, redirects, and personalisation at the edge.
Soon
Automatic A/B testing
Split traffic, let the agent call the winner.
Soon
Website monitoring
“Slower today — cache miss rose from 4% to 31%.”
Pricing

The CDN is free. The optimization is the product.

Bandwidth and projects scale with the plan. Image optimization and the AI agent are what you are actually paying for.

Free$0foreverStart freeDeveloper$9per monthChoose planPro$29per monthStart free trial
Projects210Unlimited
Bandwidth100 GB1 TB5 TB
Global CDN + SSLIncludedIncludedIncluded
Custom domains1Unlimited + wildcardsUnlimited + wildcards
Preview deploymentsIncludedPassword-protectedPassword + team-only
Image optimizationIncludedIncluded
Redirects, rewrites, headersIncludedIncluded
AI optimization agentReport onlyReport + auto-fix pull requests
AnalyticsBasicBasicAdvanced + funnels
Edge regions38All 15
Team roles & deploy approvalsIncluded
SupportCommunityEmailPriority
Bandwidth overage billed per GB — never suspendedPreviews do not count against project limitsFree keeps CDN, SSL, and a custom domain
Get started

Deploy the site and read the report.

The first deploy tells you what is slow, what is oversized, and what search engines cannot read — before you have paid anything.

Deploy a websiteCompare with web services