> Section: [9. Nagios compatibility](https://jaque.sh/docs/nagios-compat/overview.md)
> Next: nagios-compat/exec-plugins
> Index: https://jaque.sh/llms.txt


jaque does not ask a Nagios estate to migrate in a weekend, or at all. The
plugins already installed keep executing, the scripts and dashboards
already writing to the command file keep writing, the consoles already
reading Livestatus keep reading, and an existing `nagios.cfg` tree compiles
to native config instead of being retyped by hand. Four surfaces carry
that promise, each documented on its own page. This page maps them to the
semantics that make keeping them worthwhile: soft/hard states,
acknowledgements, downtimes.

Status: the [importer](https://jaque.sh/docs/nagios-compat/importer.md) is implemented but has never run
against a real third-party Nagios config. See [Status](https://jaque.sh/docs/project/status.md)
for the full evidence table before trusting anything it emits.

## 1. The compatibility contract

Point jaque at an existing Nagios plugin set and config tree, get the same
operational picture out of the tools already reading that estate today
(Thruk, NagVis), and only then decide, on your own schedule, whether to
adopt jaque's own dashboard, CUE config, or notification model. None of
that decision is required to start; every surface below works without it.

## 2. Four surfaces

| Surface | Carries forward |
|---|---|
| [Exec plugins](https://jaque.sh/docs/nagios-compat/exec-plugins.md) | Any script speaking the exit-code protocol, unmodified, with no sunset date. |
| [FIFO external commands](https://jaque.sh/docs/nagios-compat/fifo-external-commands.md) | The wire format existing tooling already writes to. |
| [Livestatus](https://jaque.sh/docs/nagios-compat/livestatus.md) | The read protocol Thruk, NagVis and Checkmk already speak, so they point at jaque without a config change. |
| [Importer](https://jaque.sh/docs/nagios-compat/importer.md) | A Nagios config tree compiled to native CUE, with a report of what translated and what did not. |

Each surface carries forward not just the wire format but the semantics
behind it: soft/hard states, acks, downtimes. That is the behavior
Nagios-class tooling actually expects; jaque implements it directly,
rather than presenting a compatible-looking shell around something that
behaves differently underneath.

## 3. What this is not

jaque never executes a legacy Nagios config at runtime. Every surface above
is either a permanent protocol adapter (exec plugins, FIFO, Livestatus) or
a one-time compiler pass (the importer). There is no legacy mode that reads
`nagios.cfg` directly and runs it; the config that runs is always jaque's
own CUE, whether written by hand or emitted by the importer.
