macOS and Linux

fd0 Desktop

fd0 Desktop is the app for the same vault the CLI uses. It runs on macOS and Linux, keeps every item type in one searchable list, and reaches the vault through the local agent rather than around it.

Download fd0 Desktop →
Signed DMGs for macOS and AppImage, DEB, and RPM builds for Linux, on x64 and arm64. macOS releases are Developer ID signed and notarized; every release ships a Cosign-signed checksum manifest.

To let the app own the fd0 and fd0-agent commands as well, install it with the script instead. Full flags are on the install page.

$ curl -fsSL https://fd0.sh/install | sh -s -- --desktop

What the app holds

Everything fd0 stores, in the same scopes, on the same chains:

Passwords
Login items with typed fields — text, secret, TOTP with a live countdown, passkeys stored as data, and file attachments. Sections group fields inside one item.
General secrets
The plain name-and-value records behind fd0 secret set, editable in the same detail pane.
SSH keys and hosts
Host, user, port, notes, and the key each host authenticates with. The agent serves those keys over the standard ssh-agent protocol.
Kubeconfigs and Talos contexts
Cluster credentials alongside everything else, rendered to disk by the same sync that pulls them.
Sharing
Move an item into a shared scope and the scope's members get it on their next sync. Removing a member rotates the scope key.
History
Each item keeps its earlier versions and can be restored to one of them.

The app, screen by screen

How it reaches your secrets

The window you see has no Node.js, no filesystem access, no network access, and no direct connection to the agent socket. It talks to the Electron main process over a typed, allowlisted channel, which talks to a versioned Go bridge, which talks to fd0-agent — the same long-lived key holder the CLI uses. Clipboard writes, attachment exports, recovery files, and external links all cross a native handler.

A packaged app defaults to ~/.fd0, so the app and the CLI share one vault on the machine. Startup failures land in a recovery screen with retry, service repair, and redacted diagnostics — they never reset a vault.

Update and remove

Desktop updates itself from Support inside the app. In a Desktop-managed installation fd0 update opens that view and starts the same updater instead of writing into the signed bundle. Before installing an update, Desktop stops the running agent so the app, CLI, and agent cannot drift apart.

$ curl -fsSL https://fd0.sh/install-desktop | sh -s -- --uninstall

Uninstalling removes the app and the command wrappers it owns and restores any standalone fd0 commands it displaced. Your vault in ~/.fd0 is left alone. DEB and RPM installs are removed by the system package manager instead.