Skip to main content

Licensing

VCAL Server v0.5+ uses mandatory file-based licensing.
Each instance validates a signed license file at startup.

The server will not start without a valid license.


License Tiers

TierDescriptionDurationNotes
TrialFree evaluation30 daysAll features enabled, time-limited
GrowthCommercial license1 yearProduction use, support & updates
EnterpriseCustom agreementMulti-yearMulti-tenant, RBAC, SSO, SLAs

The Trial license is intended for full technical evaluation in your own environment.
There are no artificial feature restrictions — only a time limit.


License Files

VCAL Server validates a vendor-signed license file using an Ed25519 public key.

Default paths

VariableDefaultPurpose
VCAL_LICENSE_PATH/etc/vcal/license.jsonSigned license file
VCAL_LICENSE_PUBKEY_FILE(bundled)Vendor public key (advanced / override only)

Example filesystem layout:

/etc/vcal/
└── license.json

For Trial licenses, the vendor public key is bundled with the binary / container.
VCAL_LICENSE_PUBKEY_FILE is only required for advanced or enterprise setups.


Example License File

{
"license_id": "lic_0a7efb91",
"holder": "Example Labs",
"tier": "Growth",
"issued": "2025-10-20",
"exp": "2026-10-20",
"sig": "base64signature..."
}

Validation Flow

At startup:

  1. VCAL loads the vendor public key.
  2. The license file is read from VCAL_LICENSE_PATH.
  3. The Ed25519 signature is verified.
  4. License metadata (tier, holder, expiration) is cached in memory.

If the license is missing, invalid, or expired, VCAL Server exits with a clear diagnostic message.


Trial License Issuance

Trial licenses are self-served via the CLI.

vcal-server license trial <your_email>
vcal-server license verify <code>

This writes a signed license file to:

/etc/vcal/license.json

(Use sudo if required, or override the path via VCAL_LICENSE_PATH.)


Renewal

To renew or upgrade a license:

  1. Obtain a new license.json file from the VCAL team
  2. Replace the existing file
  3. Restart the server
sudo systemctl restart vcal-server

The old license remains valid until its expiration timestamp.


Live License Reload (Enterprise / Admin)

Enterprise deployments may reload a license without restarting the server.

curl -X POST \
-H "X-VCAL-Key: <admin_key>" \
http://localhost:8080/admin/license/reload

Behavior:

  • The license file is reread immediately
  • A valid new license becomes active instantly
  • An invalid license is rejected and logged

This endpoint is disabled unless admin APIs are explicitly enabled.


Environment Variables (Minimal)

VCAL_LICENSE_PATH=/etc/vcal/license.json

Advanced / enterprise only:

VCAL_LICENSE_PUBKEY_FILE=/etc/vcal/ed25519.pk.b64

Multiple licenses for the same instance

If multiple licenses are issued for the same VCAL Server instance, the most recently installed license file takes precedence. VCAL Server always enforces exactly one license at a time.


Roadmap: License Server Integration

Planned enterprise capabilities include:

  • Online activation & renewal
  • Organization-wide license management
  • Floating / multi-instance licenses
  • Usage telemetry and compliance checks