The European hyposcaler

Fast, simple,
secure, sovereign.

Drift is a European cloud for your whole app:
functions, data and sites, deployed with one command.

Why drift?
1
Command To deploy your app or platform, in full, from the CLI.
0
US clouds Made and hosted in Europe. GDPR by default.
100%
Portable No proprietary lock-in. Export and deploy anywhere else.
Free
Forever The real platform, also for your experiments.

European, full stop.

Drift is developed, maintained, and hosted in Europe. We comply with European laws and jurisdiction, and nothing else.

Select a topic to explore

EU data centres Physical location

Every compute instance, database and blob store runs in data centres in Germany, Austria and the Netherlands, on servers of netcup, a German hosting company. The data centres are certified to ISO 27001. Your data does not leave the EU.

Zero foreign ownership Corporate structure

Drift owns no foreign subsidiary and answers to no foreign parent.

EU-based operations Engineering & on-call

Every engineer, operator, and on-call responder is based on European soil. Incident response, change management, and access to production infrastructure never crosses EU borders.

One EU region Data residency

Drift runs in one European region, on purpose. No multi-cloud routing and no US relay layer: your requests go straight to a server in Europe.

Application data is sovereign Always EU

Source code, databases, blobs, secrets, environment variables, and function execution logs are all stored and processed exclusively on EU infrastructure. This is not configurable: it is the only mode.

Where we still lean on US companies Disclosed in full

Our transactional email (signup codes, password resets, login codes, invites) goes through Microsoft 365 in the EU; TLS certificates come from Let's Encrypt; the CLI is published on GitHub; DNS is at GoDaddy. None of them holds your application's data, and each is being replaced.

Publicly logged migration Changelog

When one of these is replaced, it comes off this page and the change is dated in our public changelog.

No hidden data flows Full audit trail

Every data path in the platform is documented and accounted for. If it is not listed on this page, it does not exist. There are no shadow integrations, analytics pipelines, or third-party telemetry endpoints.

Packing list my-backup.tar.gz open formats
$drift slice snapshot create --name my-backup
$drift slice snapshot download <snapshot-id>

In the box

  • atomic/ your source, as you wrote it
  • atomic-manifest.json routes, triggers, schedules
  • backbone/nosql/ JSON documents
  • backbone/sql/ an SQL dump
  • backbone/blobs/ your files, as files
  • backbone/queues/ pending messages, as JSON
  • backbone/secrets.json in cleartext, written 0600
  • canvas/ your site

Packed. Unpack it anywhere: nothing in it needs Drift to read.

Stay because you want to,
not because leaving is hard.

No lock-in by design: export your project and run it anywhere, or self-host it freely.

An open tar.gz, not a proprietary container
Self-hostable runtime available on GitHub
Your code comes back with every Drift-generated wrapper stripped out

Priced by the shape,
down to the cent.

Four unit prices turn what you declare into a monthly figure, paid up front. There is no request meter, no egress line, no base fee, and no bill larger than the one you agreed to.

  • Function memory per MiB a function books, per month €0.03
  • Scheduled job per job, per month €0.30
  • Realtime connection per concurrent connection, per month €0.01
  • Storage per GiB, per month, for code, data and sites alike €0.25
  • A function itself is free: you pay for the memory it books. Everything else a slice holds is capped, not charged.
  • Small business

    A bakery's webshop

    Menu, orders, payment callbacks and a kitchen screen, for a few hundred orders a month.

    • 5 functions, 96 MiBIn Node.js: menu, order status, new order, payment callback and a confirmation queue
    • 1 scheduled jobThe nightly close-of-day summary
    • 10 realtime connectionsThe kitchen screen
    • 0.875 GiB of storage64 MiB of code, 768 MiB of data (orders 256 MiB, photos 512 MiB) and a 64 MiB site
    • Function memory96 MiB × €0.03€2.88
    • Scheduled jobs1 × €0.30€0.30
    • Realtime connections10 × €0.01€0.10
    • Storage0.875 GiB × €0.25, to the cent€0.22

    Per month€3.50

  • Multi-site business

    A salon group's booking system

    Six salons taking bookings online, with reminders and a live view of open slots at the front desks.

    • 5 functions, 128 MiBIn Python: open slots, book, cancel, the day's agenda and the reminder queue
    • 2 scheduled jobsThe morning reminder sweep and the nightly accounting export
    • 30 realtime connectionsThe desks' live slot view
    • 3.75 GiB of storage128 MiB of code, 3.5 GiB of data (bookings database 1 GiB, audit log 512 MiB, intake files 2 GiB) and a 128 MiB site
    • Function memory128 MiB × €0.03€3.84
    • Scheduled jobs2 × €0.30€0.60
    • Realtime connections30 × €0.01€0.30
    • Storage3.75 GiB × €0.25, to the cent€0.94

    Per month€5.68

  • Public sector

    A municipal service portal

    Permit applications with attachments, status for residents, a live case board for officers and a public register, for a municipality of about 50,000 residents.

    • 9 functions, 384 MiBIn Go, Python and PHP: submit, status, attachments, decisions, the case list, the register, two queues and a 128 MiB export
    • 3 scheduled jobsDeadline reminders, the weekly register publication and the nightly export
    • 100 realtime connectionsThe officers' case board
    • 45.5 GiB of storage256 MiB of code, 45 GiB of data (submissions 2 GiB, audit log 2 GiB, register database 1 GiB, attachments 40 GiB) and two 128 MiB sites
    • Function memory384 MiB × €0.03€11.52
    • Scheduled jobs3 × €0.30€0.90
    • Realtime connections100 × €0.01€1.00
    • Storage45.5 GiB × €0.25, to the cent€11.38

    Per month€24.80

  • Large employer

    An intranet for 4,000 staff

    Pages, comments and approvals, search, report exports and live notices, for a workforce of 4,000.

    • 10 functions, 576 MiBIn Go, Python and Node.js: search, pages, edits, comments, approvals, the directory, two queues and a 256 MiB report builder with its status call
    • 6 scheduled jobsThe nightly directory sync and search index, a daily report pre-build, a weekly digest, a monthly archive and an hourly housekeeping pass
    • 400 realtime connectionsLive notices for the people online at once
    • 72 GiB of storage512 MiB of code, 71 GiB of data (pages 3 GiB, comments 2 GiB, audit log 5 GiB, directory database 1 GiB, attachments 60 GiB) and a 512 MiB site
    • Function memory576 MiB × €0.03€17.28
    • Scheduled jobs6 × €0.30€1.80
    • Realtime connections400 × €0.01€4.00
    • Storage72 GiB × €0.25€18.00

    Per month€41.08

  • Prepaid, for the shapeYou pay the figure up front for the period you pick. An idle slice costs what a busy one does, and nothing is metered in the background.
  • Examples, not quotesHow much traffic a shape carries depends on what its functions do. drift file benchmark measures it, and drift plan quotes your own total before anything is applied.
  • What a price does not buy yetDrift is in closed alpha: one European region, a slice runs as a single process, and there is no uptime commitment. ISO 27001 is something we are working towards, not something we hold.
