Documentation
Complete CLI reference for QNSQY. Commands, options, and usage examples.
Binary Name
All tiers use a single binary:
qnsqy
Unified binary for all tiers — Features unlock 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
Commands by Tier
Command availability depends on your license tier:
| Command | Free | Pro | Enterprise |
|---|---|---|---|
encrypt |
✓ | ✓ | ✓ |
decrypt |
✓ | ✓ | ✓ |
shred |
✓ | ✓ | ✓ |
version |
✓ | ✓ | ✓ |
keygen |
— | ✓ | ✓ |
key-import |
— | ✓ | ✓ |
key-export |
— | ✓ | ✓ |
audit |
— | ✓ | ✓ |
sign |
— | — | ✓ |
verify |
— | — | ✓ |
rekey |
— | — | ✓ |
Command Reference
Encrypts a file using hybrid ML-KEM + X25519 key encapsulation and AES-256-GCM or XChaCha20-Poly1305 authenticated encryption. Password is derived using Argon2id.
Decrypts a .qs file. Automatically verifies BLAKE3 integrity. Fails if file has been tampered with.
Securely deletes a file by overwriting it multiple times before removal. Makes forensic recovery extremely difficult.
Displays version info, active tier, supported algorithms, and post-quantum readiness status.
Generates a new ML-DSA (Dilithium) signing keypair. Creates both public (.pub) and private key files.
ML-DSA-44 = NIST Level 2, ML-DSA-65 = Level 3, ML-DSA-87 = Level 5
Imports a public key file into the local keyring for signature verification.
Exports your public key to a file for sharing with others.
View the local operation audit log. Shows all encrypt, decrypt, sign, and verify operations with timestamps.
Signs a file using your ML-DSA private key. Creates a detached .sig signature file.
Verifies a detached signature against a file using the signer's public key.
Changes the password on an encrypted file without re-encrypting the entire file. Instant operation regardless of file size.
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
Key Management (Pro+)
# Generate a signing keypair (ML-DSA-87 = NIST Level 5) $ qnsqy keygen -o mykey --algorithm ml-dsa-87 ⟳ Generating ML-DSA-87 keypair... ✓ Private key: mykey ✓ Public key: mykey.pub # Export public key to share $ qnsqy key-export -f mykey.pub -o share-with-team.pub # Import a colleague's public key $ qnsqy key-import -f colleague.pub -n "Alice" ✓ Imported: Alice (ML-DSA-87)
Signing & Verification (Enterprise)
# Sign a release artifact $ qnsqy sign -i release.tar.gz -k mykey Enter password: ******** ✓ Signed: release.tar.gz.sig # Verify a signed file $ qnsqy verify -i release.tar.gz -s release.tar.gz.sig -k author.pub ✓ Signature valid (ML-DSA-87)
Custom Argon2 Parameters (Enterprise)
# Maximum security: 1GB memory, 10 iterations $ qnsqy encrypt -i secrets.tar \ --argon2-memory 1048576 \ --argon2-iterations 10 \ --argon2-parallelism 8 # Use XChaCha20-Poly1305 cipher (available on all tiers) $ qnsqy encrypt -i data.bin --algorithm xchacha20-poly1305 # Change password without re-encryption (Enterprise only) $ qnsqy rekey -f secrets.tar.qs Enter current password: ******** Enter new password: ******** Confirm new password: ******** ✓ Password changed.
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 from last week $ qnsqy audit --security-only --since 2025-01-08
Argon2id Tier Defaults
Password-based key derivation uses Argon2id with tier-specific defaults:
| Parameter | Free | Pro | Enterprise |
|---|---|---|---|
| Memory | 128 MB | 256 MB | 512 MB (configurable) |
| Iterations | 3 | 4 | 6 (configurable) |
| Parallelism | 4 | 4 | 8 (configurable) |
Enterprise users can override these using --argon2-memory, --argon2-iterations, and --argon2-parallelism flags.
File Size Limits
Maximum file size varies by tier:
| Tier | Max File Size |
|---|---|
| Free | 1 GB |
| Pro | 10 GB |
| Enterprise | Unlimited |
File Format
Encrypted files use the .qs extension. The format includes:
- Format version identifier (v6.0)
- Argon2id parameters (salt, memory, iterations, parallelism)
- Hybrid ML-KEM-1024 + X25519 encapsulated key
- AES-256-GCM or XChaCha20-Poly1305 nonce
- Encrypted data with AEAD authentication tag
- BLAKE3 integrity hash
Files encrypted with any tier can be decrypted by any other tier. The format is forward-compatible.
Common Error Messages
Questions?
Check the FAQ or contact support.