Starting with 1.3.3, the agent requires HTTPdis 0.7.1 or later. If you use a Basic password file, replace legacy SHA-1 and DES hashes before upgrading.
Upgrade from 1.3.0 to 1.3.1
Only the proxy mounts the Docker socket in the root Compose stack. The agent can read container status and stats. Use MONIT_PROXY_EXEC_TARGETS for probes and exec commands and MONIT_PROXY_LIFECYCLE_TARGETS for start, stop or restart. Both lists take full container IDs. Refresh them after recreating a target.
The installer discovers the socket group and stops before replacing an existing direct-socket agent. To preserve rules and state, follow the migration guide.
Upgrade from 1.2.0
Upgrade the agent and UI before adding serve, cron, stats or monit sections. Before rolling back to 1.2.0, restore the previous configuration and startup command.
Each command reads its own section. Explicit CLI flags take precedence. Repeated rule or resource flags replace the corresponding YAML list. An explicit monit --rsc selects observation even if YAML configures an action. Use --dry-run to preview rules for one invocation.
stats:
rsc: [cpu_percent, mem_usage]
output: json
serve:
interval: 60
status_token_file: /run/secrets/status
To protect GET and HEAD on /v1/status, set serve.status_token_file or --status-token-file to the path of a dedicated secret. Clients send its bearer token. With the dashboard, configure the authenticated proxy to inject the header only on the upstream status route.
Upgrade from 1.1.4
Use separate secrets for actions, notifications, journal reads and metrics. For per-user journal cursors, enable --trust-proxy-user only behind an authenticated proxy that overwrites the actor header and restricts direct access to the agent. Otherwise readers share the anonymous cursor.
By default, /metrics is open. Set serve --metrics-token-file FILE and configure the scraper with the matching bearer token to require authentication. This setting does not protect /v1/status.
Docker exec waits up to 60 seconds by default. Set kwargs.exec_timeout on the command alias (1–86400 seconds). A timeout leaves the outcome unknown; check the container before retrying because the command may still be running.
Version 1.2.0 introduced the optional socket proxy. Existing overlay invocations are still accepted in 1.3.1.
Guided installer in 1.1.4
1.1.4 is the first tagged release with install.sh. Run it from the checkout to install the agent with its local HTTPS dashboard, or choose the agent alone. The installer reports the container count after the first collection. Follow the installation guide.
When upgrading from 1.1.3, keep the same Compose project, credentials and volumes. No journal or state migration is required.
Last complete snapshot in 1.1.3
After a failed cycle, the dashboard shows the time and contents of the last complete snapshot in read-only mode. There is no history before the first successful cycle.
The current containers list stays empty and /readyz returns 503. The optional last_complete_snapshot field provides historical data. The failed_action field identifies the action and container when known.
Rules and aliases accept spaces around commas in lists, for example status in (paused, running). Upgrading from 1.1.2 preserves the configuration and journal.
Install the stable release
python -m pip install 'monit-docker==1.3.3'
# Matching images
# decryptus/monit-docker:1.3.3
# decryptus/monit-docker-ui:1.3.3
Images target Linux amd64; the latest tag is not updated. See installation and prerequisites.
Rule fixes in 1.1.2
An unsupported unit such as 100 mb now reports a syntax error (status 140) without a Python traceback. Use a supported unit such as MB, MiB, kB or B. A literal incompatible with the measured type, such as 1.5 for mem_usage, reports a value error (status 110) instead of unexpected-exception status 150. Update scripts that interpreted the old status.
Compose installation and upgrading to 1.1.2
The root Compose starts an observation-only serve agent, with no automatic actions enabled by default. An authenticated HTTPS UI and memory tutorial are available. See the quickstart and memory tutorial.
If you used the historical root cron/PHP-FPM Compose, preserve and review your configuration before replacing it: old MONIT_DOCKER_CRONS jobs do not start automatically in this new installation.
No configuration or journal schema migration is required from 1.1.1. Preserve configuration, state, restart budgets and journals. The agent still supports Python 3.10+. The Pillow upgrade affects only the artwork generation tools.
Textual in 1.1.0
Install monit-docker[textual] and run monit-docker tui --ui textual. Curses remains the default. Both terminal interfaces are read-only; no manual intervention is triggered. No configuration or stored-data migration is needed. See the terminal guide and current screenshots.
Changes in 1.0.1
A typed transport timeout now becomes MonitoringError(115) whether the socket or watchdog fires first, including connection/header timeouts. Unrelated errors and response cleanup keep their behavior. YAML structure checks use Sonicprobe 0.3.57 or later without changing selectors, precedence or implicit comma handling.
No configuration or journal migration is required from 1.0.0. Preserve state, restart budgets, journals and retained archives. The body-read deadline is not an absolute deadline for a complete monitoring cycle.
The 1.0 scope
Local YAML configuration, one-shot commands, cron, serve and an explicit read-only terminal interface. Noninteractive commands never open curses. The API keeps /v1. Future changes follow the deprecation policy.
The release includes unittest collection guards, bounded Docker statistics reads, normalized selector errors and terminal restoration on handled signals. Installed package, image, UI and upgrade validation target the same published revision.
Upgrade from beta
Since 0.0.80, YAML validation is shared and strict, unknown clients are rejected, group and direct patterns intersect, commas remain literal and chained comparisons follow Python operand order. Review rules: these corrections can change which actions execute.
# Several patterns: repeat the option, without comma splitting
monit-docker --name 'web-*' --name 'api-*' stats
monit-docker -c config.yml check-config --output json
monit-docker -c config.yml run web-guard --dry-run
Stop writers before backing up configuration, state, journals and archives with their permissions. Test copies, retain the earlier version and preserve new data separately before rollback. Do not reset restart budgets or replay historical actions.
Release rehearsals cover upgrades from 0.0.78, 0.0.79 and 0.0.82. The detailed procedure covers backup, verification and rollback; this does not certify arbitrary older versions.
Automated checks cover installed packages, images, the UI and upgrades. This patch does not establish absence of leaks or behavior under saturation.
Validation and limits
The 1.0.0 release CI passed: unittest application suite, dedicated Docker/PTY tests, desktop/mobile UI and upgrade/rollback rehearsals. Real SSH TUI acceptance subsequently passed on 28 September 2026. Prolonged observation remains open until final measurements are reviewed.
These checks are not latency guarantees or certification of every host and physical storage failure. Manual request deduplication is in memory, and a Docker OOM event is never inferred from exit code 137 alone.