The full price list, and the free slice

Build it in your head,
deploy it in one night

Every Drift app is composed from five foundational pillars.
Everything comes set up for you out of the box, so infrastructure disappears in the background and you can focus on your app or platform.

Select a view to explore the architecture

AtomicFunctions

Your code, one file at a time

Write a handler in the language you already know. A Pulse answers a call; a Field keeps running. Drift builds both, runs them, and puts your Pulses behind a URL.

EdgeRouting

One way in, and only the ways out you allow

Every slice gets its own URL and certificate. Traffic that leaves goes only where you said it could.

Driftfile
declarative slice manifest
zero-trust schema
slice "permit-intake" {
  billing = "monthly"
  labels = {
    client = "Gemeente Driftwijk"
    env    = "production"
  }
}

element "default" {
  pulse "POST /submit" {
    handler = "PostSubmit"
    memory  = "32MiB"
  }

  pulse "POST /decision" {
    handler = "PostDecision"
    memory  = "32MiB"
    auth { api_key = env("DECISION_KEY") }
  }

  pulse "QUEUE notify" { # background queue consumer
    handler = "QueueNotify"
    memory  = "32MiB"
    secrets = ["RESEND_API_KEY"]
  }
}

secret "RESEND_API_KEY" { value = env("RESEND_API_KEY") }

nosql "submissions" { size = "64MiB" }
nosql "audit-log" { size = "64MiB" }
blobs "uploads" { size = "256MiB" }
queue "validate" {}
queue "notify" {}
site "/" { dir = "canvas/public" }
site "/reviewer" { dir = "canvas/reviewer" }
Your slice secure by default

Snapshots can be sealed with your own passphrase, so not even Drift can open them.

Pick a developer experience to explore

GET /api/menu one handler, six languages, one SDK
The whole handler, in Go
Go 1.26 · compiled
package main

import drift "github.com/ondrift/cloud/sdk/go"

func GetMenu(req drift.Request) (int, string, any, map[string]string) {
    menu, _ := drift.Backbone.Cache.Get("menu")
    return 200, "OK", string(menu), nil
}
drift cli
flow-state commands
interactive & scriptable
$ drift # launches full-screen TUI dashboard over slices & logs
$ drift plan
slice ada/permit-intake   + create
$ drift apply
✓ post:submit
✓ NoSQL: submissions
✓ canvas/public → /
✓ https://ada-permit-intake.ondrift.eu
$ drift atomic logs post:submit --follow
2026-10-03 14:02:19.412 submission stored
instant loop
from your laptop to your slice
Only what changed
01
Local File Run

drift file run runs your whole project on the real Drift runtime on your machine, in Docker, with no account and no mocks.

02
Pre-Flight Schema Lint

Instant syntax & type validation against cached cloud schema before anything touches the network.

03
Deploys Skip What Didn't Change

Each function is fingerprinted, and only changed ones are rebuilt and shipped.

04
Logs and Metrics in Your Terminal

Follow a function's logs as they happen, check its requests, errors and latency, or watch it all live in the drift dashboard.

Stay in the zone from
the first command

Tools that get out of your way, simple commands and programming languages you already know.

Not a trial.
A whole slice, free.

Every primitive on this page is on the free tier: functions, databases, blob storage, queues and a website, on the same runtime as a paid slice. It arrives with placeholder names. Rename them into your app, and it stays free.

  • No card. Nothing to fill in before you start.
  • No expiry. The free slice has no end date.
  • One per account. Five functions, 100 MB of data and a site.
$drift slice create my-app --free
Everything the free slice holds
my-app free slice

Functions · 5 slots in 80 MB

slot-116 MB slot-216 MB slot-316 MB slot-416 MB slot-516 MB

Data · up to 100 MB

defaultnosql database-1sql bucket-01blobs queue-1queue

Site · 50 MB

./site → /canvas

5 secrets1 schedule50 realtime connections24 h of logs3 days of backups

Ship something this weekend.

  1. FriSketch it
  2. SatBuild it
  3. SunDeploy it
  4. MonUsers arrive