Docs menu

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.