Supported Languages
Supported Languages
Note - As of 2026-04-30, the per-service
@heossihq/qnsi-auth-sdkpackage is consolidated into the unified@heossihq/qnsiSDK (one package per language). New integrations should use:import { QnsiClient } from "@heossihq/qnsi"; const qnsi = new QnsiClient({ apiKey: process.env.QNSI_API_KEY! }); await qnsi.auth./* method */(...);See SDK overview for the consolidated package. The per-service shapes documented below remain accurate at the wire level (REST/gRPC) and are kept for reference.
Supported Languages
QNSI ships first-party SDKs for TypeScript / Node.js, Python, Go, Rust, and JVM / Android (Kotlin + Java). All five share the same wire contracts, the same algorithm names, and the same FIPS 203 / 204 / 205 posture - pick whichever fits your stack and the byte-for-byte outputs round-trip.
| Language | Package | Where it lives | Activation SDK ID |
|---|---|---|---|
| TypeScript / Node.js | @heossihq/qnsi (single package) |
packages/qnsi/ |
qnsi |
| Python | qnsi (single package) |
sdks/python/qnsi/ |
qnsi-python |
| Go | github.com/heossihq/qnsi-public/sdks/go/qnsi |
sdks/go/qnsi/ |
qnsi-go |
| Rust | qnsi on crates.io |
sdks/rust/qnsi/ |
qnsi-rust |
| JVM / Android (Kotlin + Java) | com.heossi:qnsi on Maven Central |
sdks/jvm/ |
qnsi-jvm |
TypeScript SDK consolidated 2026-04-30. The previous 11 per-service
@heossihq/qnsi-*-sdkpackages on npm are deprecated in favour of@heossihq/qnsi. They continue to install and work, but new code should use the unified package. See migration guide.
Node.js / TypeScript
Single @heossihq/qnsi package on npm:
pnpm add @heossihq/qnsi
import { QnsiClient } from "@heossihq/qnsi";
const qnsi = new QnsiClient({ apiKey: process.env.QNSI_API_KEY! });
await qnsi.vault.createSecret({ name: "openai-key", payloadB64: "..." });
const key = await qnsi.kms.createKey({ algorithm: "ml-dsa-65", purpose: "signing" });
await qnsi.audit.logEvent({ eventType: "model.inference", payload: { modelId: "gpt-4o" } });
- TypeScript native, strict mode
- ESM (CommonJS consumers can
await import("@heossihq/qnsi")) - Node.js ≥ 22.0.0
- One activation handshake on first call, shared across all 11 sub-clients
- One
npm installline, one version, one CHANGELOG, one telemetry surface
@heossihq/qnsi targets Node.js. For browser-side PQC, integrate the audited pure-JavaScript primitive provider documented in the encryption-in-transit guide; QNSI does not currently advertise a separate public browser npm package. The per-service @heossihq/qnsi-*-sdk packages on npm are deprecated as of 2026-04-30 - they continue to install but are no longer the recommended entry point. See the Node.js page for full quick-start and migration details.
Python
Single qnsi package on PyPI (changelog):
pip install qnsi
# with local PQC primitives:
pip install 'qnsi[crypto]'
from qnsi import QnsiClient
with QnsiClient(api_key=os.environ["QNSI_API_KEY"]) as q:
secret = q.vault.create_secret(name="my-secret", payload_b64=...)
key = q.kms.create_key(algorithm="ml-dsa-65", purpose="signing")
q.audit.log_event(event_type="model.inference", payload={...})
The qnsi[crypto] extra wraps liboqs-python 0.12.0 - same algorithm-name surface as the rest of the QNSI ecosystem.
See the Python page for full quick-start.
Go
Module path is github.com/heossihq/qnsi-public/sdks/go/qnsi:
go get github.com/heossihq/qnsi-public/sdks/go/qnsi@latest
import "github.com/heossihq/qnsi-public/sdks/go/qnsi"
c, _ := qnsp.NewClient(qnsp.ClientOptions{APIKey: os.Getenv("QNSI_API_KEY")})
defer c.Close()
secret, _ := c.Vault().CreateSecret(ctx, vault.CreateSecretRequest{...}, "")
The qnsi/crypto subpackage wraps liboqs-go 0.12.0 - pure-Go base, native crypto requires liboqs at link time.
See the Go page for full quick-start.
Rust
qnsi on crates.io:
cargo add qnsi
# with local PQC primitives:
cargo add qnsi --features crypto
use qnsi::{Client, ClientOptions};
use qnsi::vault::CreateSecretRequest;
let c = Client::new(ClientOptions::with_api_key(env::var("QNSI_API_KEY")?))?;
let secret = c.vault().create_secret(CreateSecretRequest { ... }, None).await?;
tokio-based async; the crypto feature delegates to the oqs 0.11 crate.
See the Rust page for full quick-start.
JVM / Android
com.heossi:qnsi on Maven Central - one artifact for server-side JVM (Spring / Java / Kotlin) and native Android (API 21+):
// Gradle (Kotlin DSL)
dependencies {
implementation("com.heossi:qnsi:0.4.0")
}
val qnsi = QnsiClient(System.getenv("QNSI_API_KEY"))
val secret = qnsi.vault.createSecret(
CreateSecretRequest(name = "db-password", payloadB64 = payloadB64),
)
Built on OkHttp; Java-interop-clean API (from Java: qnsi.getVault()...). On-device PQC via Bouncy Castle or OS-native (Android Keystore PQC). See the JVM / Android page for the full quick-start.
Feature matrix
All SDKs cover the same set of customer-facing services. Module names differ slightly per language (snake_case vs camelCase vs PascalCase) but the wire contract is identical.
| Service | TypeScript | Python | Go | Rust | JVM / Android |
|---|---|---|---|---|---|
Vault (/vault/v1) |
@heossihq/qnsi-vault-sdk |
qnsi.vault |
qnsi/vault |
qnsi::vault |
qnsi.vault |
KMS (/kms/v1) |
@heossihq/qnsi-kms-client |
qnsi.kms |
qnsi/kms |
qnsi::kms |
qnsi.kms |
Audit (/audit/v1) |
@heossihq/qnsi-audit-sdk |
qnsi.audit |
qnsi/audit |
qnsi::audit |
qnsi.audit |
Auth (/auth/v1) |
@heossihq/qnsi-auth-sdk |
qnsi.auth |
qnsi/auth |
qnsi::auth |
qnsi.auth |
Tenant (/tenant/v1) |
@heossihq/qnsi-tenant-sdk |
qnsi.tenant |
qnsi/tenant |
qnsi::tenant |
qnsi.tenant |
Access (/access/v1) |
@heossihq/qnsi-access-control-sdk |
qnsi.access |
qnsi/access |
qnsi::access |
qnsi.access |
Billing (/billing/v1) |
@heossihq/qnsi-billing-sdk |
qnsi.billing |
qnsi/billing |
qnsi::billing |
qnsi.billing |
Crypto Inventory (/crypto/v1) |
@heossihq/qnsi-crypto-inventory-sdk |
qnsi.crypto_inventory |
qnsi/cryptoinventory |
qnsi::crypto_inventory |
qnsi.cryptoInventory |
Storage (/storage/storage/v1) |
@heossihq/qnsi-storage-sdk |
qnsi.storage |
qnsi/storage |
qnsi::storage |
qnsi.storage |
Search (/search/v1) |
@heossihq/qnsi-search-sdk |
qnsi.search |
qnsi/search |
qnsi::search |
qnsi.search |
AI Orchestrator (/ai/v1) |
@heossihq/qnsi-ai-sdk |
qnsi.ai |
qnsi/ai |
qnsi::ai |
qnsi.ai |
| Local PQC primitives | @heossihq/qnsi-cryptography (via @heossihq/liboqs-native) |
qnsi.crypto (via liboqs-python) |
qnsi/crypto (via liboqs-go) |
qnsi::crypto (via oqs 0.11) |
Bouncy Castle / OS-native |
| Webhook signature verify + parse | per-service | qnsi.parse_qnsi_webhook |
qnsi.ParseWebhook |
qnsi::parse_webhook |
QnsiWebhooks |
All SDKs ship the same 11 customer-facing service modules plus local PQC primitives and webhook verification. Current published releases are tracked in SDK Overview; registry verification is run before customer-facing version claims are updated.
Activation
Every customer-facing SDK calls /billing/v1/sdk/activate on first use to validate the API key, resolve the tenant + tier, and cache the result. The SDK identifier reported in the handshake matches the third column of the table at the top of this page; see SDK Activation for protocol details.
Community SDKs
QNSI does not currently host community-maintained SDKs. If you build one, open a PR against docs/sdks/community.md on the public mirror to add it to this list.