operations · live
Bridge the project clock to the OS.
Emit launchd or systemd user units that invoke the same nika arm fire path as the resident server.
Use the host scheduler when it already owns process lifetime, wakeups and restart policy. Nika emits the unit, but firing law, spend limits and receipts remain inside the engine.
Inspect generated units before they touch the host.
Without --write, the emitter prints the exact launchd or systemd unit. Review the binary path, working directory, calendar and environment file before installation.
nika arm --emit launchd
nika arm --emit systemdWrite the user-scoped bridge deliberately.
The user scope is the live posture. Give the emitted service an explicit binary and environment file in production so a shell profile never becomes hidden deployment state.
nika arm --emit systemd --write \
--mode user \
--nika-bin /usr/local/bin/nika \
--env-file /srv/nika/project.envKeep provider keys out of generated units.
The env file path belongs in the unit. Secret values stay in the protected file or host secret mechanism. The emitted bytes can be reviewed without leaking provider authority.
- Generated unit: path, calendar, cwd and command.
- Protected env file: provider keys and deployment-only values.
- nika.yaml: arm-ready project controls and declarations, never secret bytes.
Leave an auditable suspension.
Removing an arm row does not narrate why it stopped. Mark the beat inactive with a reason and expiry. The disarm command teaches the unload gesture and can remove generated unit files without pretending it edited project intent.
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: sauter
actif: false
raison: maintenance fournisseur
jusqu_au: 2026-09-01