ZeroMem

ZeroMem user guide

How to install ZeroMem on Windows and Android, set it up and use it. Buttons and menus are named as the app shows them in English. 中文版:零憶使用手冊

Three things to keep in mind: a forgotten passphrase cannot be recovered, a message to someone offline is not delivered, and chats are not kept after you lock or close the app.

Install

Windows (Windows 10 or later, 64-bit)

  1. In the download section, choose Download for Windows. You get a zip file.
  2. Right-click the zip, choose Extract All and open the folder. Nothing is installed and nothing goes into the registry; keep the whole folder, since the program needs the files next to it.
  3. Run zeromem.exe.
  4. The program is not signed yet, so Windows SmartScreen may say “Windows protected your PC”. Choose More info, then Run anyway.

Android (Android 10 or later)

  1. Open the download section on the phone and tap Download for Android.
  2. Open the downloaded APK. When Android asks, allow your browser to install apps, go back and tap Install.
  3. Some phones check the app first: Google Play Protect, or a “pure mode” or security scan on many phones sold in mainland China. Choose to go on installing; the wording depends on the brand.
  4. ZeroMem asks for the microphone at your first call and for the camera the first time you scan a code.

Optional: to be sure the file was not altered, compare its SHA-256 with the one shown in the download section (on Windows, PowerShell's Get-FileHash shows it).

Coming from an older version

Older versions can no longer connect: they say “This version can't connect any more. Please update the app.” or stay offline. Install the current version as above. Your identity, contacts and Circles come with you; chats never do.

ZeroMem v19 or v20

Unwritten or 零界 (the app's name up to v18)

A contact who still uses an old version cannot chat with you until they update.

First start

The first start shows the screen where you create your identity. You do this once; on another device you import the identity instead (see Moving to a new device).

  1. Type a passphrase of at least 8 characters and type it again under Enter it again. The eye shows what you typed.
  2. Username (how others find you): 3 to 20 lowercase letters, digits or underscores. If it is taken, choose another.
  3. Licence key: the key you received from us or from your organisation's administrator. One licence is for one person.
  4. Tap Create identity.

Leave Server settings as they are: the addresses are filled in. The language is chosen at the bottom of the screen (Follow system, English, 繁體中文) and at the top of Settings.

Your passphrase cannot be recovered: nobody, including us, can reset it. Choose one you will remember, or write it down and keep it somewhere safe.

Every later start asks for the passphrase. After five wrong passphrases the identity on this device is destroyed; below the field the app shows how many attempts are left.

Changing your username or licence key later

Device binding

ZeroMem binds the identity file to the device's security chip, or to the system key store where there is no chip, so a copy of the file cannot be opened on another device. This happens by itself: Settings → Protection and unlock → This device shows it.

Optional: a security key

A FIDO2 security key adds a second lock: the identity file then opens only with your passphrase plus the key. The key must support hmac-secret, for example a YubiKey 5 with firmware 5.7 or later, or a Nitrokey 3. Windows needs Windows 11 or a recent Windows 10; a phone needs NFC or a USB-C port.

  1. Settings → Protection and unlock → Add security key → Start, then enter your passphrase.
  2. Plug the key into the computer, or hold it against the back of the phone or plug it into its USB-C port. Enter the key's PIN (you are asked to set one if it has none) and touch the key, twice in all.
  3. Add a spare key the same way with Add spare key (up to four keys), and export a backup (see Moving to a new device). The backup needs only the passphrase: it is the way back if the keys are lost.

The key replaces the device binding: with a key and the passphrase, the identity opens on other devices too. To unlock, type the passphrase, tap Unlock, then present the key, enter its PIN and touch it. Remove security key lock goes back to the device binding.

Contacts

Add a contact

  1. Open the menu at the top left (on a phone, the pencil button too) and choose Add contact.
  2. Type their username in Their username or identity code. On a phone you can instead tap Scan QR code and scan the code on their My identity code page: a code scanned in person makes the contact verified at once. A code they sent you can be pasted; it starts with ZM2-.
  3. Add a Nickname (optional) if you like and tap Add. Finding a username can take a few minutes (“This can take a few minutes.”): wait, or tap Cancel.
  4. Your request goes out within a few minutes. They see it under New contact requests at the top of their chat list, usually within about ten minutes if they are online; if not, it waits for them up to 7 days. You can chat once they accept.

You can add about 16 people a day. Your own username and code are under My identity code in the menu; usually it is enough to tell people your username.

Requests

Tap New contact requests. For each request: Accept adds them, Ignore drops it, the block button (Block: never receive requests from this person again) blocks them, and the shield button (Check safety code) lets you compare safety codes before you answer. Names in requests are what each person calls themselves; “Not the name in your contacts” warns you of a request using a contact's name. Ignoring or blocking does not notify them.

Later, a contact's Contact info has Block and delete and Delete contact. To unblock someone: Settings → Block list → Remove.

Verify a contact in person

The safety code is a QR code and a 60-digit number that you and your contact each work out; they should be identical.

  1. In the chat, tap the contact's name at the top to open Contact info. The QR code and the 60 digits under Not verified are the safety code.
  2. On a phone, tap Scan their code and scan the code on their screen. Otherwise compare the 60 digits face to face, or over a call or message outside ZeroMem, then tap They match and Mark verified.
  3. A verified contact has a filled shield next to their name. Your contact checks on their side too.

If a code you scan does not match, the app says whose copy is wrong. When you compare the digits yourself, the app cannot tell: if they differ, you see it. Either way, do not mark the contact verified; check who they are in person first.

When a contact's identity changes

Chatting and files

The marks next to your own messages:

MarkMeaning
ClockStill waiting on this device to go out.
One tickSent, waiting for confirmation.
Double tickDelivered: the other device has it. It does not mean read. It usually appears within a few seconds to about twenty.
UnconfirmedNo confirmation came in time: it may or may not have arrived.
Not deliveredIt did not arrive.
2/3In a Circle: two of the three members who should confirm have it. It never says who.

Nothing is resent by itself. If your own one-to-one text is Not delivered or Unconfirmed, open its menu and choose Send again; the other side sees it only once.

Calls

Voice changer

The voice changer is on by default: what the other side hears and records is not your real voice, and it differs on every call. During a call, tap Voice changer on to switch it off; the button then says Voice changer off, and another tap switches it back on. The same switch is in Settings → Calls → Voice changer, and your choice stays for later calls.

Circles

Locking and security

Moving to a new device

Your identity lives on one device. To move it:

  1. On the old device: Settings → Export identity (for changing device). Enter your passphrase and save the .zsvault file. It holds your identity, contacts and Circles, encrypted with your passphrase.
  2. Take the file to the new device: a USB stick, email or a cloud drive will do, since the file is encrypted.
  3. Install ZeroMem on the new device. On the first screen, tap Already have an identity? Import from another device, choose the file, enter the same passphrase and tap Import.
  4. Then destroy the identity on the old device with Emergency destroy (not Delete account, which would remove your username). Use one identity on one device at a time.

Export first before you reinstall the operating system, clear the TPM, uninstall the Android app or reset the phone. Each of these leaves the identity file on the device impossible to open, and without an export it is lost.

Updates

Leaving

For organisations

An organisation buys a number of seats; one seat is one licence, for one member. Its administrator manages them at zeromem.site/org:

  1. Sign in with the Admin key we give you. The page keeps nothing: reloading or closing it, or ten minutes without activity, signs you out.
  2. Issue licences: choose How many (up to the free seats) and tap Issue. Each licence key is shown only once; hand it to its member, who types it into Licence key at first start.
  3. A member leaves: Revoke their licence and tick Also delete its usernames. The seat is free at once.
  4. A member lost their phone: revoke and issue them a new licence. If they exported their identity, they import it on the new phone and enter the new key in Settings → Server → Licence key → Save and reconnect (see Changing your username or licence key later); their username comes along. If they never exported it, they create a new identity with the new key: also delete their usernames, so they can take the name again. A member whose app says to ask the administrator to reset the seat needs Unbind (reset seat).
  5. Delete @name removes a username when its member asks for it.

The administrator sees the licences, the seats and the usernames. It cannot see messages, contacts, Circles or calls.

Troubleshooting

You seeWhat to do
“Connecting…” does not go away, or “Cannot reach the licence service. Check the server settings”Check the internet connection and that the device's time is right. The server addresses are filled in already; do not change them.
“Time on this device doesn't match the server. Turn on automatic time.”Turn on automatic date and time in the system settings. Once the time is right, the app connects within about a minute.
“This version can't connect any more. Please update the app.”Install the current version (see Updates). Your identity is not affected.
A contact shows OfflineThey need ZeroMem open and unlocked, and you must both have added each other. If they are using it and still show offline, open Contact info → Reconnect; they may need to tap it too.
A contact request does not arriveRequests go out within a few minutes and wait up to 7 days for someone offline. “Your contact request can't reach them yet.” means they are on an old version or have no username: ask them to update and choose one, or add each other by identity code.
“This licence is already bound to another identity”Ask your administrator, or us, to reset the seat.
“The licence is invalid, expired or revoked”At first start, check the key you typed. Later, your licence may have been replaced: ask your administrator, or us, for the new key and enter it as in Changing your username or licence key later.
Forgotten passphraseIt cannot be recovered, and we cannot restore your identity: nothing on our servers can open it, and an exported file needs the same passphrase. Tap Destroy this identity on the passphrase screen, create a new identity and add your contacts again. The new identity needs a licence key. If you still have yours, ask your administrator, or us, to reset your seat first. If not, ask for your old licence to be revoked with its usernames deleted and a new one issued; then you can take your username again.

Anything else: hello@zeromem.site.