The Athenode Pro licence
The licence of an Athenode Pro server is a signed licence key of your organisation that the server holds and checks every time it loads it. Athenode Pro is the Athenode server a team runs itself, with accounts, project roles and a licence. The server serves its web UI and the Athenode MCP server only while the key is valid, and the key decides how many accounts the server may enable and which modules and features it runs.
A server gets its key in one of two ways. Online, it exchanges a licence token for a key and renews the key by itself. Offline, an administrator imports a key that a billing administrator downloaded from your Athenode account. Licence and install tokens describes creating the token and downloading the key.
| What the key holds | Where you see it |
|---|---|
| The organisation the server is bound to | Bound to on the License page |
| The organisation's Pro tier: Solo, Team or Enterprise | Tier |
The modules: gateway, plugins and specs |
Modules |
| The features of the tier | Features |
| The number of seats, or no limit | Seats used |
| The support of the tier | Support |
| The end of the paid period | Paid until |
| The end of the key's validity, 14 days after the paid period | Expires at |
Activate the licence with a licence token
Activate a server before its first start, and again whenever its renewal is blocked. You need a licence token from a billing administrator of the organisation and a shell on the server machine, as the user that runs Pro, with ATHENODE_DATABASE_URL set. The server may be running or stopped.
Pass the licence token in
ATHENODE_LICENSE_TOKENand runlicense activate:ATHENODE_LICENSE_TOKEN=<licence-token> athenode-pro license activateRead the result. The command prints "Activated: the license key was fetched and verified; the license token is stored (encrypted) for automatic renewal." followed by the state of the licence.
If the server is stopped, start it. If it is running, it uses the new key within 60 seconds.
The token can also come from a file, with --token-file <path>, or from standard input, as in athenode-pro license activate < /run/secrets/licence-token. The command never takes the token as an argument, so it stays out of the shell history and the process list.
license activate exits with 0 when the key is stored, with 1 when the token is refused, and with 2 when the licence server cannot be reached. A refusal names the reason: the token is revoked or unknown, the organisation has no active Pro subscription, or the key is for another organisation. On 2, try again later.
On a new installation, license activate creates the master key in the data folder and prints its path. Pro stores the licence token encrypted with that key. Back the key up at once, as Install Athenode Pro describes.
The first key binds the server to its organisation. From then on, the server refuses a token or key of another organisation.
An administrator can do the same on the License page: enter the token under License token and select Activate. The page shows "Activated: the license key was fetched and is renewed automatically."
The server also activates the licence from ATHENODE_LICENSE_TOKEN at start, when the variable is in its environment and no stored licence works, as in the Docker Compose stack. If the activation fails, the start stops with exit code 1. While a stored licence works, the server ignores the variable, so changing the token there changes nothing: activate another token with license activate.
Activate a server without internet access
A server that cannot reach the internet imports its key by hand and does not renew it.
Ask a billing administrator to download the licence key from the organisation's page, as download the licence key describes. The file is
athenode-pro-license.key.Copy the file to the server machine.
Import it, as the user that runs Pro, with
ATHENODE_DATABASE_URLset:athenode-pro license import --file athenode-pro-license.key
The command prints "Imported: the license key verified and is stored." followed by the state of the licence. You can also give the key itself, as athenode-pro license import <key>. On the License page, an administrator pastes the key under License key (isolated networks) and selects Import key.
The server can also import the key at start, from the path in ATHENODE_LICENSE_KEY_FILE, while no stored licence works. If the import fails, the start stops with exit code 1. Set ATHENODE_LICENSE_KEY_FILE or ATHENODE_LICENSE_TOKEN, never both: with both set, the server refuses to start.
The import refuses a key that is expired, a key of another organisation and a key that is not a valid Athenode Pro licence key. Athenode issues v3 keys, which Pro tiers describes. A licence token stored earlier stays stored, so a server that has one keeps renewing when it can reach the licence server.
A downloaded key is valid until the end of the paid period plus 14 days. After each new billing period, download the key again and import it before the old one expires. Configuration of Athenode Pro lists the other settings of a server without internet access.
Check the state of the licence
The state of the licence decides whether the server serves.
| State | Label in the web UI | The server serves |
|---|---|---|
valid |
Active | Yes |
grace |
Active, in the grace period | Yes |
expired |
Expired | No |
missing |
No license | No |
invalid |
Invalid license key | No |
not_yet_valid |
Not valid yet (check the clock) | No |
clock_rollback |
Refused: the clock went back | No |
The state shows in these places:
athenode-pro license statusprints the state with a one-line explanation, the organisation the server is bound to, the tier, the modules and whether each is enabled, the included features and those not included, the support, the paid-until date, the expiry, the seats used and allowed, the renewal mode and the last renewal attempt and success. It exits with1when the server does not serve in that state. It needsATHENODE_DATABASE_URL, like the otherlicensecommands.athenode-pro doctorhas a License line. It warns during the grace period, in the last 7 days before the expiry and while renewal is blocked, and fails in every state in which the server does not serve.- The License page, for administrators, which the License page describes row by row.
- The This server section of the Settings page shows the state, the paid-until date and the seats.
From your AI tool, the platform_status tool of the Athenode MCP server reports the licence with the server's version and modules.
The License page
Administrators open License from the Administration group of the sidebar, outside a project, or at /license under the public URL. Members do not see the page. While the licence needs attention, the License link carries a "!" badge, whose tooltip says why: the licence is not active, renewal is blocked, more accounts are enabled than the licence allows, or the licence is in its grace period.
| Row | What it shows |
|---|---|
| State | The state of the licence, from the table above |
| Bound to | Organisation and the id of the organisation |
| Tier | Solo, Team or Enterprise |
| Modules | Each module of the server with "enabled", or with the reason it is off |
| Features | Each feature of Athenode Pro with "included", or with "not included" and the tier that has it |
| Support | Standard or Priority |
| Paid until | The end of the paid period |
| Expires at | When the key stops being valid |
| In grace | yes during the grace period, else no |
| Seats used | Enabled accounts and the seats of the licence, such as 4 / 8, or 12 / unlimited on Pro Enterprise |
| Renewal | automatic while a licence token is stored, manual (no token stored) after an import only, or blocked with the reason |
| Last renewal attempt, Last success | The times of the latest renewal attempt and the latest successful one |
| Last error | The reason the latest attempt failed, shown only after a failure |
Below the rows, the page has the form to activate with a licence token, the form to import a key and Check now, which renews the key at once with the stored token, so that a change of the organisation's tier applies at once. The page says "Checked: the license key was renewed." when the server received a new key.
Check now needs a stored licence token and renewal that is not blocked. On a server that imports its key by hand, the page says "Check now needs a stored license token. This server uses an imported key: import a new key to apply a plan change."
The page stays open while the licence is not active, so an administrator signs in as usual and activates or imports a key there. The page then says "This server is not serving until its license is renewed. Activate with a license token, or import a license key."
Renewal of the licence key
A server with a stored licence token renews its key by itself. It asks the licence server once a day, and once an hour in the last 7 days before the key expires. The first attempt after a start comes a minute later when the last success is more than a day old. A failed attempt is retried after 5 minutes, then after twice as long each time, up to 6 hours apart, or 1 hour in the last 7 days. Each renewal sends the licence token and nothing else. When the licence server is reached through a proxy, set HTTPS_PROXY, as Configuration of Athenode Pro describes.
A failed renewal keeps the current key, and the server serves until that key expires. A renewal that returns a key expiring earlier than the current one keeps the current key and shows the reason under Last error. To accept the earlier key, activate again or import it.
Each renewed key carries the tier, seats, modules and features of the organisation's subscription at that moment, so a change of the tier reaches the server at its next renewal. Select Check now to fetch it at once. Pro tiers describes what changes on the server with the tier.
When renewal is blocked
Renewal stops when the licence server refuses the stored token for good: the token was revoked or is unknown, or the organisation has no active Pro subscription. Renewal then says blocked, and the page says "The license server refused the stored token" with the reason, followed by "Create a new license token in Athenode and activate with it." Renewal also stops when the stored token cannot be read with the server's master key, for example after the master key was replaced.
- Get a licence token from a billing administrator, a new one when the stored token was revoked or is lost, as create a licence token describes.
- Activate the server with it, on the License page or with
athenode-pro license activate.
Activation stores the token again and renewal resumes. The server keeps serving with its current key while renewal is blocked, until that key expires.
Grace period and expiry
A licence key expires 14 days after the end of the paid period. The 14 days are the grace period, during which the server serves as usual, the state is Active, in the grace period, In grace says yes and the License link shows its badge. A key issued for a subscription without a billing period is valid for 30 days from when it was issued.
A subscription whose last payment failed keeps receiving keys, so the grace period runs from the end of the last paid period. When the subscription ends, the server keeps its key until the key expires, as what ends with the subscription describes. Changing the tier is described in Billing for Athenode Pro.
When the key expires while the server runs, the server stops serving everywhere except the sign-in and the License page:
- Members see a page with the heading "This server's license is not active", which says that an administrator can renew the licence on the licence page.
- The Athenode MCP server refuses every call, and open sessions of AI tools end.
- Live updates of the web UI stop, and SSH gateway work in the background stops.
- No account can be invited, added or enabled.
The server serves again within a minute after a valid key arrives, through activation, an import or a renewal.
A server that starts without a valid key stops with "Athenode Pro cannot start: No valid Athenode Pro license", followed by the reason and the two license commands, and exits with 1.
Modules of the licence
A module is one part of Athenode that the licence turns on: specs for specifications and ToDo cards, plugins for plugins and the plugin library, and gateway for the SSH gateway. Every Pro tier includes all three, as Pro tiers lists.
A module that the server's key does not list is off. Its pages show a page titled "Module unavailable" with "Module" and its id followed by "is not included in your license", its links leave the sidebar, and its tools are missing from the Athenode MCP server. A new key applies at once: a module the key adds is turned on, and one it drops is turned off.
An administrator can also leave out a module the licence includes, with ATHENODE_MODULES or server.modules, as Configuration of Athenode Pro describes. The Modules row then shows that module as off in the server's configuration. Members choose which modules their AI tools use when they run athenode init, as the Athenode MCP server describes.
Features of the licence
A feature is a capability of Athenode Pro that the organisation's tier turns on: two-factor sign-in, health webhooks, the audit history with its export and forwarding, and roles and access control from Pro Team, and single sign-on on Pro Enterprise. The key lists the features of the tier, and the Features row shows each one as included or not.
A new key applies its features at once, without a restart. A feature the key drops stops, and its settings stay stored until a key lists it again. Pro tiers describes each feature and what stops after a downgrade.
Seats on the Pro server
A seat is one enabled account on the Pro server. Every enabled account takes one, the first administrator included, and a pending invitation takes none. Pro Solo has 1 seat, Pro Team 8 and Pro Enterprise no limit. The Users page shows the count and the seats of the licence after "Seats used:".
When every seat is taken, Pro refuses these actions:
- An administrator inviting a person.
- A person accepting an invitation.
- An administrator enabling a disabled account.
- A person signing in with single sign-on for the first time, which would create an account.
A person who accepts an invitation or signs in with single sign-on at that point sees "No seat is free for a new account on this server. Ask an administrator." Disabling an account frees its seat at once. To add more people, an administrator disables accounts that are no longer needed, or a billing administrator changes the organisation to a higher tier, as Billing for Athenode Pro describes. Users and sign-in describes invitations and disabling accounts.
A renewed key with fewer seats than the server has enabled accounts keeps every enabled account working. No account can be added or enabled until enough accounts are disabled, and the License page and the Users page say "The license allows" the number of seats "but" the number of enabled accounts "are enabled. Existing accounts keep working; no account can be added or enabled until seats are freed."
The server's clock and the licence
Pro checks the key against the clock of the server machine and remembers the latest time it has seen. These states come from the clock:
- Not valid yet (check the clock): the key was issued more than 5 minutes after the machine's current time. Correct the clock.
- Refused: the clock went back: the clock is more than a day behind the latest time Pro has seen. The explanation in
license statusand on the License page names that time.
An online activation or renewal proves the current time and resets the latest time seen, so a server whose clock jumped ahead once and was corrected recovers when you select Check now or run athenode-pro license activate. An offline import never resets it. On a server without internet access, correct the clock and wait until it passes the latest time seen, which license status shows.