SableCDN
Private beta Join the waitlist

Read the rule.
Watch it run.

A CDN whose edge behavior is a file you write, version, and can predict — not a dashboard of toggles you discover in production.

CH1 edge CH2 origin LAT 37.5 ms/div M 40 ms/div T→ 120 ms SIM — synthetic signal
Trigger ARMED Mode PRIVATE BETA Source SIM

Every trace, site and figure on this page is illustrative pre-launch specimen data. Nothing here is a measurement or a commitment.

A CDN is a program that runs in a hundred places at once. You should be able to read it.

One file. Every edge. No hidden state.

Your edge behavior lives in sable.rules, next to your app, in your repository. It is reviewed in a pull request and diffed like anything else you ship. Below is a real rule with a real threshold — turn the knob, or type into the file. They are the same number.

sable.rules Illustrative — syntax not final
# sable.rules — committed with your app, applied at every edge

origin "app" {
  url        = "https://origin.example.com"
  connect    = "2s"
  keepalive  = true
}

route "/assets/*" {
  cache      = "public, max-age=31536000, immutable"
  stale      = "while-revalidate=86400"
  compress   = ["br", "zstd"]
}

rule "shield-slow-origin" {
  when       = origin.latency >  ms
  then       = shield("iad1")   # nearest warm edge
  else       = pass
}
CH1 edge CH2 origin LAT 37.5 ms/div T→ 120 ms
Level
ms ARMED

Level sits inside the origin excursion — the rule fires on every miss and the picture holds still.

  • It is a file

    Versioned, reviewed, rolled back. The edge has no state your repository does not already describe.

  • It is total

    Everything the edge does is in it. There is no second place to look and no toggle that quietly outranks your rule.

  • It is answerable

    Ask which rule wins for a URL and get the matched line back — before you deploy, not after the incident.

What is on the bench

Six modules, one enclosure. Every control here is live — it drives the readouts beside it, the way the real panel will.

Origins

Point at anything that speaks HTTP. Failover is a list, not a support ticket.

app
origin.example.com
media
s3://sable-media
docs
docs-origin.example.com
fallback
origin-eu.example.com
Cache 24H
cache-control: public, max-age=86400
Match order

First match wins, top to bottom. No precedence to memorize.

  1. /assets/*
  2. /api/*
  3. host = eu.*
  4. *
Shield

Collapse a stampede onto one origin fetch.

Purge READY

By surrogate key or by prefix. Momentary — it fires on press.

Logs structured · unsampled
edge=lhr1 route=/assets/* status=HIT  age=1204 ms=8
edge=iad1 route=/api/*    status=MISS shield=iad1 ms=118
edge=nrt1 route=/assets/* status=HIT  age=88   ms=11
edge=fra1 route=/         status=HIT  age=42   ms=9

Where it runs

Seven sites armed, two in build. Round-trip figures are a stored reference trace, not a live measurement — this is a pre-launch page and the network is still going in.

Channel list REF — stored trace, not measured
SableCDN points of presence with illustrative round-trip times
Site Location Region RTT p50 RTT p95 State
IAD Ashburn na-east 11 ms 24 ms armed
SJC San Jose na-west 14 ms 29 ms armed
LHR London eu-west 9 ms 21 ms armed
FRA Frankfurt eu-central 10 ms 22 ms armed
NRT Tokyo apac 13 ms 27 ms armed
SIN Singapore apac 17 ms 38 ms armed
SYD Sydney oceania 19 ms 41 ms armed
GRU São Paulo latam 26 ms 51 ms build
JNB Johannesburg africa 31 ms 62 ms build

Range

One instrument, three attenuator positions. The rule syntax is identical on all of them — the setting changes what you are allowed to push through, nothing else. Figures are provisional and will be confirmed before the beta opens.

Range selector Attenuation
X1

Hobby

USD / month
Egress
100 GB / mo
Origins
1
Rule syntax
Full
Support
Community
X10

Team

USD / month
Egress
2 TB included
Origins
10
Shield
Yes
Log stream
Yes
EXT

Scale

metered, no base
Egress
$0.004 / GB
Origins
Unlimited
Tiers
Automatic
Sales call
None
Output

There is nothing to buy yet. Every position leads to the same place until the beta opens.

Join the waitlist

Provisional Prices are illustrative pre-launch figures, not an offer. No card is taken for the waitlist.

Output · waitlist Not armed

The bench is not open yet.

SableCDN is in private beta. There is no sign-up, no trial, and no traffic being served today. Leave an address and we mail you once — when you can put a rule in and watch it run.

Standing by.