Skip to main content

Looking for deeper explanations?

This page covers the CLI command reference, security concepts (mlock, seccomp, Argon2id), building from source, feature flags, architecture, and troubleshooting.

Companion reading for the CLI reference below: how to get up and running, how to plan a PQC rollout for your org, and how to wire QNSQY into existing security tooling.

Installation

Multiple install options: npm (npm install -g qnsqy), the apt or dnf repository, or direct RPM/DEB/Windows .exe download.

One binary: CLI + GUI + TUI + MCP

There is a single qnsqy binary that contains the CLI, the GUI, the TUI, and the MCP server. There is no separate GUI download. Run qnsqy with no arguments for the GUI, or qnsqy encrypt ... for the CLI.

Linux

# Download and install to ~/.local/bin
$ mkdir -p ~/.local/bin
$ curl -fsSL https://quantumsequrity.com/downloads/linux/qnsqy-free -o ~/.local/bin/qnsqy
$ chmod +x ~/.local/bin/qnsqy

# Add to PATH (add to ~/.bashrc or ~/.zshrc for permanent)
$ export PATH="$HOME/.local/bin:$PATH"

# Verify installation
$ qnsqy version
QNSQY v7.2.37 (Free)
Post-Quantum: ML-KEM-512, ML-DSA-44
Classical: X25519, Ed25519, AES-256-GCM

Linux - GUI + CLI (Single Binary)

# Download GUI (includes full CLI)
$ mkdir -p ~/.local/bin
$ curl -fsSL https://quantumsequrity.com/downloads/linux/qnsqy-gui-free -o ~/.local/bin/qnsqy-gui
$ chmod +x ~/.local/bin/qnsqy-gui

# Add to PATH
$ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

# Use as GUI
$ qnsqy-gui

# Use as CLI (same binary!)
$ qnsqy-gui encrypt -i secret.pdf
$ qnsqy-gui decrypt -i secret.pdf.qs
$ qnsqy-gui version

Linux - Package Managers & Other Methods

# Ubuntu / Debian (APT repository)
$ curl -fsSL https://cdn.quantumsequrity.com/repo/qnsqy-repo.gpg.asc | sudo gpg --dearmor -o /usr/share/keyrings/qnsqy.gpg
$ echo "deb [signed-by=/usr/share/keyrings/qnsqy.gpg] https://cdn.quantumsequrity.com/repo/deb stable main" | sudo tee /etc/apt/sources.list.d/qnsqy.list
$ sudo apt update && sudo apt install qnsqy

# Fedora / RHEL / CentOS (DNF repository)
$ sudo tee /etc/yum.repos.d/qnsqy.repo <<'EOF'
[qnsqy]
name=QNSQY
baseurl=https://cdn.quantumsequrity.com/repo/rpm
enabled=1
gpgcheck=0
repo_gpgcheck=1
gpgkey=https://cdn.quantumsequrity.com/repo/qnsqy-repo.gpg.asc
EOF
$ sudo dnf install qnsqy

# npm (wrapper package, installs the same binary)
$ npm install -g qnsqy

Make it Permanent

# For bash users
$ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

# For zsh users
$ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
$ source ~/.zshrc

# Now works from anywhere
$ qnsqy encrypt -i secret.pdf       # if CLI installed
$ qnsqy-gui encrypt -i secret.pdf   # if GUI installed

Windows - CLI Only (PowerShell)

# Download to user's local bin
> mkdir -Force "$env:USERPROFILE\.local\bin"
> Invoke-WebRequest -Uri "https://quantumsequrity.com/downloads/windows/qnsqy-free.exe" -OutFile "$env:USERPROFILE\.local\bin\qnsqy.exe"

# Add to PATH for current session
> $env:PATH = "$env:USERPROFILE\.local\bin;$env:PATH"

# Add to PATH permanently
> [Environment]::SetEnvironmentVariable("PATH", "$env:USERPROFILE\.local\bin;$([Environment]::GetEnvironmentVariable('PATH', 'User'))", "User")

# Verify installation (restart terminal first)
> qnsqy version

Windows - GUI + CLI (Single Binary)

# Download GUI (includes full CLI)
> mkdir -Force "$env:USERPROFILE\.local\bin"
> Invoke-WebRequest -Uri "https://quantumsequrity.com/downloads/windows/qnsqy-gui-free.exe" -OutFile "$env:USERPROFILE\.local\bin\qnsqy-gui.exe"

# Add to PATH permanently
> [Environment]::SetEnvironmentVariable("PATH", "$env:USERPROFILE\.local\bin;$([Environment]::GetEnvironmentVariable('PATH', 'User'))", "User")

# Restart terminal, then use as GUI
> qnsqy-gui

# Or use as CLI (same binary!)
> qnsqy-gui encrypt -i secret.pdf --acknowledge-no-sandbox
> qnsqy-gui version

Binary Name

All tiers use a single binary:

qnsqy One binary for all tiers. Tier gating applied at runtime based on license

Encrypted files use the .qs extension. Command availability depends on your active license tier.

Global Options

These options are available for all commands:

-h, --help Print help information
-V, --version Print version information
--require-sandbox-enforced Exit if OS sandbox (Landlock/Pledge) is unavailable

Quick Start

# Encrypt a file
$ qnsqy encrypt -i secret.pdf
# Output: secret.pdf.qs

# Decrypt a file
$ qnsqy decrypt -i secret.pdf.qs
# Output: secret.pdf

# Securely delete original
$ qnsqy shred secret.pdf
# File overwritten and deleted

Remote Backup (Cloud): All Tiers

QNSQY can encrypt your data on your computer and upload only the encrypted result to your own cloud storage bucket. The cloud provider never sees your files, your file names, or your keys, just opaque encrypted blobs. This works on every tier (Free included). Supported storage: Cloudflare R2 (default), AWS S3, Google Cloud Storage, MinIO or your own server, Backblaze B2, and Wasabi.

You need three things before you start: (1) a storage bucket you created in your provider's console, QNSQY never creates buckets for you; (2) an access key + secret for that bucket with read and write permission; (3) the bucket's endpoint URL and region (see the table below).

Step 1: Create the bucket and an access key

In your provider's console, create a bucket, then create an access key (also called an "API token" or "HMAC key"). Give that key read + write on that one bucket, nothing more. In plain terms it needs to List, Get, and Put objects. You do not need delete, admin, or account-wide permission. A read-only key is not enough: it will pass the connection test but fail the first upload.

