M1–M3 Milestones 1–3 shipping · Hybrid PQC by default · NIST FIPS 203/204

Zero trust,
rebuilt on QUIC.
Post-quantum by default.

Quartz is a ZTNA platform with a pure QUIC data plane, hybrid ML-KEM + ML-DSA cryptography, and a controller that stays out of the data path. Self-hosted, open source, and honest about where each component is on the road to general availability.

MIT / Apache-2.0 / Self-hosted today / 100% Rust · unsafe_code = forbid / CNSA 2.0 aligned
§ Control plane coordination only · no user data CONTROLLER OIDC · policy · session identity policy session HTTPS HTTPS § Data plane · QUIC encrypted peer-to-peer · controller never sees user traffic stream #1 · ssh stream #2 · sync AGENT A user · laptop AGENT B server · prod DERP RELAY fallback · :443 ML-KEM · X25519 0-RTT resume ✓ connection migration ✓
Built on open standards
RFC 9000 · QUIC FIPS 203 · ML-KEM FIPS 204 · ML-DSA OIDC · SAML OpenTelemetry Prometheus
§ 01 / Platform

Three principles.
No compromise.

Most "ZTNA" vendors repackaged VPN concentrators with a policy dashboard. Quartz starts from a different architecture — one where transport, cryptography, and trust boundaries are all first-class.

01 / QUIC

Pure QUIC data plane

All traffic rides QUIC — the IETF-standardized protocol that powers HTTP/3. No TCP fallback, no TLS-over-TCP legacy. Independent streams, 0-RTT resumption, native connection migration.

RFC 9000 · Quinn 0.11UDP · userspace · no kernel modules
02 / Cryptography

Post-quantum by default

Hybrid ML-KEM-768 + X25519 for key exchange. ML-DSA-65 + Ed25519 for signatures. Both classical and quantum algorithms must break for a connection to compromise.

FIPS 203 / 204 · NIST Level 3AES-256-GCM · BLAKE3 · zeroized keys
03 / Trust

Controller out of path

The control plane authenticates, authorizes, coordinates. It never terminates QUIC streams. It never decrypts user data. If the controller is compromised, the attacker gains metadata — not your traffic.

Default deny · signed policiesRe-verified every 60s · 5-min session TTL
§ 02 / How it works

From authentication to encrypted stream in five stages.

Authenticate, discover, connect, hybrid-handshake, verify continuously. First connection costs one round trip; subsequent resumes can be zero.

01
Authenticate (OIDC / SAML)
The agent authenticates against any OIDC or SAML 2.0 provider. The control plane issues a short-lived session token (≤5 min) and binds it to the device identity.
→ session.ttl = 300s
02
Discover peers & policy
The agent fetches network candidates and Ed25519-signed policies from the controller. Policies are verified locally before any enforcement decision, and cached for offline operation.
→ policy.sig = Ed25519
03
Connect (ICE-lite + STUN, DERP fallback)
Direct peer-to-peer UDP hole-punching preferred. If NAT or firewall blocks UDP, fall back to the DERP relay over HTTPS/443. If UDP is reachable but P2P fails, native QUIC relay is available.
→ preferred path: direct
04
Hybrid post-quantum handshake
QUIC negotiates hybrid ML-KEM-768 + X25519 keys, combined via HKDF with a transcript-binding label. Application traffic then flows over independent QUIC streams, each with its own flow control.
→ 1-RTT new · 0-RTT resume
05
Continuous verification
Policy is re-evaluated on every request (default-deny). Device posture is re-checked on a configurable interval. Violations trigger immediate disconnection.
→ posture: periodic
t ≈ 0 authenticate POST /auth/login → session token t ≈ 10ms discover GET /peer/:id/candidates → list t ≈ 30ms ICE probe STUN srflx → udp://… t ≈ 60ms QUIC handshake ML-KEM-768 ⊕ X25519 → shared_secret t ≈ 80ms stream opened hybrid PQ · posture verified on resume → 0-RTT (QUIC property)

Timings are representative on local LAN; WAN varies with RTT and NAT.

§ 03 / Performance

Properties, not benchmarks.

These are transport-level capabilities, not lab numbers. They are true by virtue of the protocol choice — QUIC for Quartz, TCP for traditional VPNs, a UDP datagram overlay for WireGuard. Numbers depend on your network; properties do not.

