Operate
Operations
JoyMux is a local Unix daemon. Run it under a service manager that restarts it on
failure and restricts its account. Keep JOYMUX_DATA_DIR on a local filesystem
with sufficient space; the daemon enforces memory bounds but does not enforce a
disk quota. Back up the SQLite database, its WAL/SHM files, and output/ together
while the daemon is stopped or by using a SQLite-aware snapshot.
| Setting | Purpose | Default |
|---|---|---|
JOYMUX_DATA_DIR |
SQLite and raw evidence | .joymux |
JOYMUX_SOCKET |
local API socket | $JOYMUX_DATA_DIR/joymux.sock |
JOYMUX_MEMORY_BYTES |
retained raw bytes per session | 1 MiB |
JOYMUX_ENV_ALLOW |
request environment allowlist | all requested names |
JOYMUX_REDACT |
regexes for derived views | none |
The data and output directories are mode 0700; SQLite, raw evidence, and the
socket are mode 0600. Startup rejects a symlink data directory, incompatible
schema, corrupt database, and a non-socket object at the configured socket path.
Raw evidence may contain secrets and should use encrypted storage where required.
Monitor daemon RSS, CPU, open descriptors, task count, SQLite/WAL size, and raw
output growth. benches/soak.py provides smoke, 1h, 8h, and 24h profiles.
The current API does not expose internal event-queue depth. Durable sequence lag
can be observed by comparing a consumer checkpoint with last_event_sequence.
At startup, nonterminal sessions are killed by their recorded process group and
atomically recovered as failed. On Linux, validate that the service account may
signal its descendants. macOS is design-compatible but was not validated here.