Step 2: Find your endpoint, region, and addressing

ProviderEndpoint URLRegionWhere to get the key
Cloudflare R2https://<account-id>.r2.cloudflarestorage.comautoDashboard → R2 → Manage R2 API Tokens → Create (Object Read & Write). Use the Secret Access Key (64 hex chars), not the "Token value".
AWS S3https://s3.<region>.amazonaws.comyour bucket's region (e.g. us-east-1)IAM → Users → create access key (S3 read+write on the bucket)
Google Cloud Storagehttps://storage.googleapis.comautoCloud Storage → Settings → Interoperability → create HMAC key
MinIO / your own serverhttps://your-server (must be valid HTTPS)autoMinIO console → create an access key for the bucket
Backblaze B2https://s3.<region>.backblazeb2.comregion from the bucket page (e.g. us-west-004)B2 → App Keys → Add a New Application Key (restricted to the bucket)
Wasabihttps://s3.<region>.wasabisys.comyour bucket's region (e.g. us-east-1)Wasabi console → Access Keys → create a key

Notes: for AWS only, turn on "virtual-host addressing" (it is off for every other provider). Your own server (MinIO) must use HTTPS with a publicly valid certificate. Plain HTTP and self-signed certificates are rejected on purpose. If a push fails with "SignatureDoesNotMatch", the Region is wrong; if it fails with "NoSuchBucket", create the bucket first.

Step 3: Give QNSQY your credentials

Your secret is never written to disk by QNSQY and never passed on the command line. Provide it one of three ways:

# Easiest: environment variables (this terminal session)
$ export QNSQY_REMOTE_ACCESS_KEY=your-access-key-id
$ export QNSQY_REMOTE_SECRET=your-secret-access-key
# AWS temporary (STS) credentials also need:
#   export QNSQY_REMOTE_SESSION_TOKEN=your-session-token
# In the GUI: just type the Access key and Secret into the panel fields.
# Or store them in the PQC Vault (Pro): --creds-vault <vault> --creds-entry <name>

Step 4: Back up and restore (example: Cloudflare R2)

# 1. Save the destination once (or skip and use --endpoint/--bucket each time)
$ qnsqy remote add r2 --endpoint https://<account-id>.r2.cloudflarestorage.com --bucket my-backups --region auto

# 2. Check it works (one read-only test request)
$ qnsqy remote test --remote r2

# 3. Encrypt locally and upload only ciphertext
$ qnsqy push -i ./Documents --remote r2

# 4. Restore later (verifies the signed manifest + every hash before decrypting)
$ qnsqy pull --remote r2 -o ./restored

# Without a saved profile, pass the destination inline instead of --remote r2:
#   qnsqy push -i ./Documents --endpoint https://<account-id>.r2.cloudflarestorage.com --bucket my-backups

Restore options: --generation N restores a specific older snapshot, --verify-only checks integrity without writing files, and --key <private-key> restores a backup that was encrypted to a recipient key. In the GUI, the same controls live on the Remote Backup page in the sidebar and as panels on the Encrypt, Decrypt, and Batch pages.

Important: the cloud copy is encrypted and cannot be recovered without your password or key. If you lose both, the backup is gone. Pair remote backup with escrow, threshold shares, or multi-recipient keys for recovery.

Commands by Tier

Command availability depends on your license tier:

Command Free Pro Business
encrypt
decrypt
shred
keygen-sign (ML-DSA-44) (ML-DSA, SLH-DSA) (+ FN-DSA, LMS)
keygen-enc (ML-KEM-512) (ML-KEM all) (+ HQC)
sign (ML-DSA-44) (ML-DSA, SLH-DSA) (+ FN-DSA, LMS)
verify
batch -
key-import -
key-export -
audit -
rekey -
split - -
combine - -
symmetric -
keyfile (generate/encrypt/decrypt) -
deniable (create/open) - -
vault (init/add/get/list/remove/edit/export/import/rekey) -
threshold-encrypt - -
threshold-decrypt - -
timelock (encrypt/decrypt/calibrate) - -
stego (hide/extract/capacity) - -
scan - -
migrate - -
hash
hash-verify
encode
decode
logout
reset-state
version
status
login
generate-secret
verify-integrity
verify-release
sign-release
push / pull / sync / remote
signup / quickstart
devices / usage / account / receipts
polyglot -
abe -
escrow-keygen / escrow-decrypt - -
policy - -
group - -

Organizations and Teams

Business-tier teams can be managed as an organization: one owner, any number of members, shared governance, and a single audited place to provision people. Organizations and the controls below are a Business feature; Free and Pro accounts are always individual.

Roles

  • Owner: the person an organization is created around. Full control of the organization.
  • Admin: can manage members and organization settings.
  • Member: a standard team member covered by the organization's tier and policy.

A person belongs to one organization at a time. To move someone between organizations, remove them from the first one before adding them to the second.

Adding people

An administrator creates accounts and brings people into an organization from the admin dashboard. When someone new is added:

  • They receive a one-time sign-in link by email, valid for 72 hours.
  • The link never contains a password. The new person signs in with the link, then sets their own password from their dashboard.
  • Existing QNSQY users are added to the organization directly, without a new account.

Single sign-on (SSO)

Each organization can connect its own identity provider so members sign in with corporate credentials. QNSQY supports OpenID Connect (OIDC) and SAML 2.0. SSO is configured, and can be tested before rollout, from the organization admin portal. A device-code flow is available so the CLI can authenticate through your provider as well.

Organization encryption policy

An organization can publish a signed encryption policy that sets minimum cryptographic requirements for its members, for example a minimum algorithm strength or a requirement to use post-quantum protection. The policy is signed (Ed25519) so it cannot be tampered with in transit, and the QNSQY client fetches and enforces it at runtime: an operation that would fall below the policy is refused locally. This is how a team keeps its quantum-safe standard consistent across everyone's data, not just one person's.

Audit log

Organization-level actions (members added or removed, roles changed, policy and SSO updates) are recorded in a per-organization audit log that owners and admins can review.

Manage all of the above from the organization admin portal at quantumsequrity.com/org-admin. For a rollout plan, see Implementing PQC in your organization.

Command Reference

encrypt All tiers

Encrypts a file using hybrid ML-KEM + X25519 key encapsulation and AES-256-GCM or XChaCha20-Poly1305 authenticated encryption. Password is derived using Argon2id.

