Notifications and secrets

Jobman supports bounded command callbacks, HTTPS webhooks, and SMTP delivery. Configurations persist secret references; supervisors resolve values only when a target, probe, or notifier needs them.

Define secret references

schema_version: 1
secrets:
  webhook_token: env:JOBMAN_WEBHOOK_TOKEN
  smtp_password: file:/home/example/.config/jobman/smtp-password

An environment reference is resolved from the supervisor environment. A file reference must be a clean absolute path; on Unix the file must be regular, non-symlinked, and inaccessible to group and other users.

Do not put literal credentials in ordinary environment maps, HTTP headers, or the configuration file.

Configure a webhook

notifiers:
  operations:
    type: http
    events: [job_succeeded, job_failed, job_timed_out]
    timeout: 10s
    retry:
      max_attempts: 3
      delay: 1s
      max_delay: 1m
    http:
      url: https://hooks.example.com/jobman
      secret_headers:
        Authorization: webhook_token
      signing_secret: webhook_token
      allow_http: false
      allow_private_hosts: false
      follow_redirects: false

Subscribe at submission:

$ jobman run --notify operations --notify-on job_failed -- ./batch

Notifier defaults and named job specs can also define subscriptions. HTTP is HTTPS-only by default and rejects local/private destinations unless explicitly allowed. Sensitive headers must use a secret reference.

Delivery semantics

Lifecycle events and pending deliveries are committed in the same SQLite transaction as their state transition. Attempts are leased, bounded, and recorded for inspection. A notification failure never changes the target job outcome.

Retry waits consume the remaining whole-job timeout budget. Because there is no resident notification daemon, abandoned due work is recovered when another supervisor runs or when an operator invokes:

$ jobman doctor --repair

Inspect delivery and attempt records with jobman show --json JOB.

Redaction boundary

Configured sensitive names and bounded RE2 patterns redact Jobman diagnostics and structured output. They do not rewrite raw target stdout or stderr. Avoid printing secrets in targets, probes, or callback diagnostics.

The configuration schema documents command, HTTP, SMTP, event, and retry constraints.