{"id":37171677,"url":"https://github.com/mashmb/1pass","last_synced_at":"2026-01-14T20:01:54.172Z","repository":{"id":57580198,"uuid":"358902471","full_name":"MashMB/1pass","owner":"MashMB","description":"1Password Linux CLI explorer","archived":false,"fork":false,"pushed_at":"2021-05-15T15:41:57.000Z","size":2614,"stargazers_count":9,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2024-06-22T15:39:50.203Z","etag":null,"topics":["1pass","1password","cli","explorer","linux","opvault","opvault-format"],"latest_commit_sha":null,"homepage":"","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/MashMB.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-04-17T14:38:58.000Z","updated_at":"2023-05-26T21:54:11.000Z","dependencies_parsed_at":"2022-09-26T17:50:46.431Z","dependency_job_id":null,"html_url":"https://github.com/MashMB/1pass","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/MashMB/1pass","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MashMB%2F1pass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MashMB%2F1pass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MashMB%2F1pass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MashMB%2F1pass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MashMB","download_url":"https://codeload.github.com/MashMB/1pass/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MashMB%2F1pass/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28434130,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["1pass","1password","cli","explorer","linux","opvault","opvault-format"],"created_at":"2026-01-14T20:01:53.525Z","updated_at":"2026-01-14T20:01:54.165Z","avatar_url":"https://github.com/MashMB.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 1Pass - 1Password Linux CLI explorer\n\n1Pass is a command line application that allows to explore 1Password [OPVault](https://support.1password.com/opvault-design/) \nformat. Application was created because there is no official 1Password desktop client for Linux users. Only official \ndesktop application allows for local passwords store in [OPVault](https://support.1password.com/opvault-design/) format. \nAs a long term 1Password user, I don't want to change my passwords manager for anything else only because I am working \non Linux. For me it is really important to have choice where to store my passwords. I don't feel comfortable with my \npasswords in the cloud. So here is the solution. Before I made the application, every time when I forgot password, I needed \nto use my phone to check how it goes in passwords manager. Now I can do it on a Linux PC. What is more, I can do it in \nLinux way - using CLI only.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/gif/1pass.gif\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/gif/1pass-categories.gif\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/gif/1pass-list.gif\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/gif/1pass-details.gif\"\u003e\n\u003c/p\u003e\n\n## Installation\n\nApplication is available only for Linux x86_64. Right now it is distributed as binary only. Installation process:\n\n1. Go to [GitHub releases](https://github.com/mashmb/1pass/releases) section and download the newest release. \n2. Extract downloaded archive in desired location.\n3. Run extracted binary.\n\nIf application do not run, it is probably permissions problem. Try *chmod 755 1pass*, this should resolve permissions \nproblem. \n\nFor more comfy usage, binary can be added to **$PATH** (in .bashrc file):\n\n```\nEXPORT PATH=[path_to_binary_directory]:$PATH\n```\n\nRecommended way is to unpack downloaded archive in */usr/bin* location. It will automatically make binary executable \nfrom terminal with typing just **1pass**.\n\n**IMPORTANT**: release 1.1.0 introduced update service for application (details below)\n\n## Application updates\n\nFrom release 1.1.0, application has implemented GitHub updates mechanism. Application automatically checks for new updates \nand notifies user about pending one. Application is not updating without user permission. To start update, run:\n\n```\n1pass update\n```\n\nIt is recommended to give application root permissions during update because it is working on computer file system.\n\nWhole update process:\n\n1. Check if there is new release on GitHub.\n2. Download newer release to temporary directory (with checksums).\n3. Extract downloaded archive.\n4. Compare checksums.\n5. Replace running binary.\n6. Clean cache (temporary files and directories).\n\n## Configuration\n\nFrom release 1.1.0, application has implemented interactive configuration tool. From release 1.2.0, application is \nprompting user for configuration on first run (the most important is default OPVault path to skip writing it ad-hoc). \nWhole configuration process relies on questions answering. \n\nThis is detailed description of all available settings:\n\n```\n1. Do you want to set default OPVault path? ([default_answer]) [y - for yes/n - for no]: \n   Default OPVault path ([previous_value]): \n\nThis setting allows to set default OPVault path. Configured path will be used by default if flag -v is not given to \ncommand.\n\nDefault value: \"\"\n```\n\n```\n2. Update notifications? ([previous_value]) [y - for yes/n - for no]: [value]\n\nDecide if update notifications should be displayed. Type 'y' if yes or 'n' if no.\n\nDefault value: y\n```\n\n```\n3. Update HTTP timeout in secods ([previous_value]) [1-30]: [value]\n\nSet HTTP timeout for updates. This setting defines how long application should try to connect with GitHub for update \ncheck. Slower internet connection will need bigger value. Value should be in range from 1 to 30 seconds.\n\nDefault value: 1\n```\n\n```\n4. How often check for updates in days ([previous_value]) [0-365]: [value]\n\nSet how often application should check for updates. Value is specified in days and should be in range form 0 to 365. \nIf 0 is set, application will check for update on every run.\n\nDefault value: 1\n```\n\n## Usage\n\n1Pass is a command line tool, so usage is limited to command variations. First of all type:\n\n```\n1pass\n```\n\nCommand should launch application in GUI mode. Application can work in command line only mode also (without GUI). \nProvided commands:\n\n```\n1pass configure\n1pass categories\n1pass list [-c \u003ccategory\u003e] [-n \u003cname\u003e] [-t] \u003cpath\u003e\n1pass overview [-t] \u003cuid\u003e \u003cpath\u003e\n1pass details [-t] \u003cuid\u003e \u003cpath\u003e\n1pass update\n1pass version\n```\n\n1. **configure** - interactive application configuration (answer the questions), use help command to see what can be configured\n2. **categories** - display list of OPVault item categories (for filtering purposes)\n3. **list** - display list of items stored in OPVault\n4. **overview** - display overview of item without sensitive data\n5. **details** - display details of item with sensitive data\n6. **update** - check for update and upgrade **1pass**\n7. **version** - check actual **1pass** version\n\nLegend:\n\n- **uid** - unique UID of item (obtained with **list** command)\n- **path** - path to 1Password OPVault\n- **-c** - filter items over category\n- **-n** - filter items over name/title\n- **-t** - work on trashed items (archived)\n\n## What is new?\n\n- (FIX) [GUI] Notes padding for item details\n- (FIX) [GUI] Notes padding for item overview\n- (FIX) [GUI] Invalid password loop (application will not exit after displaying invalid password error)\n- (FIX) [CLI] Inline update confirmation\n- (FIX) [CLI] Notes padding for item details\n- (FIX) [CLI] Notes padding for item overview\n- (FIX) [CLI] Accept more reasonable update timeout during configuration (in range from 1 to 30 seconds)\n- (FIX) [CLI] Update check can be shifted for one year maximum\n- (FIX) [CLI] No configuration abort on invalid values (continue with actual state)\n- (FIX) [API] Default update timeout set to 1 second\n- (FIX) [API] Clear cache (temporary directory) before update\n- (FIX) [API] Do not parse fields with value but without name\n\n## Releases\n\nVersions of last five releases:\n\n- 1.3.1\n- 1.3.0\n- 1.2.0\n- 1.1.0\n- 1.0.0\n\n## What next?\n\nAll actual work on project can be tracked in [GitHub issues](https://github.com/MashMB/1pass/issues) or \n[GitHub projects](https://github.com/MashMB/1pass/projects/1).\n\n## Contribution guide\n\nBelow you will find instructions how to contribute without changing my software developing workflow. All other type of \ncontribution or contribution that do not follow rules, will be \"banned\" out of the box.\n\n## Bugs\n\nWho likes bugged software? Probably no one. If you will find any bug in application I will be really thankful. Bugs can \nbe reported with [GitHub issues](https://github.com/MashMB/1pass/issues). For the proper development cycle, I want to \ninvestigate reported bug. I also want to reproduce it and prepare technical description of issue to resolve it in next \nrelease. According to that, bugs should be reported with **Bug** issue template and **bug** label. If I will reproduce \nthe bug and find fix for it, issue will be linked to issue with **bugfix** label - ready to work in next releases.\n\n## New feature or change request\n\nI am always opened for new ideas. New feature or change request can be reported with [GitHub issues](https://github.com/MashMB/1pass/issues). \nThere is special template named **Request** and **request** label. I will discuss this type of issues. If feature request/change \nis accepted, it will be linked with issue that has **feature** label - ready to implement in next releases.\n\n## Pull requests\n\nIt is really great if you want make some changes by yourself in my code base. First of all, some bureaucracy. Before you \nopen issue, try to understand existing code. As you can see, this is multi module Go lang project in single GIT repository. \nDo you know why? I am really big fan of hexagonal software architecture because it is easier to control changes in external \ndependencies, core code base is a clear language (Go lang without dependencies), code is hermetic and easy to maintain. \nEven if it is overkill for small projects like this, it is my weapon of choice.\n\nHow architecture looks like right now?\n\n- **1pass-core** - core of the application (no external dependencies), business logic\n- **1pass-parse** - parsing component used to read data from [OPVault](https://support.1password.com/opvault-design/) format\n- **1pass-up** - application update component\n- **1pass-term** - component used to handle CLI interaction with application\n- **1pass-app** - real application (combines all of above)\n\nIndependent Go modules makes it easier to track changes than packages.\n\nIf everything is clear to this point and you still want to modify code, open an issue with template **Bug** \n(labels **bug** and **pr**) or **Request** (labels **request** and **pr**). The next step is to describe amount of work \nyou want to do. The more detailed description, the better. Git branch name should follow the pattern:\n\n```\n\u003clatest_release\u003e/pr/\u003cshort_issue_title_with_underscores\u003e/\u003cissue_number\u003e\n\n1.0.0/pr/pretty_item_overview/#99\n```\n\nI am trying to use [Conventional commits](https://conventionalcommits.org/en/v1.0.0/), so it is really important that your commits \nalso should. Example:\n\n```\nfeat(#11): get item overview\ntests(#11): unit tests of get item overview\n```\n\nLook at the repository commits, you will handle it.\n\nEvery pull request will be discussed with me and merged to **develop** after acceptation (unit tests are welcome).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmashmb%2F1pass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmashmb%2F1pass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmashmb%2F1pass/lists"}