Licensing Vulkro for Salesforce
Vulkro for Salesforce scans on the Free tier with no account: every
language and every code check, with findings, their proof and the fix.
An account holds Pro. Your first CLI sign-in with vulkro-sf login starts a 14-day trial of
the full product. After the trial, licences are issued directly by our
team; email license@vulkro.com. There is no
online checkout today.
Air-gapped orgs that cannot reach the public internet use a signed,
machine-bound .lic file instead of vulkro-sf login. A .lic you
install with vulkro-sf activate unlocks Pro fully offline, and
existing .lic keys keep working exactly as before.
Scanning with vulkro-sf always runs locally: your code, metadata, and
customer records never leave the machine. (Vulkro Cloud, the hosted
workspace, is a separate service that scans the orgs you connect to it;
see Vulkro Cloud.) The only thing the account layer moves over the
network is a short device token and anonymous usage counters.
This is separate from the general vulkro scanner. The two are licensed
independently: a vulkro-sf account or key is a different product from a core
vulkro account or key, and neither one substitutes for the other.
What the account gates
Without a valid signed lease (from vulkro-sf login) or an installed
.lic file (from vulkro-sf activate), vulkro-sf runs on the Free tier
and keeps scanning source and metadata. Pro adds capabilities such as the
live-org audit, the AppExchange report, Salesforce compliance packs and
the presubmit gate; a Free run lists what is
locked, and vulkro-sf license-status shows the full list. A licence with
an invalid signature, or a detected clock rollback, still stops a scan
with exit code 1.
The 14-day trial is the full product: a new user runs every detector, the AppExchange readiness report, and the live-org audit from day one.
Sign in: vulkro-sf login
Log in and pair this device with your Vulkro account, then install the returned subscription lease. Three ways in, tried in this order:
vulkro-sf login # browser login (default): shows a code, opens your browser
vulkro-sf login --code ABCD-1234 # paste a pairing code from app.vulkro.com/connect
VULKRO_ACCOUNT_TOKEN=... vulkro-sf login # CI / headless: exchange a stored device token
- Browser login (
vulkro-sf login, no arguments) prints a short code (for exampleABCD-1234), opens your default browser to the account console, and waits while you approve that code in a logged-in tab. If a browser cannot be opened, it prints the URL to open by hand. Approval assigns a seat and installs the lease. - Pairing code (
vulkro-sf login --code <CODE>) pastes a code from app.vulkro.com/connect instead. Use it on headless machines or when no browser is available. - CI / headless: set
VULKRO_ACCOUNT_TOKENto a stored device token and runvulkro-sf loginwith no--code. It exchanges the token for a lease with no browser and no code.
The lease refreshes automatically on the daily entitlement ping while online and stays valid fully offline through its signed expiry (about 14 days). The ping carries only anonymous usage counters plus this device's token: never your code, findings, or machine fingerprint.
Exit codes: 0 logged in and lease installed; 2 error (offline set,
account-server failure, an invalid lease, or a denied / expired /
timed-out browser login).
After the trial
When the trial lapses, request a license from the Vulkro team at
license@vulkro.com. Vulkro for Salesforce is
licensed per seat, directly through our team. vulkro-sf buy opens a
pre-filled request email with this machine's fingerprint. The team replies with
a .lic file you install with vulkro-sf activate.
vulkro-sf account
Show your Vulkro account: email, tier, seat (for example "seat 2 of 5"), expiry, offline-grace remaining, and last sync. 100% local: makes no network call and works air-gapped.
vulkro-sf account
Exit codes: 0 report printed; 2 local database read error.
vulkro-sf license-status
Prints the current Vulkro for Salesforce license state on this machine: sign-in status, tier, expiry, machine ID, and the feature checklist: which Pro capabilities are locked or unlocked on this machine.
vulkro-sf license-status
Exit codes: 0 on success, 2 on error.
vulkro-sf logout
Log out this device: delete the local device token and cached lease,
then make a best-effort revoke call to the account server. Local logout
always succeeds; a failed or offline revoke is a warning, not an error.
A perpetual offline .lic you installed with vulkro-sf activate is
left untouched and keeps working.
vulkro-sf logout
Exit codes: 0 logged out (or nothing to do); 2 local database error.
Air-gapped: vulkro-sf machine-id, buy, and activate
Machines that cannot reach the public internet use a license file
instead of vulkro-sf login. Existing .lic customers (including
AppExchange and VKSF keys) stay on this path with no change.
vulkro-sf machine-id
Prints this machine's Vulkro fingerprint (32 hex characters). It is the
same value the desktop console shows under Settings, License, "This
machine's ID". Paste it into your license request so the .lic file the
team mints is bound to this machine.
vulkro-sf machine-id
Exit codes: 0 on success, 2 on error.
vulkro-sf buy
Opens a pre-filled license-request email with this machine's ID, or
prints the address when running headless. You can also request a license
directly from license@vulkro.com. The signed
.lic file arrives by email.
vulkro-sf buy
Exit codes: 0 on success, 2 on error.
vulkro-sf activate
Installs a .lic activation key. It verifies the Ed25519 signature and
the machine binding, then stores the key locally, with no remote server
in the loop. A vulkro-sf key is a separate product from a core
vulkro key, so a core key does not unlock the Salesforce scanner and
vice versa.
vulkro-sf activate ./vulkro-sf.lic
On an air-gapped machine, copy the .lic file across and run
vulkro-sf activate <file.lic> there. Set VULKRO_SF_OFFLINE=1 to turn
login, the lease refresh, and any other optional outbound call into a
hard error; it does not affect the local activation flow, and
vulkro-sf account still works.
Exit codes: 0 on success, 2 on error.
CI runners
A CI runner signs in the same way a laptop does, or activates a .lic
if the runner is offline. For a networked runner, set
VULKRO_ACCOUNT_TOKEN to a stored device token and run vulkro-sf login as the first step. For an air-gapped runner, request a key for
the runner image's fingerprint, bake the .lic file into the image (or
inject it as a secret at job start), and run vulkro-sf activate <file.lic> before the first scan. See
CI/CD integration.