Elyra
Elyra The coding agent e The native code editor Elyra Grove Native local development environment Askr The real server for Laravel & PHP Elyra Framework Rust + Svelte 5 framework for desktop apps Elyra Conductor Local project conductor Elyra SQL Server MySQL-compatible SQL server in Rust Elyra SQL Client Native desktop SQL workbench Elyra SQL Anywhere Replication-ready SQL engine Elyra Sjá SEO & GEO workspace for macOS Elyra DataGrid Server-driven data grid for Laravel
Release notes
Changelog
Elyra

Licensing

Elyra Sjá is commercial software (not open source). See the root LICENSE.

Trial

A fresh install runs on a 3-day trial with full functionality. The first-run timestamp is recorded locally on first launch. A banner shows the days left. When the trial ends without a valid code, a lock screen requires activation.

Activating

Enter your code in Settings → License or on the lock screen. Buy or manage a license at https://elyracode.com/sja.

Where state lives

  • License code → macOS Keychain (com.elyra.sja / license_key).
  • First-run timestamp → local SQLite (settings table, key license).

Key format (ed25519-signed)

Validation is offline and cryptographic. elyracode.com signs each code with an ed25519 secret seed; the app embeds only the matching public key (src/license.rs), so codes cannot be forged from the binary.

SJA-<base64url(payload_json)>.<base64url(signature)>

The signature covers the ASCII bytes of the base64url payload segment. The payload is JSON:

{
  "v": 1,
  "id": "lic_9f2c…",
  "plan": "pro",
  "email": "buyer@example.com",
  "iat": 1782000000,
  "exp": 1813536000
}
Claim Meaning
v Payload version (currently 1; unknown versions fail closed)
id Opaque license id, for support lookups
plan Entitlement the code unlocks
email Licensee
iat Issued-at (unix seconds); more than 24 h in the future is rejected
exp Expiry (unix seconds); 0 means perpetual (lifetime)

A code is accepted when the signature verifies and the code is current (exp == 0 || exp > now). Codes are case-sensitive — base64url — so never upper-case them.

Rotating the key

Replace PUBLIC_KEY_B64 in src/license.rs and the seed on the server. Every code signed with the old key stops validating on the next app release.

Security note

Because signing is asymmetric, the binary contains no secret: reverse engineering it yields a verifier, not a keygen. The secret seed lives only on the issuing server (SJA_LICENSE_SIGNING_SEED). Codes are self-contained — activation needs no network call, and revocation is handled by expiry (exp) rather than a callback.