qnsqy encrypt -i <input> [-o <output>] [options]
-i, --input <FILE> Input file to encrypt (required)
-o, --output <FILE> Output file (default: input.qs)
-z, --compress Enable zstd compression before encryption
-f, --force Overwrite existing output file
--paranoid Add random padding (5-15% of file size, max 10MB) to prevent file size fingerprinting
--password-stdin Read password from stdin (for scripting/automation)
--recipient <FILE> Encrypt to recipient's public key (password-less encryption)
--hybrid Require both private key AND password to decrypt
--sign-key <FILE> Sign the encrypted file with this private key (Pro+)
--algorithm <ALG> aes256-gcm (default) or xchacha20-poly1305
--kem <ALG> ml-kem512 (Free, always unlimited), ml-kem768/ml-kem1024 (Pro+), hqc128/192/256 (Business)
--dsa <ALG> ml-dsa44 (Free), ml-dsa65/87 (Pro+), fn-dsa512/1024 (Business)
--argon2-preset <PRESET> standard (128MB), high (256MB), maximum (512MB) (tier-limited)
--argon2-memory <KB> Custom Argon2id memory in KB (Business only)
--argon2-iterations <N> Custom Argon2id iterations (Business only)
--argon2-parallelism <N> Custom Argon2id parallelism (Business only)
--progress Output machine-readable progress (for GUI backend)
decrypt All tiers

Decrypts a .qs file. Automatically verifies BLAKE3 integrity. Fails if file has been tampered with.

qnsqy decrypt -i <input> [-o <output>] [options]
-i, --input <FILE> Input .qs file to decrypt (required)
-o, --output <FILE> Output file (default: removes .qs extension)
-f, --force Overwrite existing output file
--key <FILE> Private key for decryption (when encrypted with --recipient)
--verify-key <FILE> Verify signature with this public key during decryption
--verify-only Check password and integrity without writing output
--show-metadata Show file metadata without decrypting
--password-stdin Read password from stdin (for scripting/automation)
--progress Output machine-readable progress (for GUI backend)
shred All tiers

Securely deletes a file by overwriting it multiple times before removal. Makes forensic recovery extremely difficult.

qnsqy shred <FILE> [-p <passes>] [-f]
<FILE> File to securely delete (required)
-p, --passes <N> Number of overwrite passes (default: 3)
-f, --force Skip confirmation prompt
version All tiers

Displays version info, active tier, supported algorithms, and post-quantum readiness status.

qnsqy version
keygen-sign All tiers

Generates a new signing keypair. Creates both public (.pub) and private key files. Algorithm depends on tier: ML-DSA-44 (Free), all ML-DSA/SLH-DSA (Pro), FN-DSA and LMS (Business).

qnsqy keygen-sign -o <output> -n <name> [options]
-o, --output <FILE> Output file for private key (required)
-n, --name <NAME> Name or identifier for the key (required)
-p, --passphrase <PASS> Passphrase to protect the private key
--no-passphrase Generate key without passphrase protection
--algorithm <ALG> ml-dsa44 (Free), ml-dsa65/ml-dsa87 (Pro+), fn-dsa512/fn-dsa1024 (Business), lms-sha256-h5-w1/h10-w2/h15-w4/h20-w8 (Business)

ML-DSA = FIPS 204, FN-DSA (Falcon) = FIPS 206 (draft), LMS = SP 800-208. LMS keys are stateful - each signature consumes a leaf.

keygen-enc All tiers

Generates an encryption keypair for recipient-based (password-less) encryption. ML-KEM-512 (Free), ML-KEM all (Pro), or HQC (Business). Public key is written to <output>.pub.

qnsqy keygen-enc -o <output> -n <name> [options]
-o, --output <FILE> Output file for private key (required)
-n, --name <NAME> Name or identifier for the key (required)
-p, --passphrase <PASS> Passphrase to protect the private key
--no-passphrase Generate key without passphrase protection
--algorithm <ALG> ml-kem512 (Free, always unlimited), ml-kem768/ml-kem1024 (Pro+), hqc128/hqc192/hqc256 (Business)
key-import Pro+

Imports a public key file into the local keyring for signature verification.

qnsqy key-import -f <file> -n <name>
-f, --file <FILE> Path to public key file (required)
-n, --name <NAME> Friendly name for the key (required)
key-export Pro+

Exports your public key to a file for sharing with others.

qnsqy key-export -n <keyname> -o <output>
-f, --file <FILE> Your public key file (required)
-o, --output <FILE> Output path for exported key (required)
audit Pro+

View the local operation audit log. Shows all encrypt, decrypt, sign, and verify operations with timestamps.

qnsqy audit [--security-only] [--after <TIMESTAMP>]
--security-only Show only security-relevant events (failures, tampering)
--after <TIMESTAMP> Show events after this Unix timestamp
sign All tiers

Signs a file using your private key. Free tier uses ML-DSA-44, Pro uses all ML-DSA/SLH-DSA, Business adds FN-DSA and LMS.

qnsqy sign -i <file> -k <key>
-i, --input <FILE> File to sign (required)
-k, --key <FILE> Private key file (required)
verify All tiers

Verifies a file signature using the signer's public key.

qnsqy verify -i <file> -k <pubkey>
-i, --input <FILE> File to verify (required)
-k, --key <FILE> Signer's public key (required)
batch Pro+

Batch encrypt or decrypt multiple files in parallel. Supports all encryption options.

qnsqy batch <encrypt|decrypt> <FILES...> [options]
<OPERATION> encrypt or decrypt (required)
<FILES...> Input files to process (required)
-o, --output-dir <DIR> Output directory (default: same as input)
-j, --jobs <N> Number of parallel jobs (default: CPU count)
-z, --compress Enable compression (encrypt only)
-f, --force Overwrite existing files
--recipient <FILE> Encrypt to recipient's public key
--sign-key <FILE> Sign encrypted files (encrypt only)
--verify-key <FILE> Verify signatures (decrypt only)
rekey Pro+

Changes the password on an encrypted file without re-encrypting the entire file.

qnsqy rekey -f <FILE> [options]
-f, --file <FILE> Encrypted .qs file to rekey (required)
-o, --output <FILE> Output file (default: overwrite input)
--force Force overwrite existing output file
--argon2-preset <PRESET> Argon2id preset for new password
--password-stdin Read passwords from stdin
split Business

Split a secret into M-of-N shares using Shamir's Secret Sharing. Any M shares can reconstruct the original.

