A privacy-first, local-first password manager with cross-platform synchronization.
See the codeEnglish | 简体中文
oak-keyring is a privacy-first, local-first password manager with a keyboard-driven terminal UI.
Many password tools provide scriptable CLIs, but daily vault management also needs browsing, selection, confirmation, recovery, and status feedback. oak-keyring uses a full-screen TUI so those workflows stay interactive, keyboard-driven, and local.
The command-line binary is ok.

checksums.txt.ok --version.Preview builds are unsigned and not notarized. macOS may require manual approval.
brew tap openkeyring/oak-keyring
brew trust --formula openkeyring/oak-keyring/ok
brew install ok
Homebrew 6.0+ requires trusting non-official taps (macOS and Linux). See INSTALL.md for the exact error and alternatives.
npm install -g @openkeyring/ok
ok --version
git clone https://github.com/OpenKeyring/oak-keyring.git
cd oak-keyring
cp .env.example .env
# Edit .env and set OAK_GOOGLE_CLIENT_ID and OAK_GOOGLE_CLIENT_SECRET.
cargo build --release
./target/release/ok --version
Source builds embed Google OAuth2 configuration for sync. Use source builds for development or local inspection, and configure OAuth2 values explicitly.
[!TIP] Recommended: use a Nerd Font in your terminal so icons display correctly.
Start the app:
ok
On first run, create a vault, choose a strong master password, and save the recovery words somewhere safe. If both the master password and recovery words are lost, maintainers cannot recover your vault.
oak-keyring opens into a full-screen terminal interface. The main workflow is:
ok, then create a local vault on
first run or unlock an existing vault with your master password.Ctrl+K to enter
search mode, then Enter to keep the filtered result or Esc to cancel.c to copy the password field, u to copy the username
field, and p to reveal or hide password fields when available.n to create a new record and e to edit
the selected record outside trash.Ctrl+G, or use the generator when it appears inside record forms.Ctrl+P. Google Drive sync is
optional and still part of the preview boundary; after it is configured,
Ctrl+R triggers sync from the main screen.For the current website documentation, see openkeyring.com/en/docs/.
ok agent)ok agent runs an ssh-agent backend backed by the SSH keys stored in your
vault. Use it for ssh logins, git over SSH, and any tool that reads
SSH_AUTH_SOCK — the private key never leaves the oak-keyring process, and
your master password never reaches AI tools or scripts.
ssh / git / AI send sign requests over SSH_AUTH_SOCK; oak-keyring
signs in-process and returns only the signature.n) → type SSH → paste the public key and the OpenSSH
private key (with its passphrase if it has one).ok agent
It prompts for your master password, then prints the socket path, for example:
SSH_AUTH_SOCK=/run/user/1000/oak-keyring/agent.sock
In the shell where you run ssh / git, export that path:
export SSH_AUTH_SOCK=/run/user/1000/oak-keyring/agent.sock
ssh-add -l # lists the vault's SSH keys
ssh user@host # authenticates with the vault key — no ~/.ssh key file needed
git push # same mechanism for git over SSH
Tip: start ok agent once per session (or from your shell rc with a fixed
socket path) and export SSH_AUTH_SOCK, so SSH tools find it automatically.
| Flag | Purpose |
|---|---|
--only NAME | Expose only records whose name matches exactly (repeatable). |
--allow REGEX | Also expose records whose name matches the regex (union with --only). |
--idle-lock SECS | Shut down after this many seconds with no successful sign (default: never). |
Run ok agent --help for the full list.
SSH sign.ok and
ok agent can run at the same time against the same vault.Local owner-trust model: any process running as your user can already read your files, so the socket is
0600. The benefit over a plainssh-agentis that your SSH private keys stay encrypted at rest inside the vault and are never written to~/.sshas plaintext files.
ok agent runs in the foreground. Stop it with Ctrl+C or kill <pid>
(SIGTERM / SIGINT). On shutdown it locks the vault (zeroizes keys) and
removes the socket and pidfile.
ssh-add -l: "Could not open a connection" — SSH_AUTH_SOCK isn't
exported in this shell, or points at a stale path. Re-export the path the
agent printed.ssh-add -l lists nothing — no SSH key record in the vault, or all
filtered out by --only / --allow.ok agent is already up; stop
it first (or remove a stale .agent.lock in the data dir).ok agent clears a leftover socket on the
next start; you can also delete it manually.RLIMIT_MEMLOCK (see INSTALL.md).Welcome to the OpenKeyring community. If you need help, have questions, or want to discuss the project, use the official channels below.
Support is community-style and best effort. There is no formal SLA.
oak-keyring is pre-1.0 preview software (v0.8.0-preview.3).
mlock may need RLIMIT_MEMLOCK raised (see INSTALL.md).oak-keyring is local-first: the vault belongs to the user and is stored locally by default. Normal release builds use a SQLCipher-backed local database. The app uses a master password and recovery words for vault access and recovery.
The preview does not provide a hosted account recovery service. Keep recovery words and backups separate from the device running oak-keyring. Any sync features should be treated within the currently implemented product scope, not as a hosted custody model.
If you download release assets directly, verify checksums before running the binary. Report security issues through SECURITY.md and PRIVACY.md.
Rust
99.7%
A privacy-first, local-first password manager with cross-platform synchronization.
See the codeEnglish | 简体中文
oak-keyring is a privacy-first, local-first password manager with a keyboard-driven terminal UI.
Many password tools provide scriptable CLIs, but daily vault management also needs browsing, selection, confirmation, recovery, and status feedback. oak-keyring uses a full-screen TUI so those workflows stay interactive, keyboard-driven, and local.
The command-line binary is ok.

