Choose a master password and a name for this device. There is no recovery — back up regularly.
This vault hasn't been used in this browser before. Enter the master password to register.
Sync is handled by your transport (cloud folder, Syncthing, Git, QR, or manual export). Tijori merges new device log files automatically on unlock.
Each device that has ever written to this vault appears below. Revoking a device invalidates all its future events.
Export a backup or import from another password manager.
Show this screen to the receiving device. The sequence loops — the other device can start scanning at any frame.
Tijori (तिजोरी, "strongbox") is a browser-native password manager. Your vault is a folder on your disk. Sync is your choice of transport. Nothing leaves the folder except what you explicitly export.
Tijori is a sibling of Rotor (TOTP). They share the same crypto primitives.
Click Create new vault, pick an empty folder, set a device name and master password. The vault is ready.
Click + Add in the vault view. Choose Login, Card, or Note. The entry is encrypted and appended to your device's log stream immediately.
Click ⎘ on any login row to copy its password. The clipboard self-clears after the configured timeout.
Type in the search box to filter entries live. Press / to focus search from anywhere. Esc clears and closes modals.
Each device writes only its own log file (tijori-events-<deviceId>.jsonl). Sync is the act of making all devices see all files. Tijori merges them on every unlock — deterministically, regardless of order.
Put the vault folder inside iCloud Drive, Dropbox, Google Drive, etc. Each device running Tijori points at its local copy. The cloud provider syncs files; Tijori merges on unlock.
Point Syncthing at the vault folder across devices. P2P, no cloud vendor.
Commit and push. Each device's log stream is a separate file, so git merge never conflicts on event logs (only if two devices edit the same file directly, which Tijori never does).
On the source device: Settings → Data → Send vault via QR. A sequence of QR codes loops on screen. On the receiving device: Import → QR sequence — point the camera at the screen. All frames are collected automatically; order doesn't matter. Fully offline, no cables.
Use Settings → Data → Export encrypted archive to pack the vault. Import it on another device via Import → Tijori archive.
Open the vault folder from the second browser. Tijori detects the new device, asks for the master password, emits a device_registered event, and merges.
tijori-meta.json — plaintext: KDF params, device roster.tijori-events-<deviceId>.jsonl — one file per device. Append-only, SHA-256 hash-chained.{"seq":1,"prev_hash":"genesis","ts":"…","device_id":"…","event_type":"entry_created","payload_ct":"…","nonce":"…"}
Union all events, sort by (ts, device_id), apply in order. Per-field last-writer-wins — each field carries its own timestamp, so two devices editing different fields of the same entry both win their field.