Capability TCP VPN WireGuard Quartz (QUIC)
Connection setup (new) 2–3 RTT 1 RTT 1 RTT
Connection setup (resumed) 2–3 RTT 1 RTT 0 RTT *
Connection migration (IP change) ✗ breaks ✗ breaks ✓ survives
Stream multiplexing ✗ HoL blocking — n/a (L3) ✓ independent streams
Post-quantum key exchange — none — none ✓ ML-KEM-768 hybrid
Post-quantum signatures — none — none ✓ ML-DSA-65 hybrid
Userspace (no kernel modules) partial optional ✓ native

* 0-RTT resumption carries replay risk and is off by default in Quartz v0.9. Enable only for idempotent workloads after reviewing RFC 9001 §9.2.

§ 04 / Security

Security you can read.

Every claim on this page is verifiable in the source tree. The cryptographic stack assumes a quantum attacker. The implementation assumes unsafe code is a bug class. An internal audit in April 2026 remediated 54 findings across five commits — the commit history is public.

§ Crypto stack

Hybrid post-quantum, end to end.

Every Quartz connection combines classical and post-quantum primitives via HKDF with domain separation and a transcript-bound label. Both must break — independently — to compromise a session.

  • KEXX25519 ⊕ ML-KEM-768 · NIST L3
  • SignaturesEd25519 ⊕ ML-DSA-65 · NIST L3
  • AEADAES-256-GCM · ChaCha20-Poly1305
  • HashBLAKE3 · SHA-256
  • Key hygienezeroize on drop · constant-time compare
  • StandardsFIPS 203 · FIPS 204 · RFC 9000 · RFC 9001
§ Device posture

Scored, signed, re-checked.

Agents report device posture to the control plane, which evaluates it against policy. Posture signals include disk encryption, firewall state, OS patch level, and platform attestation where available.

Hardware attestationsignal
Disk encryptionsignal
Firewall onsignal
OS patch levelsignal
Attestation failuregate
Jailbroken / rootedgate

Platform attestation depth varies by OS. Linux agent is functional; macOS/Windows attestation is in progress (M3).

§ Policy engine

Signed, cached, default-deny.

Policies are Ed25519-signed by the controller and verified by the agent before enforcement. First-match-wins. No matching policy resolves to deny, not abstain.

  • Conditions12 types
  • Operators12 · incl. regex, in, contains
  • Defaultdeny
  • Offlinelocal cache · signature verified
§ Implementation

Memory-safe by construction.

The workspace forbids unsafe_code via a workspace-level lint. Secrets are zeroed on drop. Token comparisons run in constant time. Every .unwrap() on untrusted input is flagged as a build error.

  • LanguageRust (100%) · unsafe_code = forbid
  • Key destructionzeroize · secrecy::SecretString
  • Timingsubtle::ConstantTimeEq
  • Deploymentmulti-stage build · non-root · systemd hardened
  • Supply chaincargo-audit · cargo-deny · gitleaks · SHA-pinned Actions
  • ObservabilityPrometheus · OpenTelemetry · structured tracing
§ 05 / Comparison

An honest look at the alternatives.

Tailscale and Netbird are mature, excellent products. If you need a mesh VPN today and post-quantum isn't a requirement, use them. Quartz is for teams who specifically need QUIC-native transport, hybrid PQC shipped today, and auditable self-hosted infrastructure.

Aspect Tailscale Netbird Cloudflare WARP Quartz
Transport WireGuard · L3 WireGuard · L3 WireGuard / MASQUE QUIC · L4
Post-quantum crypto — none shipped — none shipped — none shipped ✓ hybrid, shipped
Open source client only ✓ yes ✗ no ✓ MIT / Apache-2.0
Controller in data path DERP sees metadata relay sees metadata cloud-hosted ✓ out of path
Self-hosted Headscale (community) ✓ yes ✗ no ✓ first-class
Connection migration via DERP via relay yes ✓ native QUIC
Stream multiplexing — no — no — no ✓ yes
Ecosystem maturity ★★★★★ ★★★★ ★★★★★ ★★★ growing
Mobile clients all platforms all platforms all platforms planned · Q1 2027
§ 06 / Status · April 2026

Ship what works. Say what doesn't.

Quartz is at Milestones 1–3. Core networking, hybrid PQC cryptography, and policy enforcement are functional today. Multi-platform agents and managed cloud are on a dated roadmap — here is exactly what's where.

Shipping today