checksums.txt.ok --version.Preview builds are unsigned and not notarized. macOS may require manual approval.
brew tap openkeyring/oak-keyring
brew trust --formula openkeyring/oak-keyring/ok
brew install ok
Homebrew 6.0+ requires trusting non-official taps (macOS and Linux). See INSTALL.md for the exact error and alternatives.
npm install -g @openkeyring/ok
ok --version
git clone https://github.com/OpenKeyring/oak-keyring.git
cd oak-keyring
cp .env.example .env
# Edit .env and set OAK_GOOGLE_CLIENT_ID and OAK_GOOGLE_CLIENT_SECRET.
cargo build --release
./target/release/ok --version
Source builds embed Google OAuth2 configuration for sync. Use source builds for development or local inspection, and configure OAuth2 values explicitly.
[!TIP] Recommended: use a Nerd Font in your terminal so icons display correctly.
Start the app:
ok
On first run, create a vault, choose a strong master password, and save the recovery words somewhere safe. If both the master password and recovery words are lost, maintainers cannot recover your vault.
oak-keyring opens into a full-screen terminal interface. The main workflow is:
ok, then create a local vault on
first run or unlock an existing vault with your master password.Ctrl+K to enter
search mode, then Enter to keep the filtered result or Esc to cancel.c to copy the password field, u to copy the username
field, and p to reveal or hide password fields when available.n to create a new record and e to edit
the selected record outside trash.Ctrl+G, or use the generator when it appears inside record forms.Ctrl+P. Google Drive sync is
optional and still part of the preview boundary; after it is configured,
Ctrl+R triggers sync from the main screen.For the current website documentation, see openkeyring.com/en/docs/.
ok agent)ok agent runs an ssh-agent backend backed by the SSH keys stored in your
vault. Use it for ssh logins, git over SSH, and any tool that reads
SSH_AUTH_SOCK — the private key never leaves the oak-keyring process, and
your master password never reaches AI tools or scripts.
ssh / git / AI send sign requests over SSH_AUTH_SOCK; oak-keyring
signs in-process and returns only the signature.n) → type SSH → paste the public key and the OpenSSH
private key (with its passphrase if it has one).ok agent
It prompts for your master password, then prints the socket path, for example:
SSH_AUTH_SOCK=/run/user/1000/oak-keyring/agent.sock
In the shell where you run ssh / git, export that path:
export SSH_AUTH_SOCK=/run/user/1000/oak-keyring/agent.sock
ssh-add -l # lists the vault's SSH keys
ssh user@host # authenticates with the vault key — no ~/.ssh key file needed
git push # same mechanism for git over SSH
Tip: start ok agent once per session (or from your shell rc with a fixed
socket path) and export SSH_AUTH_SOCK, so SSH tools find it automatically.
| Flag | Purpose |
|---|---|
--only NAME | Expose only records whose name matches exactly (repeatable). |
--allow REGEX | Also expose records whose name matches the regex (union with --only). |
--idle-lock SECS | Shut down after this many seconds with no successful sign (default: never). |
Run ok agent --help for the full list.
SSH sign.ok and
ok agent can run at the same time against the same vault.Local owner-trust model: any process running as your user can already read your files, so the socket is
0600. The benefit over a plainssh-agentis that your SSH private keys stay encrypted at rest inside the vault and are never written to~/.sshas plaintext files.
ok agent runs in the foreground. Stop it with Ctrl+C or kill <pid>
(SIGTERM / SIGINT). On shutdown it locks the vault (zeroizes keys) and
removes the socket and pidfile.
ssh-add -l: "Could not open a connection" — SSH_AUTH_SOCK isn't
exported in this shell, or points at a stale path. Re-export the path the
agent printed.ssh-add -l lists nothing — no SSH key record in the vault, or all
filtered out by --only / --allow.ok agent is already up; stop
it first (or remove a stale .agent.lock in the data dir).ok agent clears a leftover socket on the
next start; you can also delete it manually.RLIMIT_MEMLOCK (see INSTALL.md).Welcome to the OpenKeyring community. If you need help, have questions, or want to discuss the project, use the official channels below.
Support is community-style and best effort. There is no formal SLA.
oak-keyring is pre-1.0 preview software (v0.8.0-preview.3).
mlock may need RLIMIT_MEMLOCK raised (see INSTALL.md).oak-keyring is local-first: the vault belongs to the user and is stored locally by default. Normal release builds use a SQLCipher-backed local database. The app uses a master password and recovery words for vault access and recovery.
The preview does not provide a hosted account recovery service. Keep recovery words and backups separate from the device running oak-keyring. Any sync features should be treated within the currently implemented product scope, not as a hosted custody model.
If you download release assets directly, verify checksums before running the binary. Report security issues through SECURITY.md and PRIVACY.md.
Rust
99.7%