An app is the unit you name, deploy, and manage. Every app has a source tree, a route, a database, and a deploy history, whatever it is built from.
Every app is one or more of four types:
| type | source | runs |
|---|---|---|
| site | ordinary files | at the edge |
| HTML app | HTML with data-kedge bindings |
server-rendered per request |
| handler | a file with a #! shebang |
per request, in a VM |
| service | source, a Dockerfile, or an image | as a long-lived process |
Sites and HTML apps need no server code. A service is the escape hatch when a workload needs one; a Compose file defines several services as one app.
A service runs in a hardware-isolated VM. By default it uses disposable instances: Kedge starts them near demand and removes them when idle. A service with a persistent volume instead runs as stable members, each keeping its identity and disk across deploys and host moves.
Every app includes /shared.db and
/shared/ for state shared across instances
and regions. Reach for a persistent volume only when software requires a
private local filesystem.
Apps are global resources. Public routes receive HTTPS, private services resolve through account-local DNS, and an authentication policy can gate any app type at ingress.
type marks
kedge apps and the web console mark each app with what it resolved to:
| mark | type |
|---|---|
▤ |
site, files only |
▩ |
site with data bindings, rendered per request |
◪ |
site with handler routes |
ƒ |
a single handler owning every path |
⬡ |
service on an instance pool |
▣ |
service on stable members |
A second mark records how the content arrived: ⇡ git push, ⇅ GitHub,
↧ import, ⇥ ssh/scp, ⑂ fork, ✎ browser edit.