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 |