Quick Start
Set up your Kosh vault and store, retrieve and manage your first credential in a few minutes.
Kosh is a local-first, end-to-end encrypted, offline-only CLI password manager. You own your data — nothing ever leaves your machine.
This guide takes you from a fresh install to a working vault. It should take about five minutes.
Set up your vault
Section titled “Set up your vault”-
Initialize the vault
Section titled “Initialize the vault”Kosh stores everything in an encrypted SQLite file under
~/.kosh. Create it with:Terminal window kosh initYou will be prompted for a master password, twice. This password is combined with a random salt and fed through Argon2id to derive the key that encrypts your vault’s private key.
(default) [?] enter master password:(default) [?] confirm master password:(default) [✓] vault initialized successfullyThe
(default)prefix is the active profile. Every line Kosh prints carries it, so you always know which vault you are talking to.kosh initis safe to re-run — if the vault already exists it reportsvault already initializedand exits without touching your data. -
Add your first credential
Section titled “Add your first credential”Terminal window kosh addEverything is collected through interactive prompts, so no secret ever reaches your shell history:
(default) [?] enter master password:(default) [?] enter credential label: github(default) [?] enter credential user: alice(default) [?] enter credential secret:(default) [?] confirm credential secret:(default) [✓] credential saved successfullyA credential is identified by its label and user together, so one label can hold several accounts —
github/aliceandgithub/alice-workare two distinct entries. -
Let Kosh generate a password instead
Section titled “Let Kosh generate a password instead”Rather than inventing a password yourself, have Kosh generate a cryptographically random one and store it in a single step:
Terminal window kosh generate github alice-workThe generated secret is copied to your clipboard and encrypted into the vault. It is never printed to the terminal.
Terminal window # 32 characters, no symbolskosh generate -l 32 --symbol=false server root# a throwaway password — clipboard only, nothing savedkosh generate --no-save -
See what you have stored
Section titled “See what you have stored”Terminal window kosh listID Label User Access Count Last Used Last Updated Created At-- ----- ---- ------------ --------- ------------ ----------01 github alice 005 times 02d 04h ago 14d 06h ago Mon, 21 Jul 2025 14:02:11 IST02 github alice-work 000 times never just now Tue, 05 Aug 2025 09:11:47 ISTkosh listshows metadata only — no secret is ever decrypted here, which is why it does not ask for your master password. TheIDcolumn is whatupdate,deleteandcopytake as their argument. -
Retrieve a credential
Section titled “Retrieve a credential”If you know the exact label and user, use
get:Terminal window kosh get github aliceIf you only remember part of it, just type it — any argument that is not a subcommand is treated as a search query:
Terminal window kosh githubEither way Kosh asks for your master password, decrypts the secret, and copies it to your clipboard:
(default) [?] enter master password:(default) [✓] credential copied to clipboardSecrets are never printed to the terminal. They only ever go to the clipboard.
-
Try the interactive search
Section titled “Try the interactive search”Run
koshwith no arguments at all:Terminal window koshThis opens a live picker — type to filter your vault, press
enterto select. Kosh’s search tolerates typos and abbreviations, sogpatfindsgit_personal_access_token.
Where your data lives
Section titled “Where your data lives”Directory~/.kosh/
- config.json which profile is active —
{"active_profile":"default"} Directoryprofiles/
- default.db your encrypted vault
- config.json which profile is active —
~/.kosh is created with 0700 permissions and config.json with 0600. Nothing else is written
anywhere, and Kosh makes no network requests at any point.
Keep work and personal separate
Section titled “Keep work and personal separate”Everything above operated on the default profile. A profile is a separate vault, with its own
file, its own master password, and its own credentials:
kosh profile create work # creates it, switches to it, sets its master passwordkosh add # this now goes into the work vaultkosh use default # switch backProfiles are cryptographically isolated — unlocking one gives you no access to another.