{"id":17054712,"url":"https://github.com/dominikwilkowski/vault","last_synced_at":"2025-10-15T14:27:29.342Z","repository":{"id":207135946,"uuid":"718478442","full_name":"dominikwilkowski/vault","owner":"dominikwilkowski","description":"An open source multi-platform password manager, written in Rust.","archived":false,"fork":false,"pushed_at":"2024-11-01T03:30:39.000Z","size":16772,"stargazers_count":20,"open_issues_count":11,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-12T17:09:24.293Z","etag":null,"topics":["gui","gui-application","password-manager","rust","rust-lang"],"latest_commit_sha":null,"homepage":"https://rustyvault.com/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dominikwilkowski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-11-14T06:51:22.000Z","updated_at":"2025-01-25T03:29:55.000Z","dependencies_parsed_at":"2023-12-22T00:58:45.629Z","dependency_job_id":"88287e37-73a1-470c-94c5-753b57046b2d","html_url":"https://github.com/dominikwilkowski/vault","commit_stats":null,"previous_names":["dominikwilkowski/vault"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/dominikwilkowski/vault","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominikwilkowski%2Fvault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominikwilkowski%2Fvault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominikwilkowski%2Fvault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominikwilkowski%2Fvault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dominikwilkowski","download_url":"https://codeload.github.com/dominikwilkowski/vault/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominikwilkowski%2Fvault/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276613190,"owners_count":25673398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-23T02:00:09.130Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gui","gui-application","password-manager","rust","rust-lang"],"created_at":"2024-10-14T10:15:33.789Z","updated_at":"2025-09-23T16:44:06.637Z","avatar_url":"https://github.com/dominikwilkowski.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://rustyvault.com/\"\u003e\u003cimg src=\"website/assets/logo-512.webp\" alt=\"Vault logo\" width=\"256\"\u003e\u003c/a\u003e\u003cbr\u003e\n\t\u003ca href=\"https://rustyvault.com/\"\u003erustyvault.com\u003c/a\u003e\n\u003c/p\u003e\n\n# Vault\n\n\u003e Discover this open source multi-platform password manager, crafted in Rust for\n\u003e top performance. It stays on your computer, featuring a heavily encrypted\n\u003e database that's easily accessible and boasts a user-friendly interface.\n\n## General\n\n- All edits and changes are non-destructive on secret fields\n- On first start the app generates a `vault_config.toml` file and asks you to pick a password\n- Once a password has been chosen the app creates a `vault_db.toml` file\n- Both files are saved by default in your app config folder determined by [`dirs`](https://github.com/dirs-dev/dirs-rs) and a sub folder called `rusty-vault`\n- The location of the `vault_db.toml` file can be changed in settings later (a change won't move the file but create a new file in the new location, the old file will persist in-line with our non-destructive policy)\n- The framework we use to render the GUI is [floem](https://github.com/lapce/floem)\n\n## Encryption\n\nWe generate a new salt for each new password, using `OsRng` and then take the\npassword + salt and hash it with \n[`argon2`](https://github.com/RustCrypto/password-hashes/tree/master/argon2).\nWe then use that hash to encrypt our database with\n[`aes-gcm-siv`](https://github.com/RustCrypto/AEADs/tree/master/aes-gcm-siv),\na pure rust implementation of the `AES-GCM-SIV` (Misuse-Resistant Authenticated\nEncryption Cipher) ([RFC 8452](https://datatracker.ietf.org/doc/html/rfc8452))\ncypher. The `nonce` is also generated with the same library and prepended to\nthe cypher string before we base64 it and save it into the `vault_db.toml` file.\n\nOn lock we make sure we\n[`zeroize`](https://github.com/RustCrypto/utils/tree/master/zeroize) all fields.\n\n## How to run\n\nThe project comes with a dummy database to make testing easier with real data.\nTo make sure you use that db over the system config db that would otherwise be\ninstalled automatically on the first run, run the app with the environment\nvariable `DEBUG` set.\n\n```sh\nλ DEBUG=true cargo run\n```\n\nThis will also allow you to run the database unencrypted which is not possible\nin \"normal\" mode.\n\n## Clearing memory when locked\n\nWe verify that the memory is clean when locked by running the below commands and\nlooking at the output.\n\n```sh\nλ DEBUG=true cargo run\nλ ps -e|grep vault\nλ lldb --attach-pid \u003cpip\u003e\n(lldb) process save-core \u003cpath\u003e\n(lldb) exit\nλ cat \u003cpath\u003e | strings | grep totally_secure_password\n```\n\n## How to contribute\n\nMake sure you run the following commands before sending us a PR:\n\n```sh\nλ cargo fmt -- -l\nλ cargo clippy\n```\n\nMake sure you address clippy warnings as it will fail CI.\nIt's ok to ignore clippy warnings where appropriate.\n\n## License\nCopyleft (c) 2023\nLicensed under the [GNU GPL-3.0-or-later](https://github.com/dominikwilkowski/vault/blob/main/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdominikwilkowski%2Fvault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdominikwilkowski%2Fvault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdominikwilkowski%2Fvault/lists"}