__ __ _ _ _ _
| \/ | ___ _ __ ___ | (_) |_| |__
| |\/| |/ _ \| '_ \ / _ \| | | __| '_ \
| | | | (_) | | | | (_) | | | |_| | | |
|_| |_|\___/|_| |_|\___/|_|_|\__|_| |_|
Monolith is a stateless password manager written in Go. It allows you to generate strong and secure password on the fly, without having to store it. Monolith allows you to have different passwords for each website/service by just remembering your master password. Monolith takes 3 main inputs: website, login, and master password. In addition, it also supports additional options such as custom password length and character sets.
Monolith currently uses PBKDF2 and the more memory-intensive Scrypt (pronounced "ess crypt") key derivation function to generate passwords, picked based on NIST and OWASP guidelines. Scrypt is used by default, but you can change this setting in the code.
The parameter used in Monolith is as follows
PBKDF2
- SHA-256 hash algorithm
- 600,000 iterations
Scrypt
- 2^14 (16 MiB) CPU/memory cost parameter
- 8 (1024 bytes) block size
- 5 degree of parallelism
- No Data Stored: Monolith doesn't store any of your data, ensuring the security of your passwords.
- No Internet Connection Needed: You don't need an internet connection to use Monolith, since it doesn't require synchronization.
- Customize Your Password: Monolith supports custom password length and allows you to choose character sets.
Clone this repository
git clone https://github.com/samuelchristlie/monolith
cd monolith
Build project using Go
go build -ldflags="-s -w -H=windowsgui -extldflags=-static" monolith.go
go build -ldflags="-s -w" monolith.go
The compiled build should be located in the current folder.
Prebuilt binary release is planned.
To run Monolith, simply open the executable. CLI version is planned.
Thanks to Patrick Gillespie for creating the ASCII text art tool used in this project https://patorjk.com/software/taag/
Thanks to Fyne for providing the UI toolkit used in this project https://github.com/fyne-io/fyne