A password manager that lives in your "terminal".
# initialize fa.
fa init
# add
fa add meow@isitayush.dev password # add a credential to the 'default' store.
fa add bingus@isitayush.dev password --store bingus_store # add a credential to the 'bingus' store.
fa add isitayush secret --site isitayush.dev --tag personal # add a credential with an associated site and/or a tag.
# list
fa list # list all credentials for the default store.
fa list --store bingus_store # list all credentials on bingus store.
# search
fa search meo # search for all credentials beginning with 'meow' on 'default' store
fa search bingus --store bingus_store # search for all credentials beginning with 'bingus' on 'bingus_store'
fa search meo --filter site/isitayush.dev # search for all credentials that match both the 'meow' filter and site 'isitayush.dev' filter.
fa search '' --filter site/isitayush.dev # search for all credetentials that match 'isitayush.dev' site.
fa search '' --filter tag/personal # search for all credentials that match the tag 'personal'
# remove
fa remove meow@isitayush.dev password # remove the credential from the store.
# store usage
fs store list # list all stores
fs store add spoingus_store # create a new store 'spoingus_store'.
fs store default spoingus_store # set the default store to 'spoingus_store'.
fs store remove spoingus_store # remove the spoingus store.
# export & import
fa import --csv-file ./mock/import/sample_data.csv # import credentails from sample_data.csv (the only required condition is that the csv must contain a username & a password column. it can also contain an optional url column. all other fields would be ignored)
fa export --csv-file ./mock/export/sample_export.csv # export credentials to sample_export.csv (this creates/overwrites the file for you).
# configuration
fa config # display the configuration utilized by 'fa'.
# other
fa store add -h # get help for a specific command
fa -V # print the version
- you'll need a gpg key id/fingerprint. read this blog till step 4.
- goto releases and download the latest version and extract the
fa
binary.linux
: put the binary in/usr/bin/
and runchmod +x /usr/bin/fa
. i'm assuming/usr/bin
is in your$HOME
variable. you can now, runfa init
on your terminal.mac
: put the binary inside the directory where you store your mac binaries (it has to be on path) and grant it perms to execute itself. i'm sorry, i don't own a mac so i don't know this one for sure.windows
: put it anywhere you like, copy it's location and add it to$PATH
environment variable and then open command prompt/terminal & runfa init
.
if possible! i'll make this easier for future releases.
- 'fa' after intialization, stores it's configuration at
$HOME/.config/fa/config.toml
.
# $HOME/.config/fa/config.toml
# this autogenerated when you run 'fa init'
[store]
base_path = "/home/ayush/personal/fa/allstores/"
default_store = "dibba"
[security]
gpg_fingerprint = "ABCDEF0123456789" # you can also use the full fingerprint
- use thiserror and tidy up slightly.
- better output and input
- create, remove and default store command.
- remove credential
- import and export (from a csv file)
- better internal data structure instead of
Hashmap<K,V>
. it might give me more ways to store more information. such as the- assocaited websites
- tags?
- post implementation note:
Credential
struct is meh but it works so i'm not complaining :3.
[ ] copy to clipboard...i'd add this if i ever planned on making a tui. i don't really need this rn.- generator
- better ci and possibly arm64/v8 build.
you can always put up a pr solving any of the above todo's or anything that you think is mising. if i think it's good. i'll merge it! just don't make huge changes without creating a discussion first. also, it's nice if you follow conventional commits. it's not a requirement tho but it helps.
it's MIT! if you still wanna read it checkout LICENSE.