project control · live
The project starts at nika.yaml.
Use the root project file for default spend and one released reader profile: armed beats, or run retention and provenance policy.
nika.yaml is the project control plane. It is optional when defaults are enough, closed when present, discovered from cwd toward the filesystem root and separate from each *.nika.yaml workflow. The released cadence reader does not yet compose every project key.
One project file. Many workflow files.
The filenames encode different jobs in the released engine. nika.yaml governs the project. Files ending in .nika.yaml carry executable workflow intent. Application code points at a workflow while cwd anchors the project around it.
nika.yaml PROJECT CONTROL
├── ceiling
├── arm[] ──────────────────┐ ARM PROFILE
└── traces · registry │ RUN POLICY PROFILE
│ names
workflows/*.nika.yaml │ WORKFLOW INTENT
└── tasks · permits · run ◀──┘Use this file with arm and serve.
This profile passes both released readers. Every effect-bearing beat names its own spend ceiling and missed-run policy. Nothing important is inferred from a convenient default.
nika: my-project
ceiling: 0.50
arm:
- workflow: workflows/daily-brief.nika.yaml
cadence: "TZ=Europe/Paris 30 7 * * 1-5"
où: local
plafond: 0.20
manqué: rattraper-une-fois
chevauchement: sauterUse these rungs for direct runs.
The project parser applies trace retention and registry provenance to direct workflow operations. This policy-only profile is live for the run path, but it is not accepted by the current arm and serve cadence path.
nika: my-project
ceiling: 0.50
traces:
keep: 30d
registry:
floor: provenancedcwd selects the governing project.
Discovery walks from the working directory through its ancestors and stops at the first nika.yaml. This makes a nested Node service and a terminal invocation resolve the same project when both start inside the repo.
const nika = new LocalNika({
cwd: '/srv/my-project',
})
await nika.runToEnd('workflows/daily-brief.nika.yaml')Create it deliberately, then ask what is armed.
The init flag lays a commented starter. Bare nika arm judges an arm-ready profile, reports the next slots and schedules nothing. A policy-only profile is consumed by direct run operations instead.
nika init --project-file
nika arm