{"id":21817031,"url":"https://github.com/jmhobbs/authy-cli","last_synced_at":"2025-10-23T23:31:44.128Z","repository":{"id":192572038,"uuid":"640130238","full_name":"jmhobbs/authy-cli","owner":"jmhobbs","description":"An alternative client for connecting to Authy","archived":false,"fork":false,"pushed_at":"2024-07-10T15:56:12.000Z","size":49,"stargazers_count":26,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-27T15:21:20.564Z","etag":null,"topics":["authy","crypto","totp"],"latest_commit_sha":null,"homepage":"https://velvetcache.org/2023/05/12/the-authy-backup-system/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jmhobbs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-05-13T04:55:09.000Z","updated_at":"2024-11-23T12:05:52.000Z","dependencies_parsed_at":"2024-11-27T15:51:12.219Z","dependency_job_id":null,"html_url":"https://github.com/jmhobbs/authy-cli","commit_stats":null,"previous_names":["jmhobbs/authy-cli"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmhobbs%2Fauthy-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmhobbs%2Fauthy-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmhobbs%2Fauthy-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmhobbs%2Fauthy-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jmhobbs","download_url":"https://codeload.github.com/jmhobbs/authy-cli/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248805298,"owners_count":21164270,"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","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":["authy","crypto","totp"],"created_at":"2024-11-27T15:38:54.384Z","updated_at":"2025-10-23T23:31:44.067Z","avatar_url":"https://github.com/jmhobbs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\n\n### ⚠️ Warning To New Users ⚠️\nRegistration does not currently work, the Authy API has changed.  Please see [this issue](https://github.com/jmhobbs/authy-cli/issues/2) for more information.\n\n---\n\nThe `authy-cli` tool is an alternative client for connecting to Authy.  It is meant for educational purposes only.\n\n# Installation\n\nIf you use Homebrew, you can install from the tap:\n\n```\n$ brew install jmhobbs/tools/authy-cli\n```\n\nOtherwise, you can install the binary manually from the [latest release](https://github.com/jmhobbs/authy-cli/releases)\n\n# Commands\n\n```\n$ authy-cli -help\nUSAGE\n  authy-cli [flags] \u003csubcommand\u003e\n\nSUBCOMMANDS\n  register  Register as a device on this account\n  sync      Sync your tokens from Authy\n  export    export \u003cfile\u003e\n  token     Get a OTP\n  list      List out all known tokens\n  unlock    unlock\n\nFLAGS\n  -har=false     Always write all HTTP requests to a HAR file, not just on error.\n  -password ...  Password to use for the storage files. Can also be set with AUTHY_CLI_STORAGE_PASSWORD environment variable.\n\n$\n```\n\n## register\n\nThe first step is to register `authy-cli` as a new device.\n\nYou should provide your contry code and phone number, with no dashes or spaces, numbers only.\n\n```\n$ authy-cli register 1 5558675309\n2023/05/12 20:35:43 Checking status of account 1-5558675309\n2023/05/12 20:35:43 Account ID is 123456\n2023/05/12 20:35:43 Device registration request sent to other devices via push\n2023/05/12 20:35:43 Please accept this request.\n2023/05/12 20:35:51 Registration approved!\nEnter Storage Password:\n2023/05/12 20:35:52 Registration complete!\n```\n\n\n## sync\n\nOnce registered, sync will pull down all your tokens and apps.\n\n```\n$ authy-cli sync\nEnter Storage Password:\n2023/05/12 20:09:15 Synced 31 tokens\n2023/05/12 20:09:15 Synced 6 apps\n```\n\n## list\n\nOnce synced, list will display all your tokens and apps in a concise format.\n\n```\n$ authy-cli list\nEnter Storage Password:\n[ Authenticator Tokens ]\n\n                Type |                        Name |         ID\n---------------------|-----------------------------|-----------\n              stripe | Stripe : nobody@example.com | 1111111111\n       authenticator |                        Blog | 2222222222\n              google |          nobody@exammple.co | 3333333333\n\n[ Authy Apps ]\n\n         Name |                       ID\n--------------|-------------------------\n   Cloudflare | 000000000000000000000000\n Code Climate | 111111111111111111111111\n     SendGrid | 222222222222222222222222\n```\n\n## token\n\nToken will take a token or app ID or Name and present the current and next token values.\n\n```\n$ authy-cli token 1111111111\nEnter Storage Password:\nEnter Backup Password:\nCurrent: 699902 (17s)\n   Next: 600695\n```\n\n## export\n\nExport will dump all of the information `authy-cli` holds as a JSON object into a file.  Use `-` to stream to stdout.\n\n```\n$ authy-cli export - | jq .\nEnter Storage Password:\n{\n  \"config\": {\n    \"authy_id\": 123456,\n    \"device\": {\n      \"id\": 654321,\n      \"secret_seed\": \"abcde\",\n      \"api_key\": \"abcde\"\n    }\n  },\n  \"tokens\": [\n    {\n      \"account_type\": \"slack\",\n      ...\n```\n\nOptionally, you can decrypt all your tokens during export with `-decrypt`.  Protect the export file you create, it is not secured, and anyone with this file can mimic your tokens, defeating MFA.\n\n```\n$ authy-cli export -decrypt - | jq .\nEnter Storage Password:\n{\n  \"config\": {\n    \"authy_id\": 123456,\n    \"device\": {\n      \"id\": 654321,\n      \"secret_seed\": \"abcde\",\n      \"api_key\": \"abcde\"\n    }\n  },\n  \"tokens\": [\n    {\n      \"account_type\": \"slack\",\n      \"decrypted_seed\": \"THISISACLEARTEXTTOTPSEED====\",\n      ...\n```\n\n## unlock\n\nUnlock will store your backups password on the config object, allowing you to get a token or plain text export without providing the password.\n\n```\n$ authy-cli unlock\nEnter Storage Password:\nEnter Backup Password:\n$ authy-cli token 1111111111\nEnter Storage Password:\nCurrent: 699902 (17s)\n   Next: 600695\n```\n\n# Storage\n\nYour Authy credentials and tokens are stored on disc in `$HOME/.authy-cli`.  They are encrypted with a storage password you set with AES.  See `store/store.go` for details.\n\n# Debugging\n\nThis tool is rough and ready, but fairly sturdy.  In the event of an error, it will attempt to write all of the API requests it handled into a HAR file.  This can be forced to write in non-error situations by passing the `-har` flag to any command which communicates with the API.\n\n```\n$ ./authy-cli sync -har\nEnter Storage Password:\n2023/05/12 20:40:05 Synced 31 tokens\n2023/05/12 20:40:06 Synced 6 apps\n2023/05/12 20:40:07 Writing all HTTP requests to 2023-05-12T20:40:01.har\n2023/05/12 20:40:07 !!! THIS HAR MAY CONTAIN SENSITIVE INFORMATION !!!\n$\n```\n\n# Password\n\nThere are two passwords involved in this application.  The Authy Backup Password, and the Authy CLI Storage Password.\n\nThe Authy Backup Password is the password used to secure your encrypted auth tokens which sync between devices.  This is created and lives external to the authy-cli.  It can be stored using the `unlock` command, or you can enter it whenever you are prompted.\n\nThe Authy CLI Storage Password is used to secure the data pulled from Authy at rest on your computer.  You will be prompted to create this password when complete the registration phase.  You can use the `-password` flag, or the `AUTHY_CLI_STORAGE_PASSWORD` environment variable to avoid entering it manually.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmhobbs%2Fauthy-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjmhobbs%2Fauthy-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmhobbs%2Fauthy-cli/lists"}