Kaspa Forge
Documentation · Desk & keys

The Desk and the master key file

The Desk is the control room for all Kaspa Forge services — and, more importantly, it is a password manager for your keys. This page explains where your keys actually live, why one exported file is a lifetime backup, and what the server can and cannot see.

One encrypted profile

On your first visit the Desk asks you to invent a password. That password encrypts a single profile — the keys of your vaults, deals, listings and your personal Kaspa wallet — right in the browser, using the standard age format. The profile is always stored encrypted; every unlock, every money move, every export and import re-asks the password. Like a password manager — because it is one.

Where it livesThe primary encrypted copy lives in your browser's local storage, under the site's origin. If you explicitly enable Forge Sync, a safe projection is additionally stored as end-to-end encrypted ciphertext; separate protection keys are excluded.
Who knows the passwordOnly you. We never see it and cannot reset or recover it — there is no "forgot password" because there is no server-side account at all. The encrypted .age backup requires that same password; it restores a profile, but cannot reset or bypass a forgotten password.
Why it re-asksA password prompt on a new page or after a refresh is normal, not a bug: the profile sits encrypted until you unlock it.

The master key file: one backup, forever

"Export key file" in the Desk downloads your profile as an encrypted .age file. Store the file and the password separately — whoever has both can move your funds; whoever has one has nothing.

  1. The file covers future working keys, not just the past. The profile contains a master seed; ordinary keys for every new vault, deal, listing and chat are derived from it. Even a backup exported months ago can rediscover those records. A Safe alarm key stored in the full profile is the exception: export again after creating that Safe.
  2. On import, the Desk re-discovers your records. It derives your keys from the seed locally, then asks the server for the public data it already has (which vaults and deals exist) and rebuilds the list — "Restored from server". Private keys are never sent; the derivation happens in your browser.
  3. Import is always a merge. Old and new files can be loaded over each other; nothing gets overwritten silently (the wallet asks explicitly on conflict).
  4. Alarm-key storage is your choice. The safer default keeps it only on the alarm card, outside the key file. You can instead save it in the encrypted profile for convenience, making that file a single point of failure. In that mode, export a fresh .age copy after creating the vault: this full file is how you carry its alarm key to another device.

Forge Sync: an encrypted mirror between your devices

Forge Sync is optional and off by default for devices that already hold a copy of the same Desk profile. Open Settings → Forge Sync and enable it on each copy; the first creates the mirror and the others find it automatically. After that, use Sync manually or enable one-shot Auto-sync on unlock for a device. There is no periodic polling, and the server never receives your password or a readable profile.

  1. Old copies meet automatically. Copies made before Forge Sync existed derive the same Sync identity from the profile's original wallet anchor. You do not need a new post-enable export, and rotating your receive address does not change that identity.
  2. A new empty browser still needs recovery material. Import your .age key file first. A password alone cannot locate or decrypt the server mirror. Copies also need the same Desk password as the uploaded snapshot; a password mismatch is rejected without changing local data.
  3. The mirror is end-to-end encrypted and signed. The server stores only opaque ciphertext, a public authentication key, hashes, version numbers and timestamps. Versions form a signed chain. Manual Sync asks before merging divergent copies; Auto-sync merges verified incoming changes automatically with deterministic rules instead of replacing one device wholesale.
  4. Safe alarm keys stay separate. Wallet data, Safe hot/funding keys, deals, listings and chats can sync. Forge Sync never transfers a Safe alarm key, even when you chose to store it in the shared encrypted profile. The Safe itself may appear on another device after Sync, but that device cannot cancel a withdrawal until you import a current encrypted .age copy from the device holding the alarm key (or use its separate alarm card).
  5. Device-level revoke is not available right now. Copies of one profile share the same Sync credentials. Treat a lost device that held an unlocked or recoverable profile as a key-security incident; Sync cannot remotely lock that copy.
  6. Sync is not your backup. Keep an independent offline .age export and its password separately. Forge Sync is a convenience and continuity layer, not a replacement for recovery you control.

The built-in wallet

Receive / balance / sendThe profile has its own Kaspa address — the handiest way to fund vaults and deals directly ("To safe" does the whole two-step funding route in one click).
"New address"Generates a fresh receive address (privacy: don't show one address to every counterparty). Derived from the master seed — your existing backup already covers it.
One wallet balanceOld receive addresses keep working and their UTXOs are included in the same spendable balance. Send, Max and “To safe” can use funds from every address directly; no sweep is required. Funded addresses created on another device are discovered from the master seed automatically.
"Wipe from device"For shared computers: fully deletes the profile from this browser (two confirmations; an extra-hard warning if no backup was ever exported). Everything comes back by importing the .age file elsewhere.

If this site is gone: the offline decryptor

Your backup must not depend on our website existing. From the Recovery page you can download kaspa-keyfile-decrypt.html — a single ~3 MB HTML file. Open it from disk with the internet off, load your .age file and password — it shows every private key stored in that full file with zero network requests. An alarm key kept on a separate card is absent by design. The file is standard age, so the CLI age -d keyfile.age works too, and the tool is mirrored in the open-source repo.

Security: what the server sees

  1. Never sent in readable form: your password, private keys or seed. All cryptography — key generation, transaction signing, chat encryption and Forge Sync encryption — runs in your browser (WASM and WebCrypto).
  2. Sent to the platform: public keys and public parameters (needed to compute covenant addresses and watch them), signed transactions for broadcast, and — if you opt in — an heir's email or Telegram link for alerts. The separate Sync service receives only the opaque encrypted mirror and signed metadata described above.
  3. The origin matters. The profile is stored under the site's address. Enter your password and keys only on kaspaforge.org — check the address bar; lookalike domains are phishing. Our old addresses (safe.officeforge.co, escrow.officeforge.co) simply redirect here.
  4. Do not treat Sync as recovery. If every profile copy and your key file are gone, the password alone cannot recover the mirror and we cannot reset access. Export the file, keep it apart from the password, and rehearse an import on a small amount.

What we will never ask for

Your Desk password, a private key, a seed phrase or your master key file — anyone who asks is a scammer.

Support can explain steps, but physically has no access to keys or coins. The key file does not give OfficeForge access to anything — it exists for you alone.

Next: how Kaspa Safe works · how Kaspa Escrow works · how the Marketplace works