- Go 60.4%
- Python 36%
- Shell 1.8%
- Makefile 1.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .github | ||
| cli | ||
| docs | ||
| gui | ||
| packaging | ||
| .gitignore | ||
| CHANGELOG.md | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| main.go | ||
| Makefile | ||
| Readme.de.md | ||
| Readme.md | ||
PlatinWarden
MIT fork of Goldwarden: a Bitwarden/Vaultwarden client for Linux with system-wide Auto-Type, SSH agent, and biometrics.
Goldwarden has been paused since 2025. PlatinWarden keeps the Go daemon and the GTK4 UI, and adds KeePassXC-style Auto-Type.
There is no first-party GUI for macOS or Windows. Those platforms ship the daemon and CLI only. Third parties can build a UI on the daemon API.
Differences from Goldwarden
- KeePass sequences such as
{USERNAME}{TAB}{PASSWORD}{ENTER}(custom fieldAuto-Type) - Window matching via
apptitle://WindowTitleand HTTP hosts in the window title (X11) - Portal restore token is stored mode
0600under~/.config/platinwarden/
Install (Linux)
Requirements: Go 1.22+, GTK4, libadwaita, PyGObject. The GUI needs system Python (/usr/bin/python3), not a venv without gi.
make deps-debian # prints the apt command
sudo apt install golang-go python3 python3-gi python3-gi-cairo python3-dbus python3-xlib \
gir1.2-gtk-4.0 gir1.2-adw-1 libgtk-4-1 libadwaita-1-0 xdotool pkg-config
User install (~/.local), including the app menu and autostart:
make install-user
# ~/.local/bin must be on PATH
platinwarden-gui
System-wide (packagers: PREFIX=/usr and DESTDIR=):
sudo make install PREFIX=/usr
sudo make install-polkit # biometrics; Polkit only reads /usr/share
platinwarden setup desktop # XDG autostart (GUI in the tray)
platinwarden setup browserbiometrics
PlatinWarden then appears in the application menu. Autostart runs platinwarden-gui --hidden (tray). Daemon only, without GUI:
systemctl --user enable --now platinwarden.service
Do not enable GUI autostart and the systemd unit together — both start the daemon.
Uninstall: make uninstall-user or sudo make uninstall PREFIX=/usr.
Arch: template in packaging/linux/PKGBUILD. Flatpak manifest: .github/de.vii86.platinwarden.yml.
make help lists targets. Without libfido2, Make builds with -tags nofido2. With libfido2: FIDO2=1 make build.
The GTK UI follows the system language (override with PLATINWARDEN_LANG=de or en). German and English ship with the app.
Release bundles
make dist-all writes archives to dist/release/:
- Linux
platinwarden-*-linux-{amd64,arm64}.tar.gz: daemon and GTK GUI. Unpack, then./bin/platinwarden-guior./install.shinto~/.local. - macOS
platinwarden-*-macos-{amd64,arm64}.zip:PlatinWarden.appwith the daemon. Double-click starts the CLI helper; there is no supported GTK UI. - Windows
platinwarden-*-windows-{amd64,arm64}.zip: daemon/CLI only.
make dist-all
Windows: platinwarden.exe daemonize, then CLI (vault, logins, ssh).
platinwarden setup (Polkit, desktop, browser biometrics) exists on Linux only.
macOS and Windows
Official UI is Linux/GTK4. macOS and Windows get a working daemon + CLI.
| Linux | macOS | Windows | |
|---|---|---|---|
| Daemon / CLI | yes | yes | yes |
| GTK GUI | yes | no | no |
| Auto-Type / tray | yes | no | no |
To drive the daemon from another app, use the daemon API. That document also lists GUI stacks that fit a third-party macOS or Windows frontend (Wails, Fyne, Tauri, Qt). PlatinWarden will not ship those UIs.
Development without installing
make build
./platinwarden daemonize
cd gui && python3 platinwarden_ui_main.py
The binary must be named platinwarden on PATH, in the repo root, or under /usr/local/bin. GTK Builder XML lives in gui/src/gui/ui/ — blueprint-compiler is optional (make gui).
On first start you must set a server URL (Bitwarden or Vaultwarden, without /api). Known servers and usernames are stored; the app reconnects to the last used server and can switch under Switch server.
Auto-Type
Bind a desktop hotkey:
dbus-send --type=method_call --dest=de.vii86.platinwarden.autofill \
/de/vii86/platinwarden de.vii86.platinwarden.Autofill.autofill
Store a sequence on an entry (CLI, or Ctrl+E in Quick Access):
platinwarden logins set-autotype --uuid UUID \
--sequence '{USERNAME}{TAB}{PASSWORD}{ENTER}' \
--window 'Firefox' \
--delay-ms 80
Placeholders: {USERNAME}, {PASSWORD}, {TOTP}, {TAB}, {ENTER}, {DELAY=ms}. Per-login key delay defaults to the global setting (40 ms). Auto-Type types keystrokes: docs/autotype.md. The in-app guide (hamburger menu → Auto-Type sequences) lists KeePass special keys.
Wayland uses the XDG RemoteDesktop portal (GNOME/KDE). X11 uses XTest.
SSH agent socket (native install):
export SSH_AUTH_SOCK=$HOME/.platinwarden-ssh-agent.sock
How this code is written
Most of the programming in this repository is done by an AI coding agent working in Cursor. Kilian Krockauer leads the project: he sets the direction, reviews the changes, and tests them on a real Linux desktop. That is the current split of work. Later parts of PlatinWarden may again be written by hand.
Provenance
Original Goldwarden copyright: Bernd Schoolmann (Quexten), MIT. See LICENSE.