Licensing Vulkro for Salesforce
Vulkro for Salesforce requires a verified account before it can scan.
Your first CLI sign-in with vulkro-sf login starts a 14-day trial of
the full product. After the trial, licenses are issued directly by our
team; email [email protected]. There is no
self-serve checkout.
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 the scanner fully offline, and
existing .lic keys keep working exactly as before.
Scanning always runs locally: your code, metadata, and customer records never leave the machine. 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 products 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), a scan stops with an actionable
message and exit code 1. The account and license commands on this page
keep working even while scanning is blocked, so you can always recover:
vulkro-sf login, vulkro-sf account, vulkro-sf license-status,
vulkro-sf logout, and vulkro-sf activate.
The 14-day trial is a trial of the full product, so 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
[email protected]. 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. It
keeps working while scanning is blocked (a scan needs a verified
account; run vulkro-sf login or vulkro-sf activate <file.lic>).
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 [email protected]. 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.