1. Parties and definitions
1.1 This Agent Licence is granted by Clouds On Mars Sp. z o.o. ("Guardioz", "we", "us"). Clause 1.2 of the Terms gives our company details. Our e-mail address is contact@guardioz.com.
1.2 The "Terms" are the Terms of Service at https://guardioz.com/terms. Other words that start with a capital letter have the meaning that clause 2.1 of the Terms gives them. In addition:
- "Agent Licence" means this licence, published at https://guardioz.com/agent-licence, where you can download, save and print it;
- "machine" means the computer, physical or virtual, on which your PostgreSQL runs;
- "Monitoring Role" means the PostgreSQL role guardioz_monitor, which the Agent connects as;
- "Collector Key" means the secret key, one for each Server, with which the Agent identifies itself to the Service.
1.3 "Licensed Software" means each version that we make available of: the Agent, which is Python source code; the install scripts for Linux and FreeBSD (the "Installer"); the update script (the "Updater"); and the "Audit Bundle", an archive that we send by e-mail on request, so that you can read the code before you install it. The Audit Bundle holds the source code of the Agent, the Installer and the Updater, and a file that explains what each of them does.
1.4 The Service is for business use, as the Terms say. The same applies to the Licensed Software. Clause 5.4 of the Terms also applies to this Agent Licence.
1.5 This Agent Licence covers the Licensed Software as used with the Service at app.guardioz.com.
2. What you may do
2.1 If you follow this Agent Licence, we give you a non-exclusive licence to the Licensed Software. You cannot transfer it or grant sublicences. If you do not agree to it, do not install, run or keep the Licensed Software. The licence covers these fields of exploitation (Articles 41(2) and 74(4) of the Polish Copyright Act):
- (a) reproduction: downloading the Licensed Software and storing it, permanently or temporarily, on computers that you own or operate, including computers that you operate for your own clients, and on which you may install software;
- (b) installation and use: running the Installer and the Updater there, and installing and running the Agent for use with the Service;
- (c) audit: reading and analysing the source code to audit what the Licensed Software does on your machine and what it sends;
- (d) configuration: changing the configuration file of the Agent, within the limit in 3.1(b). This is not a modification of the code;
- (e) backups: keeping the copies that your normal backups make.
The rights in (a), (b) and (d) end when the contract under the Terms ends. The rights in (c) and (e) continue for the copies that 9.4 lets you keep. This does not limit your rights under mandatory law, including Article 75 of the Polish Copyright Act.
2.2 You may let your employees, your contractors, your auditors and the analysis tools that you use read the Licensed Software for the audit in 2.1(c). You stay responsible for what they do with it.
2.3 A copy of the Licensed Software, however it was obtained, gives no rights beyond this Agent Licence. A business without an Account may use the right in 2.1(c) and keep a copy for that purpose. The rest of this Agent Licence applies to that business in the version published at https://guardioz.com/agent-licence on the day of its download. We keep each earlier version and send it on request.
2.4 The audit in 2.1(c) covers the Licensed Software on your own machines. It does not allow security testing of the Service, such as penetration testing, without our prior written consent. Report a vulnerability that you find to contact@guardioz.com.
2.5 This Agent Licence sets no fee. The price of the Service is in the Terms.
3. Limits and your duties
3.1 You may not:
- (a) give, publish, sell, rent or lend the Licensed Software or a part of it to anyone, or give anyone a licence to it, except as 2.1(a), 2.2 and 2.3 allow;
- (b) use the Agent with a service other than the Service, for example by pointing its configuration file to another service;
- (c) use the Licensed Software, or a part of it, to build or operate a product or service that competes with the Service;
- (d) remove or change a copyright notice or a licence notice in the Licensed Software;
- (e) use our names or logos;
- (f) get around the technical protections or limits of the Licensed Software or of the Service, or send the Service data that the Agent did not produce, for example altered Snapshots sent with a Collector Key;
- (g) use the Licensed Software if you are subject to restrictive measures (sanctions) of the European Union, or use it in a country or for a person that such measures cover.
These limits do not apply to the third-party components in section 5, which their own licences govern.
3.2 You may not modify the code of the Licensed Software, except where the law allows it without our consent.
3.3 Keep the Collector Key and install commands confidential, grant the Monitoring Role only the permissions that monitoring requires, install the security updates that we tell you about (7.2) within a reasonable time, and tell us at contact@guardioz.com without undue delay if you suspect that the Agent or a Collector Key was compromised (clause 7.9 of the Terms). You are responsible for the security, maintenance and backups of your machines, operating systems and PostgreSQL instances, and for what is sent with your Collector Keys until you tell us that one was compromised.
4. Ownership
4.1 The Licensed Software belongs to us and our licensors. We reserve all rights not expressly granted to you under this Agent Licence.
4.2 You can read the source code, but that does not make the Licensed Software open source software and gives you no rights beyond section 2, except those that mandatory law gives you, including under Article 75(2) of the Polish Copyright Act. Third-party open-source components used with the Licensed Software are governed by their own licences, listed in section 5.
5. Third-party components
5.1 The Agent needs a Python interpreter and the Python libraries psycopg2, requests and PyYAML. We do not distribute them, and they are not part of the Licensed Software. The Installer installs the following from the sources that your machine uses, in the versions that they offer on the day of installation:
| System | Component | Source |
|---|---|---|
| Linux | psycopg2 (package psycopg2-binary), requests with the packages it depends on (charset-normalizer, idna, urllib3 and certifi), PyYAML and pip, under /opt/guardioz-agent; with Python 3.11, the virtual environment also receives setuptools | The Python Package Index, or the package index that your machine is set up to use |
| Linux | acl, only if the setfacl command is missing (6.2, access entries) | The package repository of your distribution |
| FreeBSD | psycopg2, requests, PyYAML, the packages they depend on, and a Python interpreter if the right version is missing | The pkg repository that your machine uses |
5.2 Each component is licensed to you by its own authors, under its own licence, which this Agent Licence does not change. For information, on 7 October 2026 the Python Package Index named these licences: psycopg2-binary, GNU Lesser General Public License with exceptions; requests, Apache License 2.0; charset-normalizer, MIT; idna, BSD-3-Clause; urllib3, MIT; certifi, Mozilla Public License 2.0; PyYAML, MIT; pip, MIT; setuptools, MIT. The psycopg2-binary package also contains compiled libraries, such as libpq and OpenSSL, each under its own licence. On Linux, acl is licensed under the GNU General Public License and the GNU Lesser General Public License; on FreeBSD the pkg repository states the licence of each package. The requirements are at https://docs.guardioz.com/start/requirements/.
6. What the Licensed Software does on your machine
6.1 Purpose. The Agent reads configuration, catalog data and statistics from PostgreSQL, and facts about the machine, and sends them to the Service. The Service stores them and uses them to check the configuration and condition of the Server and to show you the results.
6.2 Installation. You run the Installer with administrator rights. One install command from the Application registers one PostgreSQL instance. The Installer:
| Area | What the Installer does |
|---|---|
| Discovery | Reads the process list to find PostgreSQL, the pg_roles view to check that it may create the Monitoring Role, and whether the chosen instance is a standby server. Sends none of this. It stops before its first change on your machine if that instance is a standby server or if it cannot read whether it is one, and, on Linux, if curl, tar, openssl, systemctl or Python 3.11 or newer with its venv module is missing. |
| Code | Agent code from the Service into /opt/guardioz-agent; the components in section 5. |
| Monitoring Role | Created for read-only use, with a random password and one grant: membership in the built-in role pg_monitor. The Installer gives PostgreSQL only a SCRAM-SHA-256 hash of the password, computed on your machine, not the password itself. An existing guardioz_monitor role gets a new password; the old one cannot be restored. |
| pg_hba.conf | Only if the Monitoring Role cannot connect: a comment line, a rule for the local socket and a reload of the PostgreSQL configuration, which also applies earlier changes not yet loaded. No restart, no change of settings. |
| System account | Created without administrator rights or login, unless an account of that name already exists, which the Installer then uses unchanged. If that account has no group of the same name, or on FreeBSD is not a member of it, the Installer stops before its first change. The Agent service runs under the account. The registration and the first collection, which the Installer starts, run with the administrator rights of the Installer, and so does a collection that you start by hand as root. On FreeBSD the supervisor of the Agent service, daemon(8), runs as root. |
| Configuration file | Under /etc/guardioz-agent, owned by root; the Agent can read it, not change it. Holds the connection string, with the Monitoring Role password, and the Collector Key. The registration and the Snapshots have no field for this password. |
| Service | Permanent: systemd on Linux; rc.d on FreeBSD, with a log under /var/log rotated by a rule in /usr/local/etc/newsyslog.conf.d. |
| Access entries | By default, pass-through only (no listing or reading) for the system account, on the data directory and, where needed, the directories above it, so that the Agent can measure the disk space of pg_wal. The option --no-pgdata-access skips these entries; the Agent then does not measure that disk space. |
| Record | The record in 8.2. |
| Registration | Sends the host name, port, PostgreSQL version, Monitoring Role name and database names, starts the first collection, and tells the Service that the installation has finished. |
6.3 Running. The Agent:
- connects as the Monitoring Role to each database that allows connections, except the template databases;
- runs only the SELECT and SHOW statements in its source code, each limited to 30 seconds (60 seconds for the weekly size measurements), in sessions that the database driver sets to read-only. They read catalogs, statistics, sizes, settings and the names of transaction-log files waiting to be archived, not rows of your tables or views, pg_stat_statements, pg_stats, the role catalogs or the PostgreSQL log files;
- runs operating system commands and reads system files to describe the machine;
- over the network, opens only outbound connections, and only to the Service. It listens on no port and accepts no commands, and Guardioz opens no connections to your machine;
- keeps a state file in /var/lib/guardioz-agent and a log (on Linux, the system journal) that can contain PostgreSQL error messages, but no Snapshots: one that it cannot deliver is lost.
Its work grows with the number of databases and objects.
6.4 What the Agent sends. By default the Agent collects every hour. It sends:
- the sessions of the whole PostgreSQL instance, including those of your applications, with database user names, client addresses and SQL text with the values written in it, also the last statement of sessions that are not active; a value in quotation marks written right after the word PASSWORD is replaced before sending;
- every PostgreSQL setting with its value, with two exceptions: of archive_command, archive_cleanup_command, restore_command, recovery_end_command and ssl_passphrase_command it sends only whether each one is set, and it sends primary_conninfo without its password;
- catalog data, including names, index definitions, which can contain values, and the access privileges of each database, which contain role names;
- statistics, sizes and disk space;
- a profile of the machine with its host name and, on Linux, hardware identifiers such as disk serial numbers and network (MAC) addresses.
Annex I of the DPA names every category and how often it is sent. Where the Documentation page https://docs.guardioz.com/reference/data-collected/ differs from Annex I, Annex I applies. Apart from these two removals, the Agent does not remove, mask or shorten SQL text, setting values or index definitions; an index definition, expression or condition, or table storage options, longer than 64 KB is left out whole. A password typed in an SQL statement in another form, for example inside a connection string passed to a function, or a secret stored in another setting, for example one that an extension adds, can therefore reach the Service. The configuration of the Agent cannot switch off a data set, a setting, a database or a column. Clause 16 of the DPA lists the places to keep free of secrets and the controls that you have.
6.5 The connection. The Agent sends Customer Data to the address in its configuration file, whatever that address is. The install command of the Service writes https://app.guardioz.com there. The Service accepts these connections over HTTPS only, and the Agent checks the certificate of the Service. Each connection shows the Service the IP address from which your machine connects. The DPA and the Service Provider List say where else that address can be recorded, such as logs and error reports.
7. Updates
7.1 The Agent does not update itself. To update it, run the Updater on your machine with administrator rights. The Updater replaces the code under /opt/guardioz-agent with the code from the Service, writes the service definition of each Agent again, sets who may read each configuration file as 6.2 describes, on Linux creates the system account if it is missing, and restarts every Agent service on the machine. It keeps the Collector Key, the content of each configuration file and your previous version, so that you can go back to it.
7.2 We tell you by e-mail to the address of the Account about a new version that fixes a security problem in the Agent. The update steps for Linux are at https://docs.guardioz.com/agent/update/. For the steps on FreeBSD, or to learn whether your Agent is current, write to the address in 1.1. We are not responsible for a problem that an update we told you about would have prevented, if you did not install it within a reasonable time.
7.3 Running the Installer again is not an update. It gives the Monitoring Role a new password and replaces the Collector Key. The Server keeps its history only if the configuration file of the Agent for that PostgreSQL instance is still on your machine, points to the Service and holds a Collector Key that still works for that Server. Otherwise the Service registers a new Server, without the history, if the plan of your Organization has room for another Server (clause 4.7 of the Terms). If it has none, the Service refuses the registration and issues no Collector Key; the new password of the Monitoring Role and the other changes that the Installer made before the registration stay on your machine.
8. Removal
8.1 You can stop using the Agent at any time by removing it from your machine. We cannot stop or remove it for you, because it accepts no commands.
8.2 There is no uninstall script and no uninstall command. You remove the Agent by hand, reversing the changes in 6.2 and removing the state directory named in 6.3, with administrator rights and a way to run SQL as a database superuser. The Installer records its changes in /etc/guardioz-agent/install-manifest.txt, each with a command that reverses it. Nothing in the file runs by itself. The record does not list:
- the directory /etc/guardioz-agent itself;
- on FreeBSD, the Python interpreter and the packages installed from pkg;
- the new password of a Monitoring Role that existed before, which cannot be reversed;
- the changes that the Updater makes.
Its command for pg_hba.conf leaves the comment line, which you can delete by hand. The removal steps, including changes that the record does not list, are at https://docs.guardioz.com/agent/remove/, and we send them by e-mail on request.
8.3 Until you remove the Agent, it keeps collecting and sending, also when:
- you delete the Server in the Application. The Service then rejects what the Agent sends;
- you delete your Account. Deleting the Account deletes every Server of your Organization with its Collector Key (clause 16.5 of the Terms), so the Service then rejects what the Agent sends;
- this Agent Licence ends.
Clause 16.3 of the Terms gives the steps, in order, to stop collection and have your data deleted.
8.4 Removing the Agent does not delete the Server in the Application. The Terms and the DPA say what deleting a Server does to Customer Data.
9. Other terms
9.1 The Service is in beta. We provide the Licensed Software as it is. To the extent the law allows, we give no warranty for it, and the statutory warranty for defects (rękojmia, Article 558 of the Polish Civil Code) is excluded. We do not promise that it is free of errors, works in your environment or adds no load to your machine. You decide whether to install it, and you run every install, update and removal step yourself. This does not exclude or limit liability that the law does not allow to be excluded, including for damage caused intentionally or through gross negligence (clause 15.3 of the Terms).
9.2 These rules of the Terms also apply to the Licensed Software:
- liability: clause 15 of the Terms, including clause 15.3: neither document excludes or limits liability for damage that we cause intentionally or through gross negligence;
- changes: clause 19 of the Terms; we announce a change by e-mail to the address of the Account at least 30 days before it takes effect. If you do not accept it, you can end this Agent Licence (9.3(a)) and the contract (clause 19.3 of the Terms) before that date;
- law and court: clause 20 of the Terms;
- complaints: clause 17 of the Terms.
9.3 This Agent Licence starts for a Customer when the Terms apply, and for a business without an Account with its first download. It ends when:
- (a) you remove the Agent and delete your copies, at any time;
- (b) the contract under the Terms ends;
- (c) we end it by e-mail to the address of the Account because you broke section 2 or 3.
9.4 When it ends, stop using the Licensed Software, remove the Agent (section 8) and delete your copies, including the Audit Bundle. You may keep one copy for an audit of what the Licensed Software did (2.1(c)), and the copies in your normal backups can stay until they expire. Section 4, clause 9.1 and the liability and law rules in 9.2 stay in force.
9.5 Where the Terms differ from this Agent Licence about the licence to the Licensed Software, this Agent Licence applies. The DPA governs personal data in Customer Data. Send questions and requests about the Licensed Software to the address in 1.1; this Agent Licence promises no response time for them.