![]() |
![]() |
|---|---|
This is a modern, fully rewritten browser extension for the Passman Nextcloud app, using the WXT framework.
It uses Svelte for the UI and TypeScript throughout.
The previous (legacy) extension source remains available on the legacy-v2 branch.
Try a Passman demo here to test the browser extension against.
- Ability to connect to a Nextcloud instance and Passman vault
- Extension popup (and options page)
- Show a list of all vault credentials (with search and automatic filtering for the current tab)
- Credential management (CRUD operations)
- Password generator
- Extension settings
- Auto fill form fields on websites (for a single matching credential)
- (using injected content scripts)
- Password picker (the password picker is a small in-page-popup that can be opened by clicking a small icon in detected input fields)
- Search / select a credential to fill the input field
- Add new credentials from the password picker
- Password generator
- Support for all Chromium-based browsers (Chrome, Vivaldi, Brave, etc.), the Firefox browser and its derivatives (like Waterfox, Floorp, etc.) supporting manifest v3
- Page rules
- Ability to overwrite global settings and extension behavior for a specific website
- Doorhanger
- After a successful login, prompts you to save or update the submitted credentials in your default vault
- Optional in-memory offline cache
- Required to support Firefox "Never remember history" profiles
- Not recommended for casual daily usage due to performance issues
- Passkey support (coming soon)
Passman is open source and lives from contributions like pull request, but we’ll also gladly accept a Club Mate or pizza!
Please consider donating:
Pull requests and issues are welcome. Fork the repo, make your changes, and open a pull request.
Take a look at to documentation for installation instructions: https://bun.sh/docs/installation
Bun is the recommended package manager for this project, but something like pnpm should also work well.
bun installIf you get something like this: Blocked 1 postinstall. Run 'bun pm untrusted' for details, you can just ignore it. All required packages that needs to be trusted are already declared at trustedDependencies in the package.json.
Sure, if you have build issues, run bun pm untrusted and the postinstalls with bun pm trust --all, but this should not be needed! - on my system it causes some issues with the build process (and ends in a segfault).
bun run devOpen your browser and load the appropriate development build. For example, if you are developing for the chrome browser, using manifest v3, use: .output/chrome-mv3-dev.
The extension will auto-reload as you make changes. You can start editing entrypoints in the src/entrypoints/ directory. To add an options page, create an entrypoint in src/entrypoints/options/. Likewise, content scripts go in src/entrypoints/content/.
For further guidance, visit the WXT Documentation
I recommend installing the Firefox Developer Edition or at least using another browser profile to get a clean development environment.
You can also use the Firefox development command:
bun run dev:firefoxOpen the about:debugging page in Firefox and load the .output/firefox-mv2-dev folder as temporary extension.
Note that the release version for Firefox is using manifest v3, but the development version is using manifest v2 due to "dev mode" compatibility reasons.
Run the following:
bun run build
bun run build:firefoxThis should create production bundles for the extension, ready to be zipped and published to the stores.
You can build and zip the extension using:
bun run zip # For Chrome/Chromium
bun run zip:firefox # For FirefoxThe built zip files will be in the .output/ directory. These are ready to be uploaded to the respective web stores or to be installed manually in the browser.
CI builds and tagged releases are handled by GitHub Actions (see .github/workflows/). Store submission on tags needs the ENV_SUBMIT repository secret (contents of a WXT .env.submit file).