qnsqy split -i <input> [-m <threshold>] [-n <shares>]
-i, --input <FILE> Input file to split (required)
-o, --output-dir <DIR> Output directory for shares (default: same as input)
-m, --threshold <N> Shares needed to reconstruct (default: 3)
-n, --shares <N> Total shares to generate (default: 5)
-f, --force Overwrite existing share files
combine Business

Combine shares to recover the original secret. Requires at least threshold number of shares.

qnsqy combine -o <output> -m <threshold> <SHARES...>
<SHARES...> Share files to combine (required)
-o, --output <FILE> Output file for reconstructed secret (required)
-m, --threshold <N> Threshold number of shares (required)
-f, --force Overwrite existing output file
status All tiers

Show account status: your tier, plan, and remaining credits, read live from the billing server.

qnsqy status
login All tiers

Log in to activate your Pro or Business subscription. Set your API key in the QNSQY_API_KEY environment variable, or use email/SSO. The key is stored encrypted on this device.

qnsqy login [-e <EMAIL>] [--sso <ORG_SLUG>]
-e, --email <EMAIL> Log in with email and password
--sso <ORG_SLUG> SSO login via your organization (opens browser for OIDC/SAML)
generate-secret All tiers

Generate a cryptographic secret (32 bytes hex) using OS CSPRNG.

qnsqy generate-secret

Pro+ & Business Commands

These commands require a Pro or Business license. Some commands are Business-only (see tier badge).

symmetric Pro+

Simple symmetric encryption using only a password. Derives all keys from password via Argon2id. No key files needed. Auto-detects encrypt vs decrypt based on input.

qnsqy symmetric -i <input> [-o <output>] [options]
-i, --input <FILE> Input file to encrypt or decrypt (required)
-o, --output <FILE> Output file (auto-detected by default)
-d, --decrypt Force decryption mode (auto-detected by default)
-z, --compress Enable compression (encryption only)
--algorithm <ALG> aes256-gcm (default) or xchacha20-poly1305
--password-stdin Read password from stdin
keyfile Pro+

Keyfile-only encryption using a 256-bit key file (no password). Uses AES-256-GCM directly with the key file as the encryption key. Output format: .qskf files.

qnsqy keyfile <generate|encrypt|decrypt> [options]
generate -o <FILE> Generate a random 256-bit key file
encrypt -k <KEYFILE> -i <FILE> [-o <FILE>] Encrypt using key file (output: input.qskf)
decrypt -k <KEYFILE> -i <FILE> [-o <FILE>] Decrypt using key file (output: strips .qskf)
deniable Business

Deniable encryption with two payloads in one container. The real password reveals the real data; the decoy password reveals plausible decoy data. The container is indistinguishable from random data, so no one can prove a hidden volume exists.

qnsqy deniable <create|open> [options]
create -r <REAL> -d <DECOY> -o <OUTPUT> Create container with real and decoy payloads
open -i <CONTAINER> -o <OUTPUT> Open container (password determines which payload)
--password-stdin Read passwords from stdin
-f, --force Overwrite existing output file
vault Pro+

Encrypted password/secret manager. Master password → Argon2id → AES-256-GCM encrypted vault file (.qsv). Quantum-resistant at rest. Single encrypted blob prevents metadata leakage.

qnsqy vault <subcommand> --vault <FILE> [options]
init --vault <FILE> Create a new encrypted vault
add --vault <FILE> --name <NAME> [--username <USER>] [--url <URL>] [--notes <TEXT>] [--tags <TAGS>] [--generate <LEN>] Add entry (optionally generate random password)
get --vault <FILE> --name <NAME> [--show-password] [--json] Retrieve an entry
list --vault <FILE> [--json] List all entries
remove --vault <FILE> --name <NAME> [-f] Remove an entry
edit --vault <FILE> --name <NAME> [field flags] Edit an existing entry
export --vault <FILE> -o <OUTPUT> Export entries as plaintext JSON
import --vault <FILE> -i <INPUT> [-f] Import entries from JSON file
rekey --vault <FILE> Change vault master password
--password-stdin Read master password from stdin (all subcommands)
threshold-encrypt Business

Encrypt a file to N recipients, requiring M keys to decrypt (M-of-N threshold encryption). Each recipient's share is protected by their ML-KEM public key.

qnsqy threshold-encrypt -i <input> -m <threshold> -r <key1.pub> -r <key2.pub> ... [options]
-i, --input <FILE> Input file to encrypt (required)
-m, --threshold <N> Keys needed to decrypt (default: 3)
-r, --recipient <FILE> Recipient public key (repeat for each recipient, required)
-o, --output <FILE> Output file (default: input.qs.thresh)
-a, --algorithm <AEAD> AEAD cipher: aes-256-gcm (default) or xchacha20-poly1305
-f, --force Overwrite existing output file
threshold-decrypt Business

Decrypt a threshold-encrypted file using M or more of the original recipient private keys.

qnsqy threshold-decrypt -i <input> -k <key1> -k <key2> ... [options]
-i, --input <FILE> Input .qs.thresh file (required)
-k, --key <FILE> Private key file (repeat for each key, at least M required)
-o, --output <FILE> Output file (default: strip .qs.thresh)
-f, --force Overwrite existing output file
--password-stdin Read key passphrases from stdin (one per line)
timelock Business

Time-lock encryption using RSW sequential squaring puzzles. Files cannot be decrypted until the specified duration of computation has passed. Cannot be parallelized.

qnsqy timelock <encrypt|decrypt|calibrate> [options]
encrypt -i <FILE> --duration <DUR> [-o <FILE>] Create time-locked encryption (e.g., 1h, 7d, 30d)
decrypt -i <FILE> [-o <FILE>] Decrypt time-locked file (will take time!)
calibrate Measure squarings per second on this hardware
--keyfile <FILE> Key file for additional encryption layer
--recipient <FILE> Recipient public key for ML-KEM encryption
--hybrid Enable hybrid mode (requires keyfile or recipient, adds password)
--password-stdin Read password from stdin

Output: .qstl files. Use calibrate to measure your hardware speed before choosing duration.

stego Business

Steganography: hide encrypted data inside carrier files (images, audio, PDF, video). The carrier file appears normal but contains hidden secrets. QSS2 format.