M1 – M3
  • DERP infrastructure (M1). Multi-region mesh, Ed25519 client auth, signed packet relay, per-client rate limiting.
  • Agent core (M2). Register, authenticate, connect, SOCKS5 proxy; identity protected at 0o600.
  • Hybrid PQC. ML-KEM-768 + X25519; ML-DSA-65 + Ed25519; HKDF with transcript binding.
  • Pure QUIC transport. Stream multiplexing, connection migration, TLS 1.3 only, cipher allowlist.
  • Signed policies. Ed25519, local enforcement, default-deny, offline cache.
  • Docker deployment. Compose stack, Prometheus + Grafana, systemd-hardened unit files.
  • Supply-chain hygiene. cargo-deny, cargo-audit, gitleaks, SHA-pinned Actions, Dependabot.

In progress

M3 active
  • Policy engine hardening (M3) — edge cases, richer condition set.
  • Continuous verification loop refinement on the agent.
  • macOS / Windows attestation depth — identity + posture surface.
  • WebAuthn / FIDO2 MFA UX polish; enterprise SAML 2.0 and SCIM groups landed.
  • NAT traversal — ICE-lite + STUN partial; MESSAGE-INTEGRITY enforced.
  • Dilithium key serialisation — blocked by upstream pqc_dilithium 0.2; fail-closed today.

On the roadmap

M4 – M7
  • M4 · Q4 2026. PostgreSQL, ACME TLS, production hardening, distributed rate-limit.
  • M5 · Q1 2027. macOS, Windows, Android, iOS native agents.
  • M6 · Q2–Q3 2027. Multi-tenancy, RBAC, split tunnelling, cloud control plane.
  • M7 · Q4 2027. Multipath, exit nodes, subnet routing, MagicDNS-style service discovery.

§ What we don't claim

  • "Defense-grade." Our crypto is defense-relevant. The product has not undergone DoD certification, Common Criteria, or FedRAMP authorisation.
  • "Cloud-hosted SaaS." Self-hosted is available today. Managed cloud is on the roadmap (M4 – M6); it is not shipping.
  • "HIPAA / FedRAMP / SOC 2 certified." The architecture supports compliance. Formal audits have not been completed.
  • "FIPS 140-2 validated." We use NIST-standardised algorithms; we do not bundle FIPS 140-2 validated modules.
  • "Unhackable." No software is unhackable. We minimise attack surface, audit internally and externally, and publish fixes.
§ 07 / Architecture

Eleven crates.
One honest stack.

Each subsystem is its own crate. The workspace forbids unsafe code. The dashboard is React 19 + TypeScript. The protocol definitions are five .proto files, versioned and stable.

quartz-crypto Post-quantum cryptography · hybrid KEM & signatures
production
quartz-transport QUIC transport · Quinn 0.11 · TLS 1.3 only
functional
quartz-proto Protocol definitions · 5 .proto files
production
quartz-control Control plane API · Axum · JWT middleware
functional
quartz-policy Policy engine · 12 conditions · default-deny
functional
quartz-nat NAT traversal · ICE-lite · STUN · MESSAGE-INTEGRITY
partial
quartz-derp DERP relay · Ed25519 client auth · bounded queues
complete
quartz-relay Native QUIC relay · HMAC auth
functional
quartz-agent Agent daemon · CLI · SOCKS5 · pidfile · updater
core complete
quartz-identity Identity · OIDC / SAML 2.0 · session mgmt
functional
quartz-metrics Metrics & tracing · Prometheus · OpenTelemetry
functional
admin-dashboard React 19 · TypeScript · Tailwind · Vite
production UI
§ 08 / Who Quartz is for

Built for teams that read the source.

Quartz is a deliberate choice, not a default. It's the right fit when post-quantum cryptography is insurance you need, when you audit your tools, and when you care about how packets actually move.

§ long-secrecy data

Data with a 10–25 year half-life.

If your data must stay confidential for decades, post-quantum crypto isn't optional. It's insurance against harvest-now-decrypt-later collection.

§ CNSA 2.0 preparation

Defence contractors.

The 2033 NSA CNSA 2.0 deadline is closer than it looks. Hybrid PQC deployments take years to validate and operationalise — Quartz is one of the few ZTNA options with PQ shipped today.

§ air-gapped & regulated

Regulated environments.

Self-hosted control plane, local policy enforcement with offline cache, auditable open-source code. Architecture that maps to compliance requirements — not a certification badge.

§ open source

Teams that audit their tools.

MIT / Apache-2.0. Full source available. No black-box binaries. Every claim on this page is verifiable in the code — and we tell you when one isn't yet.

§ transport-aware

Network architects.

If you understand why 0-RTT resumption, connection migration, and stream multiplexing matter, Quartz is built for you. It's a ZTNA that thinks in QUIC, not IPsec.

§ NOT for

Plug-and-play teams.

