A secure command-line password manager written in Go that stores passwords locally using AES-256 encryption and protects access with a bcrypt-hashed master password.
This project was built to practice Go, cryptography, CLI application development, and clean software architecture.
- 🔒 AES-256 GCM Encryption
- 🔑 Master Password Authentication (bcrypt)
- 📁 Encrypted Local Vault
- ➕ Add Password Entries
- 📋 List Saved Accounts
- 👁 View Individual Entry
- ✏️ Update Existing Entries
- 🗑 Delete Entries
- 🔍 Search Entries
- 🎲 Secure Password Generator
- 📋 Copy Password to Clipboard
- 🎨 Colored Terminal Output
- ⚡ Interactive CLI using Cobra
password-manager/
│
├── auth/
│ ├── auth.go
│ ├── password.go
│ └── prompt.go
│
├── cmd/
│ ├── add.go
│ ├── list.go
│ ├── show.go
│ ├── update.go
│ ├── delete.go
│ ├── search.go
│ ├── generate.go
│ ├── copy.go
│ └── root.go
│
├── crypto/
│ ├── encrypt.go
│ └── key.go
│
├── generator/
│ └── generator.go
│
├── utils/
│
├── vault/
│
├── data/
│
├── main.go
├── go.mod
└── README.md
Clone the repository.
git clone https://github.com/artistic-programmer/GoVault.gitMove into the project.
cd GoVaultInstall dependencies.
go mod tidyRun the application.
go run .The first launch asks you to create a master password.
Create Master Password:
Confirm Master Password:
✓ Master password created successfully.
go run .go run . addor
go run . add \
--title GitHub \
--username anshu \
--password MyPassword123 \
--url https://github.com \
--notes "Personal Account"go run . listgo run . show <id>go run . update <id> --password "NewPassword123"go run . delete <id>go run . search <Title/Username/URL>go run . copy <id>go run . generateThe password generator supports creating custom passwords using the following options.
| Use Case | Command |
|---|---|
| Generate a default 16-character password | go run . generate |
| Generate a 24-character password | go run . generate --length 24 |
| Generate a 32-character password | go run . generate --length 32 |
| Generate a password without symbols | go run . generate --symbols=false |
| Generate a password without numbers | go run . generate --numbers=false |
| Generate a password without uppercase letters | go run . generate --upper=false |
| Generate a password without lowercase letters | go run . generate --lower=false |
| Generate a password using only lowercase letters | go run . generate --upper=false --numbers=false --symbols=false |
| Generate a password using only uppercase letters | go run . generate --lower=false --numbers=false --symbols=false |
| Generate a numeric PIN (6 digits) | go run . generate --length 6 --upper=false --lower=false --symbols=false |
| Generate an alphanumeric password (letters + numbers) | go run . generate --symbols=false |
| Generate a symbols-only password | go run . generate --length 12 --upper=false --lower=false --numbers=false |
| Generate a letters-only password | go run . generate --numbers=false --symbols=false |
| Generate a strong 64-character password | go run . generate --length 64 |
- AES-256 GCM Encryption
- bcrypt Master Password Hashing
- Cryptographically Secure Random Password Generator
- Password Input Hidden During Authentication
- Encrypted Local Storage
- No Cloud Storage
- Go
- Cobra CLI
- bcrypt
- AES-256 GCM
- fatih/color
- aquasecurity/table
- atotto/clipboard
- UUID
- Argon2 Key Derivation
- Remove
master.key - Export / Import
- Vault Backup
- Auto Lock
- Password Strength Meter
- Shell Auto Completion
- Unit Tests
- GitHub Actions
MIT License
Made with ❤️ by Artistic-Programmer
If you found this project useful, feel free to ⭐ the repository.