qnsqy stego <hide|extract|capacity> [options]
hide -i <SECRET> --carrier <FILE> [-o <FILE>] Hide encrypted data in carrier file
extract -i <CARRIER> [-o <FILE>] Extract hidden data from carrier
capacity -i <CARRIER> Show how much data a carrier can hold
--keyfile <FILE> Key file for encryption (no password needed)
--recipient <FILE> Recipient public key for ML-KEM encryption
--hybrid Enable hybrid mode
--no-encrypt Skip encryption (hide data without encrypting)
--password-stdin Read password from stdin
scan Business

Two modes: (default) scan directories for files using classical cryptography vulnerable to quantum attacks; generates migration reports with risk levels (Critical, High, Medium, Low, Safe). Useful input for your internal audit process; QNSQY itself is not HIPAA-audited. (--my-files) v6.1 inventory mode, walk a directory and identify your own QNSQY-family files (.qs / .qsdn / .qspg / .qsv / .qsig / .qsthresh / .qstl / .qsym / .qskf) by magic bytes. With --key or --password-stdin, decrypts each .qs header far enough to report the v6.1-sealed tier and feature flags; without a key, every per-file metadata field is reported as (sealed) so only the file format itself is revealed.

qnsqy scan <DIRECTORY> [-r] [-f <format>] [-o <file>] [--my-files [--key <PATH>] [--password-stdin] [--json|--csv]]
<DIRECTORY> Directory to scan (required)
-r, --recursive Scan subdirectories (skips .git, node_modules, target)
-f, --output <FORMAT> Report format: text (default), json, csv, html, markdown
-o, --output-file <FILE> Write report to file instead of stdout
--min-risk <LEVEL> Filter by minimum risk: safe, low, medium, high, critical
--my-files Switch to v6.1 inventory mode, identify QNSQY-family files by magic bytes instead of scanning for classical crypto.
--key <PATH> Recipient PRIVATE key file (PEM or raw) used by --my-files to unseal each v6.1 .qs header and recover the sealed tier / private flag bits.
--password-stdin Read a single password from stdin and try it against every password-mode .qs file encountered by --my-files. Mutually exclusive with --key for any given file.
--json Shorthand for --output json; wins over --output if both given.
--csv Shorthand for --output csv; wins over --output / --json if both given.
migrate Business

Re-encrypt data from classical encryption to post-quantum. Works with scan results. Creates backups and provides detailed progress for compliance auditing.

qnsqy migrate <DIRECTORY> [options]
<DIRECTORY> Directory containing files to migrate (required)
--dry-run Preview what would be migrated without making changes
--backup-dir <DIR> Directory for backup copies (required unless --dry-run)
--order <ORDER> Processing order: alpha (default) or mtime (oldest first)
--min-risk <LEVEL> Minimum risk to migrate: high (default), medium, low, critical
-f, --force Force overwrite existing .qnsqy files
--password-stdin Read password from stdin
polyglot Pro+

Embed an encrypted QNSQY payload inside a carrier file (PDF, ZIP, PNG, JPEG). The carrier stays valid in its original format while hiding encrypted data after its EOF marker. Supports single-carrier, triple-polyglot (one file that opens as JPEG, ZIP, AND PDF), and self-extracting output.

qnsqy polyglot <create|create-selfx|extract|detect> [options]
create --carrier <FILE> -i <INPUT> -o <OUTPUT> Embed payload in a single carrier (or --jpeg/--zip/--pdf together for triple mode)
create-selfx --carrier <FILE> -i <INPUT> -o <OUT.sh> Self-extracting polyglot (.sh/.bat that re-runs extract on itself)
extract -i <FILE> -o <OUTPUT> Extract the encrypted payload
detect -i <FILE> Detect whether a file contains a polyglot payload
abe Pro+

Attribute-Based Encryption (CP-ABE). Encrypt to a policy expression over recipient attributes, for example (role=doctor AND dept=cardio) OR clearance>=4. Anyone whose attributes satisfy the policy can decrypt with their own private key. The authority-keygen/issue/seal/open subcommands are the real secret-sharing ABE (Business).

qnsqy abe <encrypt|inspect|authority-keygen|issue|seal|open> [options]
encrypt --pubkeys-attrs <FILE> --policy <EXPR> -i <INPUT> -o <OUTPUT> Encrypt to matching recipients (.qsabe)
inspect --pubkeys-attrs <FILE> --policy <EXPR> Show the policy and matching recipients without encrypting
authority-keygen / issue / seal / open Business: real secret-sharing ABE (authority, attribute bundles, policy-sealed QABE containers)
escrow-keygen Business

Generate an organization escrow key pair for key recovery. The public bundle is embedded in an org build at compile time (so every encrypt adds an escrow block); the private bundle is stored securely, e.g. in an HSM, and used only for recovery.

qnsqy escrow-keygen --org <ORG> [-o <DIR>]
--org <ORG> Organization name (required)
-o, --output <DIR> Output directory for the key files
--password-stdin Read passphrase from stdin (passphrase + confirmation)
escrow-decrypt Business

Recover a file using the organization escrow private key, without the original password or recipient key.

qnsqy escrow-decrypt -i <INPUT> --escrow-key <ESCROW_KEY> [-o <OUTPUT>]
-i, --input <INPUT> Encrypted file containing an escrow block (required)
--escrow-key <ESCROW_KEY> Organization escrow private key bundle (required)
policy Business

Manage organization encryption policies. A signed policy sets minimum cryptographic requirements that the client enforces locally, refusing any operation that would fall below the standard.

qnsqy policy <show|init|set|sync> [options]
show Show current policy (local, org, and effective)
init Create a default policy file
set <KEY> <VALUE> Set a policy value
sync Force an immediate sync of the organization policy from the server
group Business

Manage named recipient groups for threshold encryption. Groups are stored encrypted in ~/.config/qnsqy/groups.json; use --group with threshold-encrypt instead of listing individual keys.

qnsqy group <create|add|remove|list|show|delete> [options]
create <NAME> Create a new recipient group
add <NAME> <KEY> / remove <NAME> <MEMBER> Add or remove a member (public key)
list / show <NAME> / delete <NAME> List groups, show members, or delete a group

Utility Commands (All Tiers)

Available on all tiers including Free.

hash All tiers

Compute cryptographic hash of a file or directory. Supports 8 algorithms: BLAKE3, BLAKE2b, BLAKE2s, SHA-256, SHA-512, SHA3-256, SHA3-512, SHAKE256. Useful for integrity verification and file fingerprinting.

