zectre.yaml

Deployment and project configuration for Zectre (zectre.yaml).

Zectre reads zectre.yaml in the project root for deploy settings (and for Tish build settings when package.json does not define them). Keep this file at the repo root so it stays versioned even if .zectre/ is gitignored for local link state. The CLI binary is zectre; only zectre dev / zectre build invoke the tish compiler for the native Tish runtime.

Example (native Tish)

name: my-app
 
deploy:
  replicas: 1
  strategy: rolling
  process_type: tish
  env:
    LOG_LEVEL: info
 
resources:
  cpu: 100m
  memory: 128Mi
 
networking:
  port: 3000
  protocol: http
  health_check:
    path: /health
    interval: 10s
    timeout: 5s

Example (Docker)

name: my-container-app
 
deploy:
  process_type: docker
  image: ghcr.io/org/app:latest
  replicas: 1
 
networking:
  port: 8080
  protocol: http

Top-level keys

KeyDescription
nameApplication name
namespaceOptional namespace string
buildTish entry + features (used only if package.json has no tish section)
deployDeployment spec
resourcesCPU / memory limits
networkingPort, protocol, optional health check

deploy

KeyDescriptionDefault
replicasInstance count1
strategyDeployment strategyrolling
process_typetish (native binary) or dockertish
imageContainer image ref (required when process_type is docker)
envEnvironment variables merged with app-level vars from the CLI/API
max_runtime_secsTask max runtime (seconds); effective value is capped by the platform
volumesFor Docker: bind mounts [{ host_path, container_path }]

resources

KeyDescription
cpuCPU limit (e.g. 100m)
memoryMemory limit (e.g. 128Mi)

networking

KeyDescription
portPort the proxy should target
protocole.g. http, tcp, grpc
health_check.pathHealth check path (parsed locally; platform support may vary)
health_check.intervalInterval string (e.g. 10s)
health_check.timeoutTimeout string

Build config: package.json vs zectre.yaml

Precedence: If package.json includes a tish section (source, features), that is used for local zectre build / zectre dev and platform builds. Otherwise Zectre uses the build block in zectre.yaml.

package.json example:

{
  "name": "my-app",
  "version": "1.0.0",
  "tish": {
    "source": "./src/main.tish",
    "features": ["http", "process"]
  }
}

YAML build when there is no tish key in package.json:

build:
  source: ./src/main.tish
  features:
    - http
    - fs

Feature names align with Tish capabilities (http, fs, process, regex, polars, etc.). Extra features may be inferred from tish-* dependencies in package.json.

Project layout

my-app/
├── package.json     # optional: name, version, tish.source, tish.features
├── zectre.yaml      # deploy (+ optional build)
├── README.md
└── src/
    └── main.tish

Improve this documentation