SATOM — the System Automation & Task Orchestration Manager — is a multi-user web platform that manages FortiWeb, FortiADC and FortiAnalyzer fleets over their REST APIs and SSH, keeping a local, queryable, git-versioned copy of every device configuration.
The database, audit trail, git history and automation that the appliances themselves don't offer.
Every device's configuration is harvested on schedule and versioned in git — drift detection, A→B diff viewer and point-in-time restore included.
Two-node active/standby clustering with TLS-enforced PostgreSQL streaming replication is built into the installer — the secondary joins with one pasted key.
A spec-driven form engine edits any registry endpoint with stacked slide-over panels, create-references-in-place and dry-run previews on every write.
Live database, portable bundles, git-versioned device configs and an external SFTP server — four independent copies across failure domains.
Scheduled actions, Change Requests with maintenance-window approval gates, and background jobs with pause / resume / stop.
Two-factor login, role-based access, per-channel encryption monitoring and a hardened deployment profile out of the box.
A light enterprise console — navy chrome, per-ADOM color coding, one workspace per Fortinet product line.
🖼️Dashboardscreenshot pending
🖼️Signaturesscreenshot pending
🖼️Templatesscreenshot pending
🖼️Object editorscreenshot pending
🖼️Device syncscreenshot pending
🖼️Backups & HAscreenshot pending
A read path that keeps the database and git in lock-step with the live appliances — and a minimal-diff write path back.
Hourly sync + nightly inspect, per product
REST API, SSH/CLI fallback
One snapshot shape per device
PostgreSQL device store
JSON tree committed to git
Writes go the other way, minimally. When you save an object, only the fields you changed are pushed to the device — with a dry-run preview and a full audit entry.
One interactive installer with online and air-gapped modes, for Debian and RHEL families.
Detects apt, dnf/yum, zypper or pacman and maps package names per family. Prompts for IP, port, admin password and standalone / cluster mode.
Self-contained bundles — OS packages, Python wheels and the application — for hosts with no internet access. Auto-detected when bundle/ is present.