peko.toml

peko.toml

The manifest is strict: an unrecognized key anywhere is a parse error, not a warning. That catches typos, and it means a key you invent will stop the build.

Discovery walks up to sixteen parent directories looking for the file.

[project]

Key Type Required Meaning
name string yes display name
version string yes full semver, x.y.z
bundle string no reverse-DNS id, also the keychain account for signing
app_id string no platform app id, written by peko link
host string no <slug>.serve.pekoui.com, written by a successful deploy server
target_platforms array no android, ios, linux, macos, windows
entry path no the main source file

Without entry, the entry is source/main.peko, then source/app.peko.

[ui]

Only five keys exist here.

Key Type Required Meaning
framework string yes see below
icon path no square PNG app icon
scheme string no custom URL scheme for deep links, lowercased
width number no initial window width
height number no initial window height

framework is native, static, or an SSR framework id: next, nuxt, sveltekit, remix, astro, angular. A bare server means next.

There is no server_framework key. The SSR framework goes in framework itself. Writing server_framework is a parse error.

[package] and [lib]

A library uses these instead of [project].

Key Table Meaning
name, version package required
description, license, authors, repository package recommended; peko verify warns when absent
keywords, categories package registry metadata
peko package minimum compiler version requirement
root lib entry source, default source/lib.peko

[dependencies]

[dependencies]
sockets = "^1.2"
local   = { path = "../local_dep" }
shots   = { version = "^0.3", demo = true }

A dependency takes a version requirement or a path, not both. demo = true scopes it to demo builds: it resolves and installs normally, but its objects and native sources are excluded from a normal or release link, so it cannot reach a shipped binary.

[icon]

Key Meaning
source the master square PNG
project the editable layered .pekoicon
macos, windows, linux, ios, android per-platform source overrides
android_foreground, android_background adaptive icon layers, both required together

Resolution is the per-platform override, then source, then [ui].icon.

[windows]

Values from Partner Center, needed for a Windows release build: identity_name, publisher, publisher_display_name. Each is optional at parse time so a partial table does not break a project targeting other platforms, but a Windows release fails without all three.

[native]

The C build. Covered in the low-level guide.

Key Meaning
sources C, Objective-C, and C++ files
include include directories
flags compile flags, keyed all or a platform name
link link arguments, same keys
libs prebuilt archives, keyed all, <os>, or <os>-<arch>

[client]

A package that ships a JavaScript half declares it here: name is the npm package name consumers import, and root is the directory holding it, default client. Every build copies it into the app's .peko/client/ and registers it in package.json.

[demo], [platforms], [capabilities]

[demo] has enabled and module (default src/demo.peko). [platforms].supported lists operating systems. [capabilities].uses is parsed and reserved for per-permission gating, but is informational today.