qnsqy hash [FILE] [-a <algorithm>] [-r] [--format <fmt>]
[FILE] File or directory to hash (positional or use -i)
-a, --algorithm <ALG> blake3 (default), blake2b, blake2s, sha256, sha512, sha3-256, sha3-512, shake256
-r, --recursive Hash directory contents recursively
--format <FMT> Output format: hex (default) or base64
hash-verify All tiers

Verify a file against a known hash value. Returns exit code 0 if match, 1 if mismatch. Use for integrity checking.

qnsqy hash-verify [FILE] -H <HASH> [-a <algorithm>]
[FILE] File to verify (positional or use -i)
-H, --hash <HASH> Expected hash value, hex or base64 (required)
-a, --algorithm <ALG> blake3 (default), blake2b, blake2s, sha256, sha512, sha3-256, sha3-512, shake256
encode All tiers

Encode data to Base64, Hex, Base32, Base58, URL, Binary, Octal, or Decimal format. Reads from file or stdin.

qnsqy encode [FILE] [-f <format>] [-o <FILE>]
[FILE] Input file (positional or use -i; reads stdin if omitted)
-f, --format <FMT> base64 (default), base64-url, hex, hex-upper, base32, base32-hex, base58, url, binary, octal, decimal
-o, --output <FILE> Output file (prints to stdout if omitted)
decode All tiers

Decode data from Base64, Hex, Base32, Base58, URL, Binary, Octal, or Decimal format. Reads from file or stdin.

qnsqy decode [FILE] [-f <format>] [-o <FILE>]
[FILE] Input file (positional or use -i; reads stdin if omitted)
-f, --format <FMT> base64 (default), base64-url, hex, hex-upper, base32, base32-hex, base58, url, binary, octal, decimal
-o, --output <FILE> Output file (prints to stdout if omitted)
logout All tiers

Log out and remove the stored API key from this device. Reverts the CLI to Free tier until you log in again.

qnsqy logout
reset-state All tiers

Reset corrupted state files (rate limit, audit logs, configuration). Use if you encounter "state corrupted" errors. Your encrypted files are NOT affected.

qnsqy reset-state
verify-integrity All tiers

Verify a .qs file's integrity without decrypting it and without a password. Checks the integrity hash in the file header against the actual data, detecting corruption or tampering. Works with files encrypted by v7+.

qnsqy verify-integrity -i <INPUT>
-i, --input <INPUT> Encrypted file to verify (required)
verify-release All tiers

Verify that a release artifact (or checksums file) was signed by the offline release-signing key, using ML-DSA-87 (NIST FIPS 204, level 5). Defends against a compromised CDN that swaps BOTH the binary AND the SHA-256 checksums, which SHA-256 alone cannot catch. The public key is embedded in the binary at compile time. Exit 0 if the signature is valid.

qnsqy verify-release <ARTIFACT> <SIGNATURE>
<ARTIFACT> File that was signed (e.g. checksums.txt)
<SIGNATURE> Detached signature file (e.g. checksums.txt.sig)
--pubkey <HEX> Override the embedded public key (for key rotation)
sign-release All tiers

Sign a release artifact with a detached ML-DSA-87 signature (release manager). Produces the .sig that verify-release checks.

qnsqy sign-release -i <ARTIFACT> -k <PRIVATE_KEY> -o <SIG_FILE>
-i, --input <ARTIFACT> Artifact to sign (required)
-k, --key <PRIVATE_KEY> Release signing private key (required)
-o, --output <SIG_FILE> Output signature file (required)
push All tiers

Encrypt locally and push only ciphertext to a zero-knowledge remote (Cloudflare R2 or S3). The remote never sees plaintext or keys. Credentials come from environment variables, the PQC Vault, or an interactive prompt, never from the profile file.

qnsqy push -i <INPUT> (--remote <REMOTE> | --endpoint <ENDPOINT>)
-i, --input <INPUT> File or directory to encrypt and upload (required)
--remote <REMOTE> / --endpoint <ENDPOINT> A saved remote profile, or a destination endpoint
pull All tiers

Restore data from a zero-knowledge remote. Verifies the signed manifest and every hash before decrypting.

qnsqy pull (--remote <REMOTE> | --endpoint <ENDPOINT>) [options]
--remote <REMOTE> / --endpoint <ENDPOINT> A saved remote profile, or a source endpoint
sync All tiers

Sync a directory to a zero-knowledge remote with change detection, uploading only what changed (encrypted).

qnsqy sync -i <INPUT> (--remote <REMOTE> | --endpoint <ENDPOINT>)
-i, --input <INPUT> Directory to sync (required)
--remote <REMOTE> / --endpoint <ENDPOINT> A saved remote profile, or a destination endpoint
remote All tiers

Manage remote storage profiles and test connectivity. Profiles store non-secret settings only (endpoint, bucket, region); credentials always come from env vars, the Vault, or a prompt. Stored in ~/.config/qnsqy/remotes.toml.

qnsqy remote <add|list|show|remove|test> [options]
add <NAME> Add or update a remote profile (non-secret settings only)
list / show <NAME> / remove <NAME> List, show, or remove profiles (objects on the remote are not touched)
test <NAME> Test connectivity and credentials (one authenticated LIST; nothing is uploaded)
signup All tiers

Create a new QNSQY account (Free tier) from the command line.

qnsqy signup
quickstart All tiers

Interactive setup guide that walks new users through login, first encryption, and key generation.

qnsqy quickstart
devices All tiers

Manage the devices registered on your subscription.

qnsqy devices <list|remove|rename> [options]
list List all registered devices
remove <DEVICE_ID> / rename <DEVICE_ID> <NAME> Remove a device by ID, or rename its local display name
usage All tiers

Show your SaaS usage and billing balance.

qnsqy usage
account All tiers

Show or update account settings and manage API keys.

qnsqy account <info|set-company|set-user|set-email|set-org|new-key|list-keys|revoke-key> [options]
info Show account info and current subscription
set-company / set-user / set-email / set-org Update branding shown in the tool UI, or the account email/organization
new-key / list-keys / revoke-key <KEY_ID> Generate, list, or revoke API keys
receipts All tiers

Manage local usage receipts (a tamper-evident hash chain of billed operations).

qnsqy receipts <sync|verify|status>
sync Sync pending receipts to the billing server
verify / status Verify local receipt chain integrity, or show synced/pending counts

Usage Examples

Basic Encryption Workflow

