Configuration

Global ~/.config/zectre/config.toml, per-directory .zectre state, and environment overrides.

Global config

Path: ~/.config/zectre/config.toml

api_url = "http://localhost:47080"
default_namespace = "default"
# catalog_url = "http://127.0.0.1:47100"   # optional; overridden by ZECTRE_CATALOG_URL

Environment variables

VariablePurpose
ZECTRE_API_URLCluster API base URL
ZECTRE_API_KEYAPI key (overrides Bearer token when set)
ZECTRE_CATALOG_URLCatalog base for browser OAuth login
ZECTRE_ACCESS_TOKENBearer JWT (often from zectre login; also ~/.config/zectre/.access-token)
ZECTRE_JWT_AUDIENCEAudience when exchanging catalog OAuth (defaults to api_url)
ZECTRE_CLUSTER_ID / ZECTRE_PROJECT_IDGlobal overrides for link state
TISH_COMPILERPath to tish for Tish dev / build
  • cluster.json — API base URL for this cluster alias.
  • project.jsonprojectId, name, namespace.

Legacy root .zectre/project.json migrates into .zectre/default/ on next command.

Disambiguation: use --cluster, ZECTRE_CLUSTER_ID, or --api-url when multiple clusters exist. In CI, set ZECTRE_CLUSTER_ID explicitly.

Project manifest (zectre.yaml)

At the project root (so it stays versioned if .zectre/ is gitignored): deployment metadata (name, namespace, build, deploy, resources, networking). zectre dev / zectre build shell out to the tish binary for the default Tish workflow. For Docker deploys, set deploy.process_type: docker and deploy.image (or pass --image to zectre deploy) so the platform runs a container instead of a native binary.

name: my-app
namespace: production
build:
  source: ./src/main.tish
  features: [http, fs]
deploy:
  replicas: 3
  strategy: rolling
resources:
  cpu: 100m
  memory: 128Mi
networking:
  port: 8080
  protocol: http

Injected runtime env (on the platform)

VariableMeaning
DEPLOYMENT_IDDeployment UUID
TASK_IDTask instance UUID