The European hyposcaler

Fast, simple,
secure, sovereign.

Sketch your app on Friday, deploy it on Sunday.
Your first users arrive on Monday.

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.

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

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
labels:
  client: "Gemeente Driftwijk"
  env: production

atomic:
  functions:
    - route: submit
      method: post
      handler: PostSubmit
    - route: decision
      method: post
      handler: PostDecision
      auth: apikey
    - route: notify          # background queue consumer
      method: queue
      handler: QueueNotify
      secrets: [ RESEND_API_KEY ]

backbone:
  nosql:
    - slot: submissions
    - slot: audit-log
  blobs:
    - name: uploads
  queues: [ validate, notify ]

canvas:
  sites:
    - ./canvas/public
    - dir: ./canvas/reviewer
      path: /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
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 slice create permit-app --free
Slice 'permit-app' created and set as active.
$ drift file apply
✓ post:submit
✓ NoSQL: submissions
✓ ./canvas → /
✓ https://ada-permit-app.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.

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 and the Netherlands, on servers of netcup, a German hosting company. 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.

snapshot · drift cli
$ drift slice snapshot create --name my-backup
$ drift slice snapshot download <snapshot-id>
→ Downloading snapshot...
 
my-backup.tar.gz
├── ⌥ atomic/ your source
├── ◈ atomic-manifest.json manifest
├── ◉ backbone/nosql/ json
├── ◉ backbone/sql/ sql dump
├── ▣ backbone/blobs/ files
├── ⇌ backbone/queues/ json
├── ⚿ backbone/secrets.json secrets
└── □ canvas/ your site
 
✓ Snapshot downloaded to my-backup.tar.gz · open formats · your secrets in cleartext, written 0600

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

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

Start on the free slice tonight: no card, no end date, and your app runs in the EU.