Usage

cpm supports creating, reading, updating and deleting passwords. You'll just create and read them most of the time, though.

Creating

You can ask cpm to generate a password for you and remember it using:

cpm create

You'll have to provide the machine and the user:

Machine: example.com
User: myuser
Generated password: 7U1FvIzubR95Itg

Specifying parameters can be useful if:

  • you want to avoid an interactive question for the machine
  • you want to specify a non-HTTP service
  • you want to avoid an interactive question for the user
  • you want to specify a password type
  • you have preferred password

Example for such usage:

cpm create -m example.com -s http -u myuser -t plain -p 7U1FvIzubR95Itg

When the machine is not yours, it can be e.g. the domain of a website.

If you try to insert a password twice (same machine, service, user and password type), you will get an error. You can update or delete a password, though (see below).

Reading

You can search in your passwords by entering a search term. You can do this interactively:

cpm

You'll have to provide a search term:

Search term: example.com
id:        1, machine: example.com, service: http, user: myuser, password type: plain, password: 7U1FvIzubR95Itg

The search term can also be specified as an argument if non-interactive mode is wanted.

Or you can specify parameters to create additional filters for the search:

cpm search -m example.com -s http -u myuser -t plain

The search term is already specified in this case:

id:        1, machine: example.com, service: http, user: myuser, password type: plain, password: 7U1FvIzubR95Itg

Archived passwords are not shown, unless -v or --verbose is used. The verbose mode also shows when the password was created and modified.

TOTP support

TOTP is one from of Two-Factor Authentication (2FA), currently used by many popular websites (Facebook, Mastodon, etc). Once a website asks you to scan a QR code for TOTP purposes, just ask for the TOTP shared secret and then add it to cpm using:

cpm create -m mymachine -u myuser -p "MY TOTP SHARED SECRET" -t totp

When searching, only the TOTP shared secret is shown by default:

cpm facebook
id:        1, machine: facebook.com, service: http, user: myuser, password type: plain, password: 7U1FvIzubR95Itg
id:        2, machine: facebook.com, service: http, user: myuser, password type: TOTP shared secret, password: ...

You can generate the current TOTP code using:

cpm --totp facebook
id:        2, machine: facebook.com, service: http, user: myuser, password type: TOTP code, password: ...

You can make this interaction easier using:

alias 2fa='cpm --totp'

And then you can generate the current TOTP code just by:

2fa facebook
id:        2, machine: facebook.com, service: http, user: myuser, password type: TOTP code, password: ...

Update and deletion

Update is quite similar to creation. If you want to update a password to a new, generated value, you can do so by using:

cpm update -p -

Notice the trailing hyphen.

You'll have to specify the ID:

Id: 2
Updated 1 password
Generated password: aDu3WwGlVP60HEn

You can also specify more parameters for cpm update:

cpm update -i 2 -p -

In which case the command is not interactive:

Updated 1 password
Generated password: Ilsd08zGov5JyBR

You can use cpm search to find the password ID.

The rest of the cpm update parameters allow explicitly setting the machine/service/user/type/password of an ID to a new, specified value.

Finally if you want to delete a password, you can do so by using:

cpm delete

You'll have to specify the ID:

Id: 2
Deleted 1 password

You can also specify a parameter for cpm delete:

cpm delete -i 2

In which case the command is not interactive:

Deleted 1 password

Again, you can use cpm search to find the password ID.

An alternative for deletion is to just mark the password as archived:

cpm update -i ... --archived true