Editions
Antelao has four editions plus an Unregistered state, which is what the console calls a server with no license. Two editions cost nothing. Prices, and where to buy a license, are on antelao.io.
A customer holds one Community license. A second live Community license is refused for the same
e-mail address, and for another address at the same company domain; an address at a public mail
provider counts by the full address only. Addresses that reach the same mailbox count as one: a
+tag in the address is ignored, and so are the dots of a Gmail address. A Community license that
has ended or was revoked does not count.
The split is not feature-by-feature. It is by hand versus unattended, and local versus off-site. Running a backup yourself is Community. Letting the scheduler run it every night is Professional. Writing that backup to a local disk or an FTP server is Community; writing it to S3 or Azure is Professional.
What each edition unlocks
| Capability | Unregistered | Community | Developer | Professional | Provider |
|---|---|---|---|---|---|
| PriceCommunity and Developer are free of charge. Support for them is community-driven. | - | Free | Free | Subscription | Subscription |
| InstancesCreating one above the limit is refused, and what runs above a lower limit is stopped or disabled until a license allows it again. | 1 | 2 | Unlimited | 5 | Unlimited |
| Console accountsCreating one above the limit is refused, and what runs above a lower limit is stopped or disabled until a license allows it again. | 1 | 1 | 1 | Unlimited | Unlimited |
| Databases per instanceCreating one above the limit is refused, and what runs above a lower limit is stopped or disabled until a license allows it again. | 1 | 1 | Unlimited | Unlimited | Unlimited |
| Custom modules per instanceCreating one above the limit is refused, and what runs above a lower limit is stopped or disabled until a license allows it again. | 0 | 1 | Unlimited | Unlimited | Unlimited |
| Host names per instanceCreating one above the limit is refused, and what runs above a lower limit is stopped or disabled until a license allows it again. | 1 | 1 | Unlimited | Unlimited | Unlimited |
| Concurrent jobsHow many queued operations run at once. | 1 | 1 | 1 | 2 | 16 |
| EnvironmentsCreating one above the limit is refused, and what runs above a lower limit is stopped or disabled until a license allows it again. | 1 | 1 | 1 | 3 | Unlimited |
| Serving an instance on a public host nameBounds the Developer edition rather than reducing its feature set. | Yes | Yes | No | Yes | Yes |
| Obtaining a publicly trusted certificateBounds the Developer edition rather than reducing its feature set. | Yes | Yes | No | Yes | Yes |
| Direct support from AntelaoHelp from the people who build the product. The free editions are supported by the community. | No | No | No | Yes | Yes |
| No lock-out when the license server cannot be reachedIf the license server cannot be reached, a running subscription keeps working on its last check-in instead of locking you out; only changes that need more than the Community edition wait for the next check-in. Backups stored on the server can always be listed and downloaded. | No | No | No | Yes | Yes |
| Odoo 15 to 20, side by sideRun any Odoo version from 15.0 to 20.0, Community or Enterprise, each instance on its own version on the same server. You are warned when a version reaches the end of its support. | Yes | Yes | Yes | Yes | Yes |
| New Odoo releases from day oneBuilds Odoo on your server from Odoo's own recipe and official nightly builds, verified against Odoo's checksum. Run a new release before a ready-made Docker image exists, and see which instances are running an outdated build. | Yes | Yes | Yes | Yes | Yes |
| Odoo Enterprise readyAdd the Odoo Enterprise apps to any instance in one step. They are fetched from Odoo's repository for the right version and pinned to an exact revision. Requires your own Odoo Enterprise access. Removing them is always free. | No | Yes | Yes | Yes | Yes |
| New instance in minutesA five-step wizard creates a ready-to-use instance from a Production, Staging or Development preset. Existing Odoo installations can be imported too. | Yes | Yes | Yes | Yes | Yes |
| Automatic performance tuningOdoo workers are sized from the number of users you expect, and each instance gets CPU and memory limits, set automatically or by hand and applied without a restart, so no instance can starve the others. | Yes | Yes | Yes | Yes | Yes |
| Database managerCreate databases with your country's localisation, then clone, rename, back up, vacuum and reindex them from the console. Includes emergency tools to regain admin access to an Odoo database. | Yes | Yes | Yes | Yes | Yes |
| Module management without the command lineInstall, upgrade and uninstall Odoo modules from the console, or upgrade many at once in a single job. A safety copy of the database is taken before every update. | Yes | Yes | Yes | Yes | Yes |
| Custom modules straight from gitAdd modules from your GitHub or GitLab repositories. Each one is pinned to an exact commit, so you always know which code is running, with a full history of revisions. | Yes | Yes | Yes | Yes | Yes |
| Automatic updates from gitFollow the branches you choose on GitHub or GitLab, and modules update themselves as soon as new commits arrive, or on demand with one click. A commit that fails to deploy is remembered and not retried. | No | No | No | Yes | Yes |
| Zero-downtime deploymentsThe new version starts in a second container beside the running one, and traffic switches over only once it answers. Your users never see an outage. Memory for both is checked before anything starts. | No | No | No | Yes | Yes |
| Backups on the serverBack up databases and complete instances to the server's own disk. | No | Yes | Yes | Yes | Yes |
| Complete instance backupsOne archive holds everything an instance needs to be rebuilt anywhere: its databases, attachments, custom modules and configuration. Credentials can travel with it, so a restore on another server works straight away. | No | Yes | Yes | Yes | Yes |
| Scheduled backups and staging refreshesBackups run on schedules you set for the whole server or per instance. The same scheduler can also restore automatically, for example to refresh a staging copy from production every night. | No | No | No | Yes | Yes |
| Off-site backups to FTPSend backups to your own FTP or FTPS server, with a retention period for each destination. | No | Yes | No | Yes | Yes |
| Off-site backups to Amazon S3Send backups to Amazon S3 or any S3-compatible storage, with a retention period for each destination. | No | No | No | Yes | Yes |
| Off-site backups to AzureSend backups to Azure Blob Storage, with a retention period for each destination. | No | No | No | Yes | Yes |
| Your backups are always yoursList and download any backup stored on the server at any time, on every edition, even after a subscription ends. Archives stored off-site stream straight to your browser while the license carries their target. | Yes | Yes | Yes | Yes | Yes |
| Managed backup storage on AzureAdd an Azure storage account once, then make a container per instance from the console: immutable, with a token scoped to that container only, measured nightly and costed at list price on the Backup storage Overview. | No | No | No | Yes | Yes |
| Managed backup storage on HetznerAdd a Hetzner Object Storage project once, then make a bucket per instance from the console: locked at creation, measured nightly and costed on the Backup storage Overview. | No | No | No | Yes | Yes |
| Managed backup storage on Backblaze B2Add a Backblaze B2 account once, then make a bucket per instance from the console with a key confined to that bucket, locked at creation, measured nightly and costed on the Backup storage Overview. | No | No | No | Yes | Yes |
| Managed backup storage on S3-compatible storesAdd any S3-compatible endpoint (Amazon S3, Scaleway, MinIO) once, then make a bucket per instance from the console, measured nightly and costed from the rate card you give it. | No | No | No | Yes | Yes |
| Managed backup storage on Cloudflare R2Add a Cloudflare R2 account once, then make a bucket per instance from the console with a key confined to that bucket, retained by a bucket lock, measured nightly and costed on the Backup storage Overview. | No | No | No | Yes | Yes |
| Encrypted backupsLock every backup archive with your own key before it leaves the server, on every storage provider and on the server's own disk. Archives use the open age format, so they also open with the free age tool, without the console. Restoring and decrypting keep working on every edition. | No | No | No | Yes | Yes |
| Restore a databaseRestore a backup into an existing instance. The copy is prepared beside the live database and only switched in when it is ready. | No | Yes | Yes | Yes | Yes |
| Clone, move and restore whole instancesRestore a complete instance from a backup, duplicate it in one click, move it from another server, or refresh a staging instance from production with a single action. | No | No | Yes | Yes | Yes |
| Safe test copiesEvery copy of production can be neutralised automatically, so a test database cannot email customers, charge cards or post e-invoices. Covers outgoing mail, scheduled actions, Peppol, Ponto bank sync, SMS, WhatsApp, VoIP, in-app purchases, PrintNode and webhooks, and adds a clear TEST banner. | No | Yes | Yes | Yes | Yes |
| Import and export PostgreSQL dumpsLoad a database from a standard PostgreSQL dump in custom, tar or plain SQL format, detected automatically, and export databases as PostgreSQL dumps for use anywhere. | No | No | Yes | Yes | Yes |
| Upgrade Enterprise databasesMove an Odoo Enterprise database to a newer major version through Odoo's upgrade service: prepare an instance, rehearse on a fresh copy of production as often as needed, then upgrade production. Needs a valid Odoo subscription. | No | No | No | Yes | Yes |
| Upgrade Community databasesMove an Odoo Community database to a newer major version with OpenUpgrade, one step per version, rehearsed on a fresh copy of production before production is touched. | No | No | No | Yes | Yes |
| Rate limitingEvery instance limits how fast sign-in attempts and other requests can arrive, out of the box, which slows down password guessing and floods. You can adjust the limits. | Yes | Yes | Yes | Yes | Yes |
| Automatic attack blocking (Fail2Ban)Watches for repeated failed sign-ins and other suspicious traffic, and blocks the offending addresses in the firewall automatically. Without it, attacks are detected and logged but not blocked. | No | Yes | No | Yes | Yes |
| Block an address by handBlock any IP address on the spot. Unblocking is always available. | No | Yes | No | Yes | Yes |
| Access rules by address, country and pathDecide who may reach each instance and the console: allow or block by IP address, network range, host name, country or continent, down to individual pages. Blocked visitors see the response you choose, and a map shows where refusals come from. | No | No | No | Yes | Yes |
| IP location data (GeoIP)Up-to-date location data for every IP address, so country rules work and you can see where your visitors come from. Without it, every location reads as unknown. | No | No | No | Yes | Yes |
| Community threat intelligence (CrowdSec)Adds the CrowdSec security engine to the server: Odoo-specific attack detection, a firewall that blocks threats reported by the worldwide CrowdSec community before they reach you, and manual decisions. Lifting a decision is always available. | No | No | No | No | Yes |
| Pre-authentication sign-in pagePut a neutral sign-in page in front of an instance, so nobody reaches it without a user name and password you hand out. Exempt paths and addresses keep payment webhooks, integrations and your own office working without it, and every sign-in is recorded in the firewall log. | No | No | No | Yes | Yes |
| Free automatic HTTPS (Let's Encrypt)Each instance gets a free, trusted Let's Encrypt certificate that renews itself. Your site keeps working even if issuance fails. | Yes | Yes | No | Yes | Yes |
| Let's Encrypt for servers behind a firewallObtain certificates by DNS validation, which works for servers that are not reachable from the internet. Supports 13 DNS providers, including Cloudflare, Amazon Route 53, Google Cloud DNS, DigitalOcean, OVH and Linode. | No | No | No | Yes | Yes |
| Bring your own certificateUpload a certificate from your own certificate authority or a commercial provider for any instance. | No | No | No | Yes | Yes |
| Built-in certificate authorityThe server signs its own certificates for internal and development use, and provides a trust kit that installs its authority on Windows, macOS and Linux so browsers accept them without warnings. | Yes | Yes | Yes | Yes | Yes |
| Live dashboard, uptime and logsA dashboard of CPU, memory, disk and I/O use that you can arrange, uptime checks of every instance once a minute, and live log viewing in the browser. | Yes | Yes | Yes | Yes | Yes |
| Performance and uptime historyLook back over a day, week, month, quarter or year at CPU, memory, disk, I/O, response times and uptime. Data is collected from the start, so it is there as soon as you upgrade. | No | No | No | Yes | Yes |
| Resource usage (CPU, memory and storage)A server-wide view of CPU, memory and disk by host, core services and instance, with a breakdown per instance, and an hourly breakdown of where disk space goes with a storage threshold per instance that raises an alert. | No | No | No | Yes | Yes |
| Alerts to email, Slack, Discord and webhooksGet alerted on the channels your team already uses when something needs attention, such as a failed backup, a down instance, an expiring certificate or a slow query. Comes with recommended alert rules. Webhooks are signed. | No | No | No | Yes | Yes |
| Outgoing mailA built-in mail relay sends the server's own email through your SMTP provider, with a test message to check the setup. | No | Yes | No | Yes | Yes |
| Backup and restore reportsReceive a report by email after each backup and restore, or only when something went wrong. | No | No | No | Yes | Yes |
| Security noticesUsers are emailed when someone signs in to their account from a new device and when their account changes. | No | No | No | Yes | Yes |
| Attack blocking noticesReceive an email each time Fail2Ban blocks an address. | No | No | No | Yes | Yes |
| Managed PostgreSQL includedEvery server comes with a PostgreSQL 18 database cluster that is installed, tuned and maintained for you, including regular vacuum and reindex. | Yes | Yes | Yes | Yes | Yes |
| Connection pooling (PgBouncer)Lets many busy instances share database connections efficiently, so the database stays responsive under load. Turn it on per instance. | No | No | No | Yes | Yes |
| Slow query insightsFind the database queries that slow Odoo down, per server, instance or database. Values are masked before anything is stored, so no business data is kept. | No | No | Yes | Yes | Yes |
| Standby database (read replica)A continuously updated copy of your database cluster, ready to take over in one click if the primary fails. Reports and analytics read from it, so they never slow Odoo down. | No | No | No | Yes | Yes |
| PostgreSQL version upgradesMove the database cluster to a newer major PostgreSQL version in one guided job, without exporting and reimporting by hand. | No | No | No | Yes | Yes |
| Bring your own PostgreSQLRun or move instances onto your own PostgreSQL server or a managed cloud database service instead of the built-in cluster. | No | No | No | No | Yes |
| Business analytics (Metabase)Build dashboards and reports on your Odoo data with Metabase, with single sign-on from the console. Each user sees only the databases of the instances they have access to. | No | No | No | Yes | Yes |
| Developer workspaceAdds a Developer tab to each instance, and a secure SSH gateway so developers can use their own VS Code, SFTP client or debugger. Each developer gets a personal database sign-in. | No | No | Yes | Yes | Yes |
| VS Code in the browserA full Visual Studio Code editor running inside the instance, with the Odoo source code, a terminal, git and live Odoo logs. Commits are made under each developer's own name. | No | No | Yes | Yes | Yes |
| Live debuggingAttach a debugger to a running instance, set breakpoints and step through the code from the editor. | No | No | Yes | Yes | Yes |
| Team editor profilesDefine once how the editor opens for your team: extensions, settings, memory and automatic reload on edit, shared across all instances on the server. | No | No | Yes | Yes | Yes |
| Safe local copies for developersPull a copy of an instance onto a developer's own computer to work offline. Payment, API and sign-in credentials are always removed, confidential data only goes to encrypted disks, and local copies expire after 30 days. | No | Yes | Yes | Yes | Yes |
| Code in the browser, read-onlyBrowse an instance's custom add-ons and the Odoo source read-only in the browser, with syntax coloring and search. No terminal, git or extensions. | Yes | Yes | Yes | Yes | Yes |
| Two-factor sign-in and passkeysProtect console accounts with authenticator apps, passkeys and trusted devices. Administrators can make two-factor sign-in mandatory, and repeated failed attempts lock the account. | Yes | Yes | Yes | Yes | Yes |
| Roles and permissionsGive each person the right level of access: Viewer, Operator, Read-only administrator or Administrator, limited to the instances and servers they work on. | No | No | No | Yes | Yes |
| Permanent audit trailEvery change, sign-in, download and command, including those typed on the server itself, is recorded with who did it and when. Entries cannot be deleted, are kept for a year and can be exported. | Yes | Yes | Yes | Yes | Yes |
| Encrypted passwords and keysPasswords, keys and tokens are encrypted at rest, can be written but never read back, and are never stored in job records. | Yes | Yes | Yes | Yes | Yes |
| One-command installationInstall on Debian or Ubuntu with a single command. Running it again repairs an existing installation. | Yes | Yes | Yes | Yes | Yes |
| One-click updatesUpdate the platform and its components from the console, see the server's pending operating system updates with security fixes listed first, and read the release notes in the product. | Yes | Yes | Yes | Yes | Yes |
| Hands-off housekeepingCertificate renewal, database maintenance, clean-up of old images and data, and location data updates all run on their own. | Yes | Yes | Yes | Yes | Yes |
| Command line in the browserOpen a terminal inside any instance or service from the console, with shortcuts to the Odoo shell and the database shell. No SSH needed. | No | No | Yes | Yes | Yes |
| pgAdmin and Portainer includedPopular administration tools for the database and for Docker, ready to use when you need to look deeper. | Yes | Yes | Yes | Yes | Yes |
| One-click diagnosticsCreate a support bundle, with passwords masked, and a step-by-step trace of what happened on screen with sensitive values redacted, ready to send with a support request. | Yes | Yes | Yes | Yes | Yes |
| REST API and command lineAutomate everything the console does through a documented REST API (OpenAPI) with named API keys, or with the command-line tool, locally or remotely. | Yes | Yes | Yes | Yes | Yes |
| Configuration as codeExport a server's or an instance's configuration and apply it elsewhere, review pending changes before they take effect, and keep snapshots of earlier configurations. | Yes | Yes | Yes | Yes | Yes |
| AI assistantAsk an AI provider about your server, with your own API key: names, addresses and credentials are taken out of everything it is sent. Each AI function and each provider has a code of its own beside this one, and a function needs all three. | No | No | No | Yes | Yes |
| AI diagnosticsDiagnose an instance with the AI assistant: it reads the instance's state, health report, logs and failed jobs, with names, addresses and credentials taken out, and answers with the likely cause, the steps to fix it and the commands that help. | No | No | No | Yes | Yes |
| Ask AIAsk the AI assistant about your server from a chat in the console. | No | No | No | Yes | Yes |
| AI coding in the editorCode with the AI assistant in the browser editor: a chat beside your add-ons' code that explains, writes and changes it with you. | No | No | No | Yes | Yes |
| AI provider: AnthropicUse Anthropic's Claude models as the AI assistant, with an Anthropic API key. | No | No | No | Yes | Yes |
| AI provider: OpenAIUse OpenAI's models as the AI assistant, with an OpenAI API key. | No | No | No | Yes | Yes |
| AI provider: Azure OpenAIUse a model deployed on your own Azure OpenAI resource as the AI assistant, with the resource's endpoint and key. | No | No | No | Yes | Yes |
Unregistered is a supported state
A server with no license is not broken. It runs one instance with one database and no custom module, indefinitely, and never stops on its own. It does not upgrade databases to a newer Odoo version.
| Instances | Unregistered | Community | Developer | Professional | Provider |
|---|---|---|---|---|---|
| Limit | 1 | 2 | Unlimited | 5 | Unlimited |
A quota refuses creating one more. For the instance limit, every way an instance arrives counts as creating one: a new instance, a duplicate, an import of an instance backup and moving an instance in from another server, and several duplicates started at once count together. A Production restore of an instance this server already holds adds nothing. It also holds what already exists, from the moment the license changes: a server whose license allows fewer than it runs keeps the ones that matter most running and stops the rest, disables the console accounts above the limit, stops serving the databases and web addresses above it, and freezes the custom modules above it. Nothing is deleted or uninstalled, a limit never switches backups off, and everything comes back by itself when a license allows it again. A server holding five instances whose Professional subscription ends runs unregistered, and keeps one of them serving. See The limits.
When the license carries less
Losing a feature is not only a refusal of the next change. When a license stops carrying a feature, because a lower edition was installed or a subscription ended, everything that feature had switched on is switched off, with its settings kept, and it comes back by itself when a license carries it again. While the license server merely cannot be reached, nothing is switched off.
The backup case is the one to understand before a subscription ends unattended at 3am:
Every capability, the limits, what the console shows and what you re-do yourself are on When the license changes.
The Developer edition is for development machines
Developer is a free edition for the machine you build and test on. It carries the development tools - an instance's Developer tab, the browser editor, live debugging, workspace profiles, the command line in the browser, slow query insights, PostgreSQL dump and load, and cloning, moving and restoring whole instances - with unlimited instances and one console account.
It is not a free Professional license. It leaves out what serving real users needs: outgoing mail, Fail2Ban blocking and banning by hand, off-site backups (FTP included) and scheduled backups, alerting, access rules, roles and permissions, performance and uptime history, managing other servers, zero-downtime deployments, automatic updates from git, and Let's Encrypt or your own certificate. It is also bounded by where it may run:
These two run against the ladder: a public host name works on an unregistered server and is refused on Developer. Developer is for building and testing on the machine in front of you.
Upgrading Odoo databases
Moving a database to a newer Odoo major version comes with Professional and Provider only. The comparison above lists it by engine: Upgrade Enterprise databases and Upgrade Community databases, both on Professional and Provider. Community, Developer and a server with no license upgrade nothing. Rolling back an upgrade done earlier is never refused for lack of these features.
Professional and Provider upgrade Community databases of any size. A license can state a size of its own, the database plus its filestore, and then a larger database is refused. See Upgrading an instance to a newer Odoo version.
Installing a license
Upload the .lic file on the License page of the console, or hand it to the installer with
ohm install --license /root/customer.lic. There is no separate command that installs one onto a
running server: it is an upload, and the install that follows is a background job.
Licenses are signed per product. A license issued for another Antelao product is refused rather than accepted at a lower edition.
See Installing a license for the whole path.
What is counted
Seven quotas decide how much of the product a license may use. The tables show what each edition's offer carries; the server reads the limits from the license it holds, so a license with a limit of its own applies that one. A license that states no limit for databases, custom modules or host names per instance, or for concurrent jobs, gets the unregistered value.
Custom modules are every module that does not ship with Odoo, counted as installed in each database, however it arrived: from git, put on the add-ons path by hand, or uploaded with Odoo's own Import module. An instance counts its fullest database.
| Instances | Unregistered | Community | Developer | Professional | Provider |
|---|---|---|---|---|---|
| Limit | 1 | 2 | Unlimited | 5 | Unlimited |
| Databases per instance | Unregistered | Community | Developer | Professional | Provider |
|---|---|---|---|---|---|
| Limit | 1 | 1 | Unlimited | Unlimited | Unlimited |
| Environments | Unregistered | Community | Developer | Professional | Provider |
|---|---|---|---|---|---|
| Limit | 1 | 1 | 1 | 3 | Unlimited |
| Console accounts | Unregistered | Community | Developer | Professional | Provider |
|---|---|---|---|---|---|
| Limit | 1 | 1 | 1 | Unlimited | Unlimited |
| Custom modules per instance | Unregistered | Community | Developer | Professional | Provider |
|---|---|---|---|---|---|
| Limit | 0 | 1 | Unlimited | Unlimited | Unlimited |
| Host names per instance | Unregistered | Community | Developer | Professional | Provider |
|---|---|---|---|---|---|
| Limit | 1 | 1 | Unlimited | Unlimited | Unlimited |
| Concurrent jobs | Unregistered | Community | Developer | Professional | Provider |
|---|---|---|---|---|---|
| Limit | 1 | 1 | 1 | 2 | 16 |
Concurrent jobs is the one that changes how a server feels rather than what it may do: it is how many queued operations run at once, so it decides whether a nightly sweep of twenty instances proceeds one at a time or sixteen. A server follows it by default - Follow the license on the Server page's Operations card - so a new edition takes effect on the next job; a number you set there yourself is kept, clamped to what the edition allows, until you switch following back on.
Compliance, per instance
Each instance carries a license compliance badge in its page heading, at the right, so it stays in view on every tab. Green means everything that instance is set up to use is covered.
The License compliance check runs daily from Maintenance. It reads every instance against the license and raises an alert per instance that uses something the license does not include.
So what a smaller license leaves uncovered is named instance by instance, beside the License page's list of what the license has switched off. See When the license changes.
An instance's own License tab lists the licensed features that instance is set up to use, and its use of the per-instance limits: its databases, and its custom modules as installed in its fullest database or as its git modules, whichever is more. That is where to look when the badge is not green.