* fix(graphs): reveal graph content area after tree branch loads The jstree select_node handler hides .cactiGraphContentArea (#navigation_right) before loading a branch's graphs via AJAX to avoid flashing the previous branch, but the only re-show was coupled to a window resize event that does not fire after the AJAX load. On themes that hide .cactiGraphContentArea by default (e.g. Deepness) the content area stayed display:none and the graphs/filters were invisible. Re-show it on loadUrl completion. * fix(filter): keep the Edit Filter dialog columns from collapsing The modern filter Edit dialog is created with jQuery UI width:'auto'. Its body is a table-based label/field grid, which jQuery UI measures at min-content, collapsing the dialog content to a sliver and pushing the fields off to the right. Floor the content min-width so the columns lay out. Validated in Deepness and Dark. * fix(graphs): centre single-column graphs in the graph view graphWrapperOuter > div:first-child is width:fit-content inside a (full-width for one column) flex wrapper, so the graph rendered flush-left. Add auto horizontal margins so it centres; the absolutely-positioned drilldown toggle continues to track the graph. * fix(graphs): don't re-show content area on aborted branch load A superseding tree branch click aborts the in-flight loadUrl; its .always() must not re-show the content area the new selection just hid, or stale graphs flash while the new branch loads. Skip completions whose textStatus is 'abort'.
Cacti
Overview
Cacti is an open-source network monitoring and graphing platform built on RRDtool.
It provides a scalable framework to collect, store, and visualize time-series data from network devices, servers, and applications.
Core capabilities include:
- Automated device discovery
- Local and remote data collection
- Graph, data source, and RRA templating
- SNMP polling (v1/v2/v3) and IPv6 support
- Role-based access control (RBAC)
- Plugin framework
- Dynamic graph viewing and export options
Release Branches
Cacti maintains two primary branches:
| Branch | Purpose |
|---|---|
1.2.x |
Stable long-lived release series |
develop |
Active development toward Cacti 1.3.x |
For the latest published version, see GitHub Releases.
System Requirements
Minimum supported dependencies by branch:
| Dependency | Cacti 1.2.x |
Cacti develop (1.3.x) |
|---|---|---|
| MariaDB | 10.5+ | 10.11+ |
| MySQL | 8.0+ | 8.4+ |
| PHP | 8.2+ | 8.3+ |
| RRDtool | 1.7+ | 1.8+ |
| Net-SNMP | 5.9+ | 5.9+ |
Notes:
- RRDtool 1.9+ is recommended for newer dynamic graph features in 1.3.x.
- A web server with PHP support is required.
- PHP should be available as CLI or CGI for scheduled polling and maintenance scripts.
php-snmpis now fully supported. When bothphp-snmpand the Net-SNMP binaries are available,php-snmpis used by default; to force the Net-SNMP binaries, set$php_snmp_support = false;ininclude/config.php.- Full support for the upcoming PHP 8.6 release is planned, which brings significant performance improvements that speed up data collection in Script and Script Server data input methods.
Operating system guidance:
1.2.x: RHEL/Rocky/Alma 8+ (or equivalent) is a common baseline.1.3.x: RHEL/Rocky/Alma 9+ or CentOS Stream 9+ is preferred for modern PHP packaging.- Debian and Ubuntu are also well supported.
Installation (Source Checkout)
Clone the repository:
git clone https://github.com/Cacti/cacti.git
cd cacti
Dependency management:
- For a source checkout on both
1.2.xanddevelop, install dependencies with Composer before serving Cacti. Composer-managed packages underinclude/vendorare generated and intentionally not committed; the remaining legacy libraries in that directory are not Composer-managed and remain in the repository. - On
develop,composer installuses the committed lock file resolved against Cacti's PHP 8.3 floor. - Use
composer updateonly in an intentional dependency-update change, and commit the resultingcomposer.lockupdate. - Release packages must build
include/vendorfrom the lock withcomposer install --no-devand verify the real build host withcomposer check-platform-reqs --no-dev. - Tags under
release/*build a deterministic archive, SHA-256 checksum, CycloneDX SBOM, and GitHub provenance attestation through the release-artifact workflow.
Install dependencies:
composer install
Windows users may need:
composer install --ignore-platform-req=ext-pcntl --ignore-platform-req=ext-posix
For a source checkout, install the locked browser dependencies before configuring the web server. Node.js is required for this build; release archives already contain the generated assets. Run this command as the owner of the Cacti files:
npm ci
Then configure your database and web server, and complete setup using the official docs:
https://github.com/Cacti/documentation
Database Upgrades and Schema Checks
When running from source (especially develop), schema updates may be required after pulling changes.
Upgrade the database schema:
sudo -u cacti php -q cli/upgrade_database.php --forcever=`cat include/cacti_version`
If needed, force a re-upgrade from an earlier version:
php -q cli/upgrade_database.php --forcever=<older_version>
Audit schema consistency:
php cli/audit_database.php --report
Data Collection and Polling
Cacti collects data through data sources, which can use:
- SNMP
- Scripts
- Command output
- Databases
- Custom input methods
Polling engines:
| Poller | Description |
|---|---|
| PHP Poller | Built-in polling engine |
| Spine | High-performance C-based poller |
Spine supports SNMPv1/v2 and SNMPv3 with IPv6, with some advanced protocol support depending on how Net-SNMP is compiled on your platform.
Features
- Device discovery and automation workflows
- Reusable templates for graphs and data sources
- Distributed remote data collectors
- Plugin architecture for extensibility
- Dynamic graph interactions (time navigation, realtime view, CSV export)
- Fine-grained user and group permissions using RBAC
- Broad RRDtool graphing support (including VDEFs and stacked lines)
Documentation
Official documentation is maintained in a separate repository:
https://github.com/Cacti/documentation
Contributing
Contributions are welcome.
- Fork this repository.
- Create a branch for your change.
- Submit a pull request.
You can also help improve docs in:
https://github.com/Cacti/documentation
Community
Community support is available on the Cacti forums:
Contributors
Thanks go to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind are welcome.
License
Cacti is licensed under the GNU General Public License v2.0.
See LICENSE for details.
Copyright (c) 2004-2026 The Cacti Group, Inc.