Vibeleaderboard
Index / app
Visit github.com
Category
Cybersecurity
Type
APP
Latest release
1.37.1
Added
May 1, 2026

About

An alternative server implementation of the Bitwarden Client API, written in Rust and compatible with official Bitwarden clients [disclaimer], perfect for self-hosted deployment where running the official resource-heavy service might not be ideal. [ ]

What it does

A single compiled binary that answers the HTTP protocol Bitwarden's phone, desktop and browser apps already speak, so those apps sync against a machine you control. Items live in SQLite, MySQL or PostgreSQL, chosen when the binary is built. On first start it generates a 2048-bit RSA key and signs every session token with it, using a different issuer per token purpose. The published images bundle a modified web front end. Two-factor methods, organizations, attachments, emergency access and an admin console all run inside that one process.

Why it's ranked here

The hardening reads like someone expecting attacks rather than checking a box. Unsafe code is forbidden across the workspace and warnings are denied. Login, admin and unauthenticated traffic each get their own per-IP limiter that answers 429. Outbound fetches refuse non-global addresses both before and after DNS resolution, cap redirects at five and revalidate the host on every hop. Password comparisons run in constant time. Against that: it tracks a protocol it does not own, so client releases set the pace, and one legacy SHA1-based signing helper is still in the tree.

What's good

Operationally it is undramatic, which is what you want from a vault. The recommended path is a published container image with one data volume, one HTTP port and a health check, and the project documentation gives a working compose file. Configuration comes from environment variables or a saved JSON file, with password fields masked when the config is printed back. The binary carries its own admin-token hasher with two Argon2id cost presets and a backup command that also fires on a signal. Integration tests run the whole stack against each supported database, plus a single sign-on scenario.

Tradeoffs

No database backend is enabled by default; the manifest asks you to turn at least one on before building. The bundled web client is a separate fork baked into the images, so trusting the image means trusting that build too. The client crypto requires a secure context, which means certificates and a proxy in front before anything works. The project is not affiliated with the vendor, its maintainers ask that bugs never go to vendor support, and they state plainly that they cannot be held liable for data loss and that you should keep your own backups.

How to use it well

This suits someone already self-hosting for a household or small team, who runs a reverse proxy, holds certificates and has a backup habit. It fits the workflow where you want the vendor's own phone and browser clients but not their hosted plan or their full server stack. Run the published image on a loopback port behind your proxy, generate the admin credential with the built-in hasher rather than pasting a plain token, and pick one database early because the choice is compile-time. It does not give you the client software, TLS termination, or an offsite backup plan.

Technical notes+

Cargo.toml declares AGPL-3.0-only, forbids unsafe_code and denies warnings for the workspace, and puts the mysql, postgresql and sqlite backends behind cargo features with an empty default set, alongside optional s3, OIDC and mimalloc features. src/main.rs is the entry point: it installs the rustls ring provider, handles the hash and backup subcommands with pico-args, initializes keys, builds the diesel pool, runs U2F to WebAuthn and credential to passkey migrations, then launches Rocket. src/auth.rs mints RS256 tokens from a 2048-bit key created on first run, with a separate issuer string per purpose and validity windows of two hours for access, thirty days for refresh and ninety for mobile. src/ratelimit.rs holds three governor limiters keyed by IP address. src/http_client.rs is the SSRF boundary: host validation, a configurable block regex, non-global address rejection in both pre_resolve and post_resolve, a custom hickory resolver, a five redirect cap that rechecks each hop, and a ten second timeout. src/crypto.rs uses ring PBKDF2-HMAC-SHA256 plus subtle for constant-time equality, and keeps an HMAC-SHA1 helper marked for legacy use. src/config.rs generates the whole config surface from a macro over environment variables and a saved config file, masking Pass fields as asterisks. docker/Dockerfile.debian is a generated multi-stage cross-compile landing on a Debian slim runtime with one exposed port, a data volume and a health check. playwright/README.md documents integration runs per database project and an SSO project against Keycloak. src/api/mod.rs merges organization master password policies into one effective policy. README.md carries the affiliation disclaimer and the data-loss warning.

Observed

License
AGPL-3.0-only, declared in the workspace manifest
Language
Rust, with unsafe code forbidden and warnings denied at workspace level
Storage backends
SQLite, MySQL or PostgreSQL, selected as a build feature, with none enabled by default
Install surface
Prebuilt container images on ghcr.io, docker.io and quay.io, or a source build
Runtime image
Debian slim base with one exposed HTTP port, one data volume and a health check script
Interfaces
HTTP API for Bitwarden clients, bundled web vault, admin backend, and a small CLI with hash and backup subcommands
Rate limiting
Separate per-IP limiters for login, admin and unauthenticated requests
Outbound requests
Non-global address blocking checked before and after DNS resolution, with every redirect revalidated
Session tokens
RS256 JWTs from a locally generated RSA key, with a distinct issuer per token purpose
Testing
Playwright integration suite with per-database projects and a single sign-on project against Keycloak
Optional features
S3-backed file storage, OIDC single sign-on, syslog logging, alternative memory allocator

Read from README.md, Cargo.toml, src/main.rs, src/api/mod.rs, src/ratelimit.rs, src/http_client.rs, src/crypto.rs, docker/Dockerfile.debian, playwright/README.md, src/config.rs, src/auth.rs.

What it can do

  • Store and manage passwords securely

    User passwords and login credentialsEncrypted password vault

  • Synchronize password data across devices

    Encrypted vault data from Bitwarden clientsSynchronized password database

  • Authenticate users for vault access

    User credentials and authentication requestsAuthentication tokens and session management

  • Provide self-hosted password management service

    Server deployment configuration and Docker containersRunning Bitwarden-compatible API server

  • Encrypt and decrypt sensitive data

    User vault data and encryption keysEncrypted/decrypted password entries and secure notes

  • Serve Bitwarden client API endpoints

    HTTP requests from official Bitwarden clientsAPI responses for vault operations

Tags

bitwardenbitwarden-rsdockerrocketrustvaultwarden

Tech Stack

RustDocker

Featured in Intel

Comments (0)

No comments yet

Indexed by a proprietary survey. Corrections welcome.