jaque deploys as one binary started with a -target flag that names the role the process plays. The default role, all, is the whole system in one process with no external service. Every other role is the same binary doing less, and the only thing any two roles ever share is a log server: the event log lives there, and so do the work queue and the coordination store that the split shapes add. This page says when all is enough, what each further -target buys, and what it costs. Topologies and Cluster and coordination carry the detail; this is the map.

1. -target all is the default

jaque -config jaque.cue

With no -target flag the process runs as all: the engine schedules checks, executes them itself, folds their results through the state machine and appends every event to the log, in one process. The event log defaults to -eventlog memory, in-memory and not durable, and can be pointed at the embedded, on-disk event log store with -eventlog file://... instead. Coordination defaults to in-memory too, with -coordination nats://... as the shared alternative. Perfdata sinks and the archive are optional and run in the same process when enabled. One static binary, no service to stand up first.

2. When all is the whole story

-target all is sufficient when three things hold: the estate fits on one host's execution capacity, every check can reach its target from that host, and losing in-memory state on restart is acceptable, or has been made moot by -eventlog file://.../-retain. There is no operational tax for staying here. No cluster, no log server to keep alive, no coordination store to provision. An estate migrating off one Nagios host usually fits this description, because that host already proved the capacity is enough.

3. What each further -target adds

Split roles when one of the following is needed, and only then.

Checks from more than one network or machine: a worker in a DMZ, or a worker whose local plugins cannot run centrally. This is the engine/worker split in Topologies.

A read-only surface separate from execution: a dashboard reachable without exposing the process that schedules checks. This is -target ui.

Perfdata or notification delivery that scales independently of check execution. This is -target sink and -target notifier.

High availability of the engine itself: more than one engine sharing ownership of the object set with automatic failover. This is more than one -target engine and the mechanism in Cluster and coordination.

Each of these is additive on top of the default. It is the same binary with a different -target and, for anything beyond all, an external -eventlog nats://... and -coordination nats://... that every role points at.

4. The one server between roles

The sequence below starts one all process and grows it, one -target at a time, into the split and HA shapes. At every step the only thing that crosses a network boundary is traffic to the log server: the event log every role follows, the work queue the engine publishes to and workers pull from, and the membership buckets engines announce themselves in. No role opens a connection to another role. A worker is started with -queue and no engine address; a ui process is started with -eventlog and never learns an engine exists.

  host A                                   host B
  +---------------------------------+      +-------------------+
  | jaque -target engine            |<---->| log server        |
  |   -coordination nats://B        | log  |   event log       |
  +---------------------------------+      |                   |
  host A'                                  |   work queue      |
  +---------------------------------+      |   membership/     |
  | jaque -target engine            |<---->|   jaque.cmd.<id>  |
  |   -coordination nats://B        | log  |                   |
  +---------------------------------+      |                   |
  host C        worker             ------->|                   |
  host D        ui, sink, notifier <-------|                   |
                                           +-------------------+

two engines share ownership; B is still the only crossing

One binary, six targets, one crossing
  host A                                   host B
  +---------------------------------+      +-------------------+
  | jaque -target engine            |<---->| log server        |
  |   -coordination nats://B        | log  |   event log       |
  +---------------------------------+      |                   |
  host A'                                  |   work queue      |
  +---------------------------------+      |   membership/     |
  | jaque -target engine            |<---->|   jaque.cmd.<id>  |
  |   -coordination nats://B        | log  |                   |
  +---------------------------------+      |                   |
  host C        worker             ------->|                   |
  host D        ui, sink, notifier <-------|                   |
                                           +-------------------+

  two engines share ownership; B is still the only crossing

The consequence for network design is one address to reach: the log server. Every role needs a route to it, and nothing needs a route to a role, except the people and tools that read the dashboard, the API or Livestatus on a ui or all process.

5. Security considerations

Splitting by role changes what is exposed, not how it is authenticated. The log server becomes the thing every role trusts, so its network is the perimeter. The listeners a role opens (dashboard, API, Livestatus) are the same in every shape and are unauthenticated except for the command API behind -api-token. Read Security before choosing which network any of these processes sits on.