Jobs are the primary user-defined automation mechanism: Python classes packaged with the core install, shipped via Git repositories, or provided by apps. They run on demand or on a schedule, with optional approval gates.
Each job class has a persisted record enabling enable/disable, metadata overrides, and cleanup of stale definitions when Git sources change.
Jobs can be exposed as buttons on object detail screens when conditions match, shortening common operational paths.
Hooks trigger jobs automatically when objects matching criteria are created, updated, or deleted—event-driven automation layered on change detection.
Optional integration with the NAPALM library lets jobs or utilities retrieve live device state (facts, interfaces, etc.) for comparison against inventory. This is presented as a bridge between documented intent and operational reality, not as a full monitoring system.
Feature guides reference data compliance and golden configuration style workflows; those advanced scenarios often rely on apps built on top of core jobs and inventory. Core provides the hooks; specific compliance engines are extension territory.
For large or isolated workloads, jobs may run as Kubernetes jobs with documented wiring between the web app, queue broker, and cluster. This is an operational deployment pattern rather than a domain concept.