If you need all major platforms today with zero engineering overhead and PQC isn't on your list, use Tailscale or Cloudflare WARP. We'll say so plainly instead of selling you the wrong thing.

§ 09 / Get started

Run your own control plane.

Quartz is self-hostable today. Managed cloud is on the roadmap (M4–M6). Clone the repo, bring up the stack, point your agent at it.

Self-hosted · available now

Docker Compose with controller, DERP relay, Prometheus, and Grafana. Multi-stage builds on Debian Bookworm slim, non-root containers, systemd hardening templates for bare-metal installs. SQLite by default; PostgreSQL migration path is M4.

Clone on GitHub ↗ Deployment guide
  • LicenseMIT · Apache-2.0
  • Build targetlinux/amd64 · linux/arm64 (via CI)
  • Agent OSLinux (today) · macOS/Win/iOS/Android (M5)
  • DBSQLite (default) · PostgreSQL (M4)
  • Required envQUARTZ_TOKEN_ENCRYPTION_KEY · QUARTZ_UPDATE_SIGNING_PUBKEY_HEX
~/quartz · bash
# clone & start the stack
$ git clone https://github.com/quartz-ztna/quartz.git
$ cd quartz
$ cp docker/.env.example docker/.env  # set GRAFANA_ADMIN_PASSWORD etc.
$ docker compose -f docker/docker-compose.yml up -d
  ✓ quartz-controller   running :8443
  ✓ quartz-derp         running :3478/udp  :443/tcp
  ✓ prometheus          running :9090
  ✓ grafana             running :3000

# configure & run your first agent (Linux)
$ cp config/agent.toml.example config/agent.toml
$ cargo run --bin quartz-agent -- --config config/agent.toml

  INFO quartz_agent: identity loaded · 0o600 verified
  INFO quartz_agent: auth → OIDC (Google Workspace) ok
  INFO quartz_agent: handshake: ML-KEM-768 ⊕ X25519 ok
  INFO quartz_agent: session opened · posture verified
  INFO quartz_agent: SOCKS5 listening on 127.0.0.1:1080
§ 10 / FAQ

Straight answers.

No marketing dodges. If you need more, the docs go deeper and the source goes deeper still.

Is Quartz production-ready?
Core networking (M1–M2) is functional and has passed an internal 262-test suite plus a phase-2 pentest run on a dedicated test VM. Policy engine (M3) works for standard use cases and is being hardened. We recommend Quartz today for non-mission-critical workloads, with general-availability hardening planned for Q4 2026 (M4).
Does Quartz require kernel modules or root?
No. The agent runs entirely in userspace. In SOCKS5 proxy mode it needs no special privileges. For system-level TUN tunnelling, CAP_NET_ADMIN is required on Linux; the macOS package is scoped to run as a non-root service user (_quartz).
What if a quantum computer is never built?
Your data remains secure. Hybrid mode includes classical X25519 / Ed25519, which are secure against classical computers. You lose nothing by adding post-quantum — you gain protection against a credible, if uncertain, long-horizon threat.
Can I use Quartz without post-quantum?
Yes — the classical crypto mode disables PQC algorithms. We don't recommend it for new deployments, but it exists for compatibility testing and for environments where PQ libraries are not yet permitted.
How do I migrate from Tailscale or WireGuard?
Deploy Quartz alongside your existing mesh. Use SOCKS5 proxy mode to route specific applications through Quartz while the legacy mesh continues. Migrate workloads as confidence grows — there is no cutover.
Is there a managed cloud option?
Not yet. We're building toward it in M4–M6. If you need managed ZTNA today, evaluate Tailscale, Cloudflare WARP, or Zscaler — and come back when the managed offering ships.
What cryptography standards do you follow?
NIST FIPS 203 (ML-KEM) for key encapsulation, FIPS 204 (ML-DSA) for digital signatures, RFC 9000 for QUIC transport, RFC 9001 for TLS 1.3-on-QUIC, RFC 5389 MESSAGE-INTEGRITY for STUN. We align with NSA CNSA 2.0 guidance for hybrid key establishment. We do not ship FIPS 140-2 validated modules.
How do you handle vulnerabilities?
See SECURITY.md in the repo. Private reporting channel, 2-day acknowledgement, 30-day fix SLA for critical issues, 90-day coordinated disclosure window. We ran an internal audit in April 2026 and publicly remediated 54 findings across five commits — the history is on GitHub.

Ready to run a VPN that's honest about where it is?

Clone the repo, bring up the stack, point your first agent at it. If Quartz isn't the right fit, we'll tell you where to look instead.