{"id":16747065,"url":"https://github.com/selfup/moat","last_synced_at":"2025-10-18T07:19:08.089Z","repository":{"id":71266594,"uuid":"204846064","full_name":"selfup/moat","owner":"selfup","description":"Make your files safe before saving them to the cloud","archived":false,"fork":false,"pushed_at":"2019-09-09T02:12:55.000Z","size":1219,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-14T05:13:13.835Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/selfup.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-08-28T04:10:34.000Z","updated_at":"2024-06-19T07:44:58.465Z","dependencies_parsed_at":null,"dependency_job_id":"c853de99-c4cc-4726-a17f-1aba279ff612","html_url":"https://github.com/selfup/moat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/selfup/moat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfup%2Fmoat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfup%2Fmoat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfup%2Fmoat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfup%2Fmoat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/selfup","download_url":"https://codeload.github.com/selfup/moat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfup%2Fmoat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270794293,"owners_count":24646759,"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-08-16T02:00:11.002Z","response_time":91,"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":[],"created_at":"2024-10-13T02:09:02.172Z","updated_at":"2025-10-18T07:19:03.039Z","avatar_url":"https://github.com/selfup.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Moat\n\nMake your files safe before saving them to the cloud.\n\nNo passphrases to remember. Everything is generated for you.\n\n## In Development - POTENTIALLY UNSTABLE\n\n```\n$ moat -service=\"fixtures\"\nMoat path is: C:\\Users\\selfup\\Moat\nService path is: fixtures\\Moat\n\nLabel Key written to: C:\\Users\\selfup\\Moat\\moatlabel\nPrivate Key written to: C:\\Users\\selfup\\Moat\\moatprivate\nPublic Key written to: fixtures\\Moat\\moatpublic\nEncrypted AES Key written to: fixtures\\Moat\\moatkey\n\n$ echo \"wow this is going to be encrypted and saved to a cloud service directory\" \u003e\u003e ~/Moat/wow.txt\n\n$ moat -service=\"fixtures\" -cmd=push\nMoat path is: C:\\Users\\selfup\\Moat\nService path is: fixtures\\Moat\n\nEncrypted: C:\\Users\\selfup\\Moat\\wow.txt - to: fixtures\\Moat\\wow.txt\n\n$ moat -service=\"fixtures\" -cmd=pull\nMoat path is: C:\\Users\\selfup\\Moat\nService path is: fixtures\\Moat\n\nDecrypted: fixtures\\Moat\\wow.txt - to: C:\\Users\\selfup\\Moat\\wow.txt\n```\n\n## What does this do?\n\n1. Encrypts files to other directories\n1. Decrypts files from other directories back into your vault\n\nBy default `$HOME/Moat` or `%USERPROFILE%\\Moat` are used for your Vault. This ensures any file written here will be encrypted to any service directory you want (Dropbox/Google Drive/A USB device/etc..).\n\nTypically you would say something like: `-service=$HOME/Dropbox`\n\nAnd when you run `moat` it will encrypt files from your Vault to `$HOME/Dropbox/Moat`.\n\nYou can also define your own Vault path, but we can talk about that later.\n\n## How is this safe?\n\n1. Keys are randomly generated (passphrase, label)\n1. RSA 4096 (Public/Private Auth - Encryption for passphrase)\n1. AES 256 (Encrypts/Decrypts files)\n\n#### In your Vault:\n\nPrivate RSA key is stored. As well as a random 32 byte label.\n\n#### In your service directory:\n\nPublic RSA key as well as an encrypted (using said public RSA key) randomly generated 32 byte passphrase.\n\n#### Decryption/Encryption of files\n\nAll files are encrypted using a 32byte passphrase paired with a 32 byte label.\n\nYour 32 byte passphrase is encrypted using the Public RSA key before being stored in your service directory.\n\nThe 32 byte passphrase is decrypted using the Private RSA key in your Vault.\n\nAll files are decrypted using the 32byte passphrase paired with the local 32 byte label.\n\n## Custom Paths (Vaults)\n\n```\n$ moat -home=\"archive\" -service=\"fixtures\"\nMoat path is: archive\\Moat\nService path is: fixtures\\Moat\n\nLabel Key written to: archive\\Moat\\moatlabel\nPrivate Key written to: archive\\Moat\\moatprivate\nPublic Key written to: fixtures\\Moat\\moatpublic\nEncrypted AES Key written to: fixtures\\Moat\\moatkey\n\n$ echo \"wow this is going to be encrypted and saved to a cloud service directory\" \u003e\u003e archive/Moat/wow.txt\n\n$ moat -home=\"archive\" -service=\"fixtures\" -cmd=push\nMoat path is: archive\\Moat\nService path is: fixtures\\Moat\n\nEncrypted: archive\\Moat\\wow.txt - to: fixtures\\Moat\\wow.txt\n\n$ moat -home=\"archive\" -service=\"fixtures\" -cmd=pull\nMoat path is: archive\\Moat\nService path is: fixtures\\Moat\n\nDecrypted: fixtures\\Moat\\wow.txt - to: archive\\Moat\\wow.txt\n```\n\n## Help\n\n```\n$ moat -h\nUsage of moat:\n  -cmd string\n        OPTIONAL\n                main command\n                push will encrypt Moat/filename.ext to Service/Moat/filename.ext\n                pull will decrypt from Service/Moat/filename.ext to Moat/filename.ext\n                if no command is passed initial setup will be attempted\n                if Moat dir and Service/Moat dir exist nothing will be generated\n  -home string\n        OPTIONAL\n                Home dir (here you want Moat to be created at) - defaults to $HOME or USERPROFILE\n  -moat string\n        OPTIONAL\n                What you want Moat to be called - essentially Vault names\n  -service string\n        REQUIRED\n                Directory of cloud service that will sync on update\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselfup%2Fmoat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fselfup%2Fmoat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselfup%2Fmoat/lists"}