Sync & encryption

Takt stores notes in a local database first. With device encryption enabled, note content is encrypted on your device before sync.

How device-encrypted sync works

Your encryption passphrase is processed with PBKDF2-HMAC-SHA256 using 600,000 iterations and a random salt to derive a wrapping key. That wrapping key encrypts your device-generated AES-256 master key; your note content is encrypted locally with AES-256-GCM (with the note's ID bound as additional-authenticated-data) before sync. The passphrase is not sent to the server and cannot be reset by Takt. The runtime encryption key lives in the browser as a non-extractable CryptoKey — it cannot be read out by page scripts or extensions.

Important. Your encryption passphrase is required to decrypt device-encrypted notes. Losing it means losing access to that encrypted data. Takt cannot reset it.

Unlocking on a new session

By default, Takt asks for your encryption passphrase once per session. You can optionally cache the derived key (still as a non-extractable CryptoKey) for a chosen timeout so the app re-opens without re-entry. Disabling the cache means a passphrase prompt on every launch.

On devices with a registered passkey that supports the WebAuthn PRF extension, the passkey itself can unlock your encrypted notes — no passphrase re-entry. The wrapped key bytes on the server are inert without the registered authenticator.

Two passwords, one account

Takt has two distinct credentials:

You can change either one independently from the Settings page.

Resetting the login password

What a reset does to your notes depends on which mode you're in:

Two-factor authentication

Optional TOTP-based 2FA is available for the login password. Set it up once with an authenticator app and you'll be asked for a code after entering your password on a new device. Setup also generates one-time 10-character recovery codes (shown in grouped form for readability) that you can use if you lose access to your authenticator. Codes are stored hashed and are deleted on use.

Re-authentication for sensitive actions

Some account actions — changing your password, deleting your account, and similar — prompt for your current password again, even when you are already signed in. This limits the damage if someone gets brief access to an unlocked session.

Sessions

Sessions have an absolute lifetime of 90 days. Beyond that you'll be asked to sign in again, even if the session has been kept warm. You can end every session at once from Settings → Sign out everywhere.

Offline-first sync

Changes are written locally first. Sync runs in the background when the app has connectivity:

The status banner at the bottom of the sidebar shows whether sync is complete, pending, offline, or blocked by an error.

What the server stores

Takt does not store your encryption passphrase, your encryption key, or the content of device-encrypted notes in any readable form. Tag names that appear inside device-encrypted notes are parsed on your device from the decrypted text and are not server-readable.

Optional server-readable features

Some optional features require server-readable content. A note has to be in this mode to participate in any of them:

These notes are marked separately in the UI and are converted by a device when the mode changes. Use device-encrypted sync for notes you want protected by your on-device encryption passphrase.

Where it runs

The backend runs on Swiss infrastructure (Hostpoint AG). The web app loads no third-party scripts, analytics, fonts, or trackers — only its own origin. Push notifications to iOS go through Apple's APNs (routing only; no note content).

The demo

The demo does not sync. Data stays in the browser's local database and can be reset from the demo controls.