Passwords and 2FA codes your server can't read

SpiderPass is a self-hosted password and two-step-code manager. Everything is encrypted in your browser before it reaches your own server, so a stolen database is just noise.

Get started View on GitHub

Early development. Not independently audited yet.

The SpiderPass vault: a list of logins and a secure note with masked passwords, and folders, types and tools in a dark sidebar.

Everything in one vault

All of this is built and tested today.

Logins, notes, cards, identities

  • Folders, favorites and search
  • Trash with restore, emptied after 30 days
  • Password generator with a strength estimate

Built-in authenticator

  • Store the setup key of any site's two-step login
  • An Authenticator codes page shows every 6-digit code with a countdown
  • Codes also appear next to their login

Zero-knowledge security

  • Argon2id and AES-256-GCM in your browser
  • Two-step login for your own account, with a recovery code
  • Sign in with your email or a username
  • Sign out any device, change your master password

Forgot your password? You can still get back in

  • A recovery key is made when you sign up and shown once
  • An emailed reset link plus that key lets you choose a new master password and keep your whole vault
  • Without the key nobody can recover it, including the server

Share with family or a team

  • Organizations and collections
  • Owner, admin and member roles; view, edit or manage per collection
  • Invitations confirmed by an admin after comparing key fingerprints
  • Audit log of who did what

Password health

  • Finds weak and reused passwords
  • Optional breach check that never sends a password: only a 5-character hash prefix leaves your server

Import and export

  • Bring your vault from other managers' JSON exports, or any CSV file
  • Export as password-protected JSON, plain JSON or CSV
  • Leave any time

Chrome extension

  • Fills logins and one-time codes only when you ask
  • Never fills unencrypted pages, never offers a login to a lookalike domain
  • Locks automatically

Private by default

  • Sign-ups are closed: only people you invite can create an account
  • You sign in as the administrator like anyone else and get an admin shield in the app, with no separate admin page
  • Invite people by email, switch sign-ups on or off, disable or delete accounts

Email, when you want it

  • Set up SMTP in .env or in the admin panel, and send a test email
  • Invitations, reset links and notices (new-device sign-in, password changed, account disabled) arrive by email
  • Nothing is sent, and no mail server is needed, unless you set it up

Easy to run

  • Docker Compose, one SQLite file, tiny footprint
  • CI builds amd64 and arm64 images

Take a look

The sign-in screen: a spider hanging from a thread above an Unlock your vault form.
Sign in. The spider lowers itself on its thread.
The recovery key screen shown after sign-up: a 52-letter key in groups of four, with Copy and Download buttons and a box to confirm it was saved.
Your recovery key, shown once at sign-up
The Authenticator codes page showing a site's current 6-digit code with a countdown bar and a Copy button.
Authenticator codes, with a live countdown
An organization called Family with a Shared logins collection, and tabs for Collections, Members, Activity and Settings.
Organizations and collections
The Password health page listing weak passwords.
Password health
The new-login form with the password generator open, showing a generated password and options.
Password generator
The Security page with two-step login, master password and signed-in devices.
Account security and devices
The admin panel inside the app: a switch for open sign-ups, email server settings, and a list of invited people.
The admin panel, opened from the shield in the top bar

How your data is protected

  1. Your master password never leaves your device. It is stretched with Argon2id in your browser. Only a derived login key is sent to the server; the encryption key stays with you.
  2. Everything is encrypted before upload. A random vault key encrypts every item with AES-256-GCM. Your master password only wraps that key.
  3. Sharing stays private. Each organization has its own key, given to each member encrypted to their personal public key. The server only stores the encrypted copies.

Honest limits

The server can't reset a master password for you, because it never knows it. Keep your recovery key safe: with the emailed reset link it is the only way back in. Lose both the password and the key and nobody can open your vault.

A member you remove keeps any shared data their browser already downloaded, so change the secrets that mattered.

Email is optional. Someone who only reads your inbox can't open your vault, but someone with your inbox and your recovery key can reset your master password, so keep the key private.

The administrator can see accounts, counts and when people sign in, never vault contents.

SpiderPass has not had an independent security review. Treat it as early software.

Install in a few minutes

You need Docker with Compose.

  1. Get the code.
    git clone https://github.com/Fahed-Alhammadi/SpiderPass.git
    cd SpiderPass
    cp .env.example .env
  2. Set a secret key and your admin email. Open .env. Set SPIDERPASS_SECRET_KEY to a long random value (for example the output of openssl rand -base64 32); the server won't start without it. Set SPIDERPASS_ADMIN_EMAIL to your own address (or SPIDERPASS_ADMIN_USERNAME to a username); your admin password is not stored here, you choose it when you create the account. Keep a copy of this file somewhere safe.
  3. Start it.
    docker compose up -d --build
  4. Open it. Go to http://localhost:8080, choose Create a vault and use exactly your admin email, right after the first start. Save the recovery key it shows you. Then click the shield in the top bar to invite your family or team. New accounts are closed to everyone else, and the sign-in page stops offering "Create a vault"; invited people get a sign-up link by email.

Use HTTPS for anything beyond your own machine

Browsers only allow the encryption SpiderPass needs on https:// pages and on localhost. Put it behind a reverse proxy that provides HTTPS, for example with Caddy:

vault.example.com {
    reverse_proxy localhost:8080
}

and set SPIDERPASS_TRUST_PROXY=true. Back up the Docker volume and your .env. The README has the exact commands and every setting.

Chrome extension

It connects to your own server, decrypts on your device, and fills a login only when you click Fill, press Ctrl+Shift+L, or use the right-click menu. It never runs on pages by itself.

docker build --target extension-dist --output extension/dist .

Then open chrome://extensions, switch on Developer mode, choose Load unpacked, and pick the extension/dist folder. A Chrome Web Store listing is planned.

What's built and what's next

✓ Built

  • Accounts, sessions and devices
  • Encrypted vault, folders, trash
  • Two-step login and authenticator codes
  • Import, export, password health
  • Organizations, sharing, audit log
  • In-app admin panel and email invitations
  • Chrome extension

Planned

  • Mobile app
  • File attachments
  • Scan a QR code to add an authenticator key
  • Firefox and Safari extensions