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.