# Encrypt a document
$ qnsqy encrypt -i contract.pdf
Enter password: ********
Confirm password: ********
✓ Encrypted: contract.pdf.qs

# Securely delete the original
$ qnsqy shred contract.pdf
⚠ This will permanently destroy: contract.pdf
Confirm? [y/N]: y
✓ Securely deleted: contract.pdf

# Later: decrypt when needed
$ qnsqy decrypt -i contract.pdf.qs
Enter password: ********
✓ Decrypted: contract.pdf

Encrypting with Compression

# Large text-based files compress well with zstd
$ qnsqy encrypt -i database.sql -z
Enter password: ********
Confirm password: ********
⟳ Compressing with zstd...
⟳ Encrypting with AES-256-GCM...
✓ Encrypted: database.sql.qs

Recipient-Based Encryption (Password-less)

# Alice: Generate encryption keypair
$ qnsqy keygen-enc -o alice_key -n "Alice"
✓ Private key: alice_key
✓ Public key: alice_key.pub

# Alice shares alice_key.pub with Bob

# Bob: Encrypt file for Alice (no password needed)
$ qnsqy encrypt -i secret.pdf --recipient alice_key.pub
✓ Encrypted: secret.pdf.qs

# Alice: Decrypt using her private key
$ qnsqy decrypt -i secret.pdf.qs --key alice_key
✓ Decrypted: secret.pdf

Hybrid Encryption (Key + Password)

# Encrypt requiring BOTH key AND password
$ qnsqy encrypt -i top-secret.pdf --recipient alice_key.pub --hybrid
Enter password: ********
Confirm password: ********
✓ Encrypted: top-secret.pdf.qs

# Decrypt requires both private key AND password
$ qnsqy decrypt -i top-secret.pdf.qs --key alice_key
Enter password: ********
✓ Decrypted: top-secret.pdf

Signing Keypairs

# Generate a signing keypair (ML-DSA-87 = NIST Level 5, Pro+)
$ qnsqy keygen-sign -o mykey -n "My Signing Key" --algorithm ml-dsa87
⟳ Generating ML-DSA-87 keypair...
✓ Private key: mykey
✓ Public key: mykey.pub

# Free tier: ML-DSA-44 only
$ qnsqy keygen-sign -o mykey -n "My Key"
✓ Private key: mykey (ML-DSA-44)
✓ Public key: mykey.pub

Signing & Verification

# Sign a release artifact
$ qnsqy sign -i release.tar.gz -k mykey
Enter password: ********
✓ Signed: release.tar.gz.sig

# Verify a signed file (signature auto-detected from .qsig)
$ qnsqy verify -i release.tar.gz -k author.pub
✓ Signature valid (ML-DSA-87)

Custom Argon2 Parameters (Business)

# Maximum security: 1GB memory, 10 iterations
$ qnsqy encrypt -i secrets.tar \
    --argon2-memory 1048576 \
    --argon2-iterations 10 \
    --argon2-parallelism 8

# Use XChaCha20-Poly1305 cipher (all tiers)
$ qnsqy encrypt -i data.bin --algorithm xchacha20-poly1305

# Change password without re-encryption (Pro+)
$ qnsqy rekey -f secrets.tar.qs
Enter current password: ********
Enter new password: ********
Confirm new password: ********
✓ Password changed.

Batch Operations (Pro+)

# Encrypt multiple files in parallel
$ qnsqy batch encrypt *.pdf -o ./encrypted/ -j 4
Enter password: ********
✓ Encrypted 15 files (4 parallel jobs)

