Skip to content

Licensing: Core and Pro ​

A self-hosted deployment deals with two keys, and you copy neither. The server checks them itself: no request waits on the portal.

The free offering is the open-source JoobQ Core library. The self-hosted console needs a paid deployment licence, and JoobQ Pro can be tried with one 14-day trial key per organization.

KeyWhere it comes fromWhat it unlocksWithout it
Deployment licenceSign in with JoobQ on the server's setup page: the server fetches it from app.joobq.io and keeps it in its data volumeThe console and /api/v1 of a self-hosted server; single sign-on when the tier includes itThe console's operations routes and /metrics answer 402 paid_license_required; single sign-on answers 402 sso_upgrade_required. The SDK gateway keeps serving
JoobQ Pro key (arrives with the licence check-in, or JOOBQ_PRO_LICENSE)The portal: paid (with the deployment's licence) or trial (14 days, once per organization). A Pro key works only for the deployment and organization it was issued toEvery Pro featureCore keeps working; the Pro routes of the SDK gateway answer 402 pro_required, the console's Pro routes are not served

Which answer a request gets ​

Drawing the diagram…

The deployment licence gates the console; the Pro key gates the Pro routes. Workers on the SDK gateway never need the deployment licence.

Core and Pro ​

Core (no Pro key)Pro
Jobs: enqueue, batch enqueue, delays, run_at_ms, expires_ms, timeout_ms, retries with backoff, non-retryable errorsWorkflows: steps conducted by the engine, sagas, signals, timers, queries, client reads, step options
Unique jobs with while_locked (a unique_key held for unique_ttl_ms)Unique jobs with until_executing and until_executed
Queue throttling, pause, resume, concurrencyRate limiting (rate_limit(key, limit, period_ms))
Dead letters, payload encryption, worker middlewareBatches with completion callbacks (Crystal)
Job schedules (cron or every, from code or YAML)Workflow schedules
Accounts, roles, tokens, two-factor authentication, single sign-on, audit log, retention, /metricsAlert rules and their notifications
Search attributes, run history and archive, worker build ids, bulk workflow actions

The full list, with the exact routes and fields, is the Pro features index, built from the code.

What the server does without a Pro key ​

  • It boots and serves every Core route. GET /api/v1/capabilities reports features.pro: false (and the workflow features off), so the console hides the Pro pages.
  • The SDK gateway's Pro routes answer 402 Payment Required with the error code pro_required: starting, signalling and reading workflows, registering blueprints, rate-limit, a workflow schedule, and an enqueue with unique_mode until_executing or until_executed. A plain enqueue, poll and ack of jobs never are.
  • The console's Pro routes (/api/v1/workflows*, /api/v1/workflow-*, /api/v1/alerts*) are not registered.

When the key changes ​

The server turns its Pro features on when it starts, with the key it has then. So:

  • a key that arrives later, for example on the first check-in of a new deployment, serves the Pro routes after the next restart;
  • when a key expires, rate-limit and the unique release modes answer 402, and the next start comes up without Pro;
  • when the deployment is unpaid or its Pro entitlement is revoked, the server drops its Pro key, so Pro is off at the next start. Core keeps working throughout.
Drawing the diagram…

The deployment licence over time.

The deployment licence is renewed every 15 minutes when the server checks in with the portal (license:refresh checks in now), and a portal that cannot be reached does not end a paid period for up to 7 days after the last successful check-in. See Licence and Pro key.

Crystal applications ​

JoobQ Core needs no key. Every JoobQ Pro entry point checks the key itself and raises JoobQPro::LicenseError without one: Workflows::Client.new, Workflows::Worker.new, Workflows::Schedules.new, RateLimiter.reserve, the unique-job and batch services, JoobQ::Timeout.run, the metrics and the alert manager. Pro reads the key from JoobQPro::Licensing.key=, else JOOBQ_PRO_LICENSE, else the file named by JOOBQ_PRO_LICENSE_FILE. The key is a paid key of a licensed deployment or your organization's 14-day trial key.

Troubleshooting: 402 pro_required

JoobQ Core is MIT licensed. JoobQ Pro needs a licence key.