Kedge derives configuration from source, image metadata, and platform defaults. Most apps need no Kedge-specific configuration:

kedge up

The properties below set Kedge-specific behavior or override detected values.

setting properties

When the same property appears more than once, the higher row wins:

location example
deployed app kedge up --memory 1GiB
source Compose x-kedge: {memory: 1GiB} or # kedge: memory=128MiB
image EXPOSE 8080 or LABEL dev.kedge.memory="1GiB"
automatic framework detection and platform defaults

Deployed-app values persist across later deploys. Source and image values travel with those artifacts and act as defaults. Use standard Compose and Dockerfile fields where they apply; x-kedge, handler comments, and image labels cover Kedge-specific properties.

The reference uses bare names such as memory, scale.max, and volume.size. kedge up flags replace dots with hyphens, with --volume as shorthand for volume.path. Environment names use KEDGE_ plus uppercase words and underscores; Git push options and image labels add kedge. and dev.kedge. respectively. Compose uses nested YAML, omitting volume. or secret. when the surrounding object identifies the resource.

Each of these sets the same deployment value:

kedge up --memory 1GiB
KEDGE_MEMORY=1GiB kedge up
git push -o kedge.memory=1GiB kedge main

A command-line value wins over an environment variable.

CPU, memory, and volume sizes are limits, not reservations. See pricing & billing.

property reference

format describes the accepted value independently of where the property is written. Booleans use true or false. Sizes accept units such as MiB and GiB; a bare size is MiB. Durations use values such as 30s, 5m, or 1h. In environment variables, push options, image labels, and shorthand handler comments, lists are comma-separated and objects are JSON. Compose and structured handler blocks use YAML-style lists and objects.

service resources and ingress

Optional resource limits and public routing for an application service.

property format example purpose
cpus integer (≥ 1) 2 maximum vCPUs the service may use at once
memory size 1GiB maximum memory the service or handler may use
port integer (1–65535) 8080 primary TCP port reached by the app route
public boolean true give the primary port a public HTTPS route

members and volumes

Choose pooled or stable execution and configure persistent storage.

property format example purpose
members integer (≥ 0) 3 select stable members and their count; 0 explicitly selects an instance pool
volume.path absolute path /data exclusive state mount; selecting it implies a member set
volume.shared boolean true share one filesystem across pooled instances; false gives each stable member a private volume
volume.size size 20GiB logical storage limit for each sparse volume

database persistence

Optional behavior for Kedge's replicated SQLite persistence.

property format example purpose
persistence.replicate-underscore-tables boolean true include underscore-prefixed SQLite tables in replication

instance pools

Optional controls for disposable, scale-to-zero service instances.

property format example purpose
scale.concurrency integer (≥ 1) 8 requests admitted per pooled instance
scale.idle-cooldown duration 30s idle delay before a pooled instance reaps
scale.max integer (≥ 1) 20 maximum disposable instances
scale.min integer (≥ 0) 0 minimum warm disposable instances

projects, sites, and secrets

Settings for reusable projects, static trees, generated secrets, and production branches.

property format example purpose
auth required, owner, or object {"allow":{"google-domains":["example.com"]}} require an app-user or configured workforce identity at ingress
inputs object {"color":{"default":"blue"}} fields requested by a shared-app deploy form
production-branch string stable branch deployed to production
secret.generate.bytes integer (≥ 1) 32 random bytes generated once and retained outside source
static.fallback absolute path /index.html file served for unmatched static routes
static.handler-excludes list scripts,tools directories whose shebang files remain static files

handlers

Routing, runtime, package, and request-execution settings for handlers.

property format example purpose
apt list imagemagick,jq Debian packages added when a handler needs a synthesized image
methods list GET,POST allowed HTTP methods; omitted means all
route absolute path /api/items/* handler route override
runtime string python3 interpreter override when the shebang is insufficient
subprocess boolean true run each request in a separate process