← Konstruct

Privacy Policy

Last Updated: March 4, 2026  ·  Effective Date: March 4, 2026

1. Introduction

Konstruct is a privacy-first, end-to-end encrypted messenger built on the Signal Protocol. This policy explains exactly what data we collect, why we collect it, and what we do not collect. We have designed Konstruct from the ground up to minimize the data we hold about you.

Core Principle: We collect the absolute minimum data necessary to route encrypted messages. Your message content is end-to-end encrypted — our servers cannot read it, and we do not attempt to.

2. Information We Collect

2.1 Account Identifier

Konstruct requires no phone number, email address, password, or real name.

No personally identifiable information is required to create an account or use Konstruct.

2.2 Cryptographic Key Bundle

To enable the Signal Protocol key exchange, your device generates and uploads the following public keys to the server. Your corresponding private keys never leave your device and are stored in the iOS Keychain.

Key Type Stored on server Purpose
Identity Public KeyX25519 (long-term)✅ Yes, permanentlyAuthenticates your device; used in X3DH handshake
Signed PreKeyX25519 (medium-term)✅ Yes, rotated periodicallyUsed in X3DH key agreement
One-Time PreKeys (OTPKs)X25519 (ephemeral)✅ Yes, until consumedConsumed one-per-session for Perfect Forward Secrecy
Private keys❌ NeverAll private keys remain on your device only

The server tracks how many One-Time PreKeys remain and requests your device to replenish them when the supply runs low. Once an OTPK is used to establish a session, it is permanently deleted from the server.

2.3 Pending Message Queue

When you send a message, it is encrypted on your device before transmission. The server stores encrypted messages only until the recipient's device confirms delivery via a cryptographic receipt (ACK). After confirmed delivery, messages are permanently and irrecoverably deleted from our servers.

What is stored in the pending queue (until delivery):

If your device is offline, messages queue on the server until your next connection. If a message remains undelivered for an extended period, it may be discarded.

2.4 Contact Relationships

When you add a contact (via QR code or invite link), the server stores a record of that relationship to determine message routing and stream subscription. This allows Konstruct to notify you when a known contact comes online and to subscribe you to their message stream.

2.5 Push Notification Tokens

To deliver real-time message notifications when the app is in the background:

2.6 Session Authentication

2.7 What We Do NOT Collect

The following are explicitly not collected or stored:

3. Traffic Analysis Protection

Konstruct implements active traffic obfuscation to resist metadata surveillance even by a network observer. In production builds, the app automatically sends encrypted dummy messages on a randomised schedule to prevent anyone observing your network traffic from inferring when you are communicating, with whom, or how frequently.

This mechanism adapts to your device's battery level to minimise energy impact. It is always active in production builds and requires no configuration.

4. Anti-Spam: Proof of Work

To prevent message spam without requiring account registration, Konstruct requires your device to perform a small Proof of Work computation before sending each message. This is a client-side computation that imposes a negligible cost on legitimate use but makes large-scale spam computationally expensive. No personal data is involved.

5. How We Use Your Data

Data Purpose
User IDAuthenticate your device and route messages
Public key bundleEnable Signal Protocol E2EE key exchange
Pending message queueHold encrypted messages until delivery
Contact relationshipsRoute messages and stream subscriptions
APNs tokenDeliver background push notifications
Session tokenAuthenticate gRPC connection

We do not use any collected data for advertising, profiling, analytics, or any purpose beyond operating the messaging service.

6. Data Storage and Security

6.1 Infrastructure

6.2 Encryption

6.3 What Is Stored on Your Device

Your device stores the complete message history locally in encrypted storage (iOS data protection). This includes:

This data is under your control. Deleting the app removes all local data permanently.

6.4 Data Retention

Data type Retention
Pending messagesDeleted immediately upon confirmed delivery (ACK)
One-Time PreKeysDeleted from server upon consumption
Session tokensDeleted on disconnect / expiry
APNs tokenRetained until account deletion or token update
User ID + usernameRetained until account deletion
Signed PreKeyReplaced when rotated; old key deleted
Contact relationshipsRetained until contact is removed or account deleted

7. Data Sharing and Third Parties

We do not sell, rent, or share your data with any third parties for any commercial purpose.

7.1 Infrastructure Providers

7.2 Legal Compliance

We may be required to disclose data if compelled by a valid legal order from a competent authority. However:

8. Your Rights

8.1 Anonymous Use

You can use Konstruct with no personally identifiable information. Your User ID is a cryptographic hash with no connection to your identity.

8.2 Access to Your Data

You may request a copy of any metadata associated with your account at any time by contacting us at the address below.

8.3 Account Deletion

You can delete your account from within the app settings. Upon deletion:

Messages previously delivered to recipients are stored locally on their devices only and are outside our control after delivery.

8.4 Username

You can add, change, or remove your username at any time from account settings.

9. Children's Privacy

Konstruct is not intended for users under 13 years of age. We do not knowingly collect data from children.

10. Federation (Planned)

Konstruct is designed with federation in mind. When federation is available:

Federation is not currently active. This section will be updated when federation is introduced.

11. Changes to This Policy

We will notify users of material changes through:

Continued use of Konstruct after changes constitutes acceptance of the revised policy.

12. Contact

For privacy questions, data access requests, or concerns:

Summary

✅ No phone number or email required✅ End-to-end encrypted (Signal Protocol)
✅ Fully anonymous use supported✅ Messages deleted after confirmed delivery
✅ No tracking or analytics SDKs✅ Traffic obfuscation built in
✅ Private keys never leave your device✅ Minimal metadata only
✅ No third-party data sales✅ GDPR jurisdiction (EU, Netherlands)