A Firefox password manager extension powered by pass (the standard Unix password manager).
FirePass bridges your Firefox browser with your existing pass password store, allowing you to:
- π Access your passwords directly from Firefox
- π Search and filter credentials
- β¨ Auto-fill login forms
- β Save new credentials to your pass store
- π² Generate secure passwords
- β¨οΈ Use keyboard shortcuts for quick access
The project consists of two main components:
- Firefox Extension (
extension/) - Vue 3 based browser extension - Native Host (
backend/) - Go application that communicates with pass
- pass installed and configured with GPG
- Go 1.21+ (for building the native host)
- Node.js 18+ (for building the extension)
- Firefox 91+
# Clone the repository
git clone https://github.com/yourusername/firepass.git
cd firepass
# Build everything
make build
# Install the native messaging host
make install-native-hostcd backend
go build -o firepass ./cmd/mainCopy the binary to a location in your PATH:
sudo cp firepass /usr/local/bin/
# or for user-local installation:
mkdir -p ~/.local/bin
cp firepass ~/.local/bin/Create the native messaging manifest:
mkdir -p ~/.mozilla/native-messaging-hosts/
# Edit the path in the manifest to point to your firepass binary
cat > ~/.mozilla/native-messaging-hosts/com.firepass.host.json << EOF
{
"name": "com.firepass.host",
"description": "FirePass Native Messaging Host",
"path": "/usr/local/bin/firepass",
"type": "stdio",
"allowed_extensions": [
"firepass@example.com"
]
}
EOFcd extension
npm install
npm run build- Open Firefox and navigate to
about:debugging - Click "This Firefox" in the sidebar
- Click "Load Temporary Add-on..."
- Navigate to
extension/dist/and selectmanifest.json
For permanent installation, you'll need to sign the extension through Mozilla Add-ons.
Click the FirePass icon in your toolbar to:
- View credentials for the current website
- Search all stored passwords
- Add new credentials
- Copy passwords to clipboard
| Shortcut | Action |
|---|---|
Ctrl+Shift+P / Cmd+Shift+P |
Open FirePass popup |
Ctrl+Shift+L / Cmd+Shift+L |
Auto-fill credentials |
FirePass reads and writes credentials in the standard pass format:
mysecretpassword
username: user@example.com
url: https://example.com
notes: Additional notes here
The first line is always the password. Subsequent lines can contain metadata in key: value format.
cd backend
# Run tests
go test ./...
# Build
go build -o firepass ./cmd/main
# Format code
go fmt ./...cd extension
# Install dependencies
npm install
# Development mode with hot reload
npm run dev
# Build for production
npm run build
# Lint code
npm run lintfirepass/
βββ backend/
β βββ cmd/
β β βββ main/
β β βββ main.go # Entry point
β βββ internal/
β β βββ domain/
β β β βββ credential/ # Credential aggregate
β β β β βββ credential.go # Entity and value objects
β β β β βββ repository.go # Repository interface
β β β βββ errors.go # Domain errors
β β βββ application/
β β β βββ dto/
β β β β βββ messages.go # Data transfer objects
β β β βββ service/
β β β βββ credential_service.go # Application services
β β βββ infrastructure/
β β βββ pass/
β β β βββ repository.go # Pass store implementation
β β βββ messaging/
β β βββ handler.go # Native messaging handler
β βββ native-messaging/
β β βββ com.firepass.host.json # Manifest template
β βββ go.mod
βββ extension/
β βββ src/
β β βββ popup/ # Vue popup UI
β β β βββ components/ # Vue components
β β β βββ services/ # Messaging service
β β β βββ App.vue
β β β βββ main.js
β β β βββ index.html
β β βββ background/
β β β βββ background.js # Background script
β β βββ content/
β β βββ content.js # Content script for autofill
β βββ public/
β β βββ manifest.json # Firefox manifest
β β βββ icons/
β βββ package.json
β βββ vite.config.js
βββ Makefile
βββ README.md
- GPG Integration: FirePass relies on your existing GPG setup. Ensure your GPG agent is properly configured.
- Clipboard: Passwords copied to clipboard are automatically cleared after a configurable timeout (default: 30 seconds).
- Native Messaging: Communication between the extension and native host uses Firefox's secure native messaging protocol.
- No Remote Storage: All passwords remain in your local pass store.
-
Verify the native host is installed:
which firepass
-
Check the manifest exists:
cat ~/.mozilla/native-messaging-hosts/com.firepass.host.json -
Verify the path in the manifest matches your firepass installation.
-
Ensure
passis working:pass ls
Initialize your pass store if you haven't already:
pass init <your-gpg-key-id>- Check the browser console (
Ctrl+Shift+J) for error messages - Ensure you're loading from the
dist/directory, notsrc/
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source. See LICENSE file for details.