# Decrypt with signature verification
$ qnsqy batch decrypt ./encrypted/*.qs --verify-key author.pub
Enter password: ********
✓ Decrypted and verified 15 files

# Decrypt with recipient private key (public-key encryption)
$ qnsqy batch decrypt ./encrypted/*.qs --key mykey
✓ Decrypted 15 files using recipient key

Secret Sharing (Business)

# Split a secret into 5 shares, need 3 to recover (3-of-5)
$ qnsqy split -i master-key.txt -m 3 -n 5
✓ Created 5 shares: master-key.txt.share1 ... master-key.txt.share5

# Distribute shares to different locations/people

# Later: Recover with any 3 shares
$ qnsqy combine -o recovered.txt -m 3 share1 share3 share5
✓ Recovered: recovered.txt

View Audit Log (Pro+)

# View all operations
$ qnsqy audit
2025-01-15 09:23:41  ENCRYPT  contract.pdf
2025-01-15 09:24:02  SHRED    contract.pdf
2025-01-15 14:30:11  DECRYPT  contract.pdf.qs

# View only security events, export to file
$ qnsqy audit --security-only --export audit-report.json

# Verify audit log integrity
$ qnsqy audit --verify
✓ Audit log integrity verified (hash chain intact)

Argon2id Presets

Password-based key derivation uses Argon2id with configurable security presets:

Preset Memory Iterations Availability
standard 128 MB 3 All tiers (default)
high 256 MB 4 Pro+ only
maximum 512 MB 6 Business only
Custom User-defined User-defined Business only

Use --argon2-preset <standard|high|maximum> to select a preset. Business users can override with custom values using --argon2-memory, --argon2-iterations, and --argon2-parallelism flags.

File Size Limits

Maximum file size varies by tier:

Tier Max File Size
Free 100 MB
Pro 25 GB
Business Unlimited

File Format

Encrypted files use the .qs extension. Magic bytes QNS6 at offset 0; current wire format version 6.1. v6.0 files continue to decrypt with this binary via the backward-compat path; the reader auto-detects the on-disk minor version. Full byte-level layout in the QNSQY (.qs) format specification.

The format is split between a 128-byte plaintext fixed header and an AEAD-encrypted header. The plaintext fixed header carries everything the parser needs before the encrypted header can be opened: magic, version, algorithm tags (KEM, AEAD, KDF, hash, compression), Argon2id salt and parameters, BLAKE3 key commitment, encrypted-header length, plaintext file size, and three parser-essential public flag bits. The encrypted header carries the rest:

  • Format version identifier (major 6, minor 0 or 1)
  • Argon2id parameters (salt, memory, iterations, parallelism)
  • Hybrid ML-KEM + X25519 encapsulated key (ML-KEM-512/768/1024 or HQC)
  • AES-256-GCM or XChaCha20-Poly1305 nonce
  • Encrypted data with AEAD authentication tag
  • BLAKE3 integrity hash (so verify-integrity can detect corruption without the decryption key)
  • v6.1 sealed metadata: tier byte and six private flag bits (HSM-wrapped, escrow, directory archive, integrity, keyfile-derived, ABE) live inside the AEAD-encrypted header so a passive observer with only file access does not learn the producing tier or which optional features were used.

Files encrypted with any tier can be decrypted by any other tier. The format is forward-compatible. Two intentional residual fingerprints remain on disk by design: the integrity-presence indicator at reserved[24] == 0x01 (so corruption checks work without the password), and the plaintext QSEC magic of the optional escrow trailer at end-of-file (so escrow-recovery tooling can find the trailer without the password). Operators who need escrow usage hidden must not use the escrow feature.

IANA media type registration (application/vnd.quantumsequrity.qnsqy) is drafted per RFC 6838 §5.6 vendor tree; submission to IANA is in progress. Until provisional acceptance lands, the type string is a vendor-tree identifier under our control but is not yet IANA-listed.

NIST ACVP Test Vector Validation

QNSQY ships with a test harness at qs-ultra/tests/acvp_official/ that replays the full ACVP-Server v1.1.0.42 vector tree (commit 15c0f3deeefbfa) against the same Rust crates QNSQY ships (sha2, sha3, hmac, aes-gcm, ed25519-dalek, x25519-dalek, ml-kem, ml-dsa, slh-dsa). Each ACVP vector is loaded from NIST's JSON, run through the production crate, and the output is matched byte-for-byte against NIST's expectedResults.json.

As of the 2026-07-31 sweep (wall-clock 439.15 s on a Fedora 44 workstation): 18,703 vectors passed, 0 failures, 11,259 skipped (unimplemented parameter sets, e.g. RSA, ECDSA, AES-CBC), 29,962 total vectors in the NIST ACVP-Server v1.1.0.42 reference tree. 33 of 50 ACVP algorithm directories are at 100% NIST coverage.

Per-family pass counts

Family Spec Pass Notes
HMAC FIPS 198-1 12,375 All 22 directories (SHA-1, SHA-2 ×6, SHA-3 ×4 in both -1.0 and -2.0 schemas) at 100%
ML-DSA FIPS 204 570 keyGen 100%, sigVer 100%, sigGen 315/360 (45 externalMu randomized blocked by crate-private API)
ML-KEM FIPS 203 180 keyGen 100%; encapDecap 105/165 (60 keyCheck vectors blocked, crate API not public)
SLH-DSA FIPS 205 1,248 All 12 parameter sets, every pure/preHash, deterministic/randomized, external/internal combination at 100%
SHA-2 FIPS 180-4 2,947 SHA-2-256 / 512 / 512-256 at 100% (AFT + MCT-alternate + LDT up to 8 GiB)
SHA-3 FIPS 202 538 SHA3-{224,256,384,512} byte-aligned AFT + MCT-standard + LDT
SHAKE FIPS 202 756 SHAKE-128-FIPS202 at 100%; byte-aligned output paths
X25519 RFC 7748 50 XECDH-SSC self-consistency pairs at 100%
AES-GCM SP 800-38D 30 tagLen-128 cases (32-bit tags refused by aes-gcm crate per SP 800-38D §5.2.1.2)
EdDSA FIPS 186-5 / RFC 8032 9 Pure Ed25519 sigVer + keyVer (Ed25519ph and Ed448 unused by QNSQY)

Reproduce locally

QNSQY's product source is closed, but the test harness is fully shareable: it depends only on public RustCrypto crates and contains no QNSQY proprietary code. We publish it as a self-contained archive on the Validation page, with full step-by-step instructions. Source access for customers and auditors is available on request under NDA.

# Download the standalone reproducer harness (no QNSQY product code required)
$ curl -fLO https://quantumsequrity.com/validation-artifacts/qnsqy-acvp-harness-v1.0.tar.gz
$ curl -fLO https://quantumsequrity.com/validation-artifacts/qnsqy-acvp-harness-v1.0.tar.gz.sha256
$ sha256sum -c qnsqy-acvp-harness-v1.0.tar.gz.sha256
$ tar xzf qnsqy-acvp-harness-v1.0.tar.gz && cd qnsqy-acvp-harness

# Stage NIST's public ACVP-Server vector tree per the README, then run the replay
$ cargo build --release --tests
$ ./target/release/deps/acvp_official-* --nocapture --test-threads 2

This is NOT FIPS 140-3 / CMVP certification, and not an external audit.

What you get here is reproducible byte-for-byte replay of NIST's published ACVP test vectors against the same algorithm implementations compiled into the shipped qnsqy binary's own source tree, plus internal end-to-end format tests. CMVP / FIPS 140-3 is a separate, formal accredited-lab process and is on the QNSQY roadmap.

Documented skips fall into two buckets. (1) NIST vectors outside QNSQY's scope: RSA, ECDSA, AES-CBC/CTR/CCM/XTS/KW, KMAC, CMAC, KDF-TLS/SSH/IKE, DRBG, KAS-ECC/FFC/IFC, AES-192, Ed25519ph, Ed448, SP 800-56C TwoStep. (2) Upstream Rust crate API limits: ml-dsa 0.1.0-rc.7 keeps raw_sign_mu(mu, rnd) private so 45 ML-DSA externalMu randomized vectors are blocked; ml-kem 0.2.3 does not expose encapsulationKeyCheck / decapsulationKeyCheck; bit-oriented SHA/SHAKE inputs require sub-byte state machinery not built in this revision. Production source is untouched: the only repository delta is three test-only [dev-dependencies] in qs-ultra/Cargo.toml (sha1, ml-kem with deterministic, hybrid-array).

Background on the harness, methodology, and per-vector log is in the NIST ACVP validation write-up.

Common Error Messages

Invalid password Wrong password entered. Re-try with correct password.
BLAKE3 integrity check failed File has been modified or corrupted. Cannot decrypt.
File too large for tier File exceeds your tier's limit (Free: 100 MB, Pro: 25 GB). Upgrade to Business for unlimited.
Output file exists Use -f flag to overwrite, or specify different output path.
Unknown file format File is not a valid .qs encrypted file.
Command not available in tier This command requires Pro or Business tier. Run qnsqy version to see your tier.
Sandbox not enforced OS sandbox (Landlock/Pledge) unavailable. Remove --require-sandbox-enforced or upgrade kernel.

Questions?

Check the FAQ or contact support.