{"id":31225003,"url":"https://github.com/dnaka91/otti","last_synced_at":"2025-09-22T00:28:24.915Z","repository":{"id":42155518,"uuid":"384134986","full_name":"dnaka91/otti","owner":"dnaka91","description":"The one-time password manager for the terminal, with interactive and fancy TUI","archived":false,"fork":false,"pushed_at":"2024-02-06T05:20:36.000Z","size":267,"stargazers_count":17,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-01T17:04:01.240Z","etag":null,"topics":["cli","hacktoberfest","hotp","one-time-password","otp","rust","totp","tui"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dnaka91.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-07-08T13:32:56.000Z","updated_at":"2024-04-14T10:16:15.000Z","dependencies_parsed_at":"2024-02-06T06:28:05.501Z","dependency_job_id":"4069322e-f352-452d-abf6-122334b7ff75","html_url":"https://github.com/dnaka91/otti","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/dnaka91/otti","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnaka91%2Fotti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnaka91%2Fotti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnaka91%2Fotti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnaka91%2Fotti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dnaka91","download_url":"https://codeload.github.com/dnaka91/otti/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnaka91%2Fotti/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276328777,"owners_count":25623323,"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-21T02:00:07.055Z","response_time":72,"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":["cli","hacktoberfest","hotp","one-time-password","otp","rust","totp","tui"],"created_at":"2025-09-22T00:28:23.156Z","updated_at":"2025-09-22T00:28:24.893Z","avatar_url":"https://github.com/dnaka91.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🦦 Otti\n\nThe one-time password (OTP for short) manager for the terminal, with interactive and fancy TUI.\n\n\u003c!-- markdownlint-disable no-inline-html --\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/dnaka91/gifs/dd0d5915c1f4b4897dda3e75c3753ae5e327de5f/otti.gif\" width=646\u003e\n\u003c/p\u003e\n\u003c!-- markdownlint-enable no-inline-html --\u003e\n\n## What's an OTP?\n\nAn OTP is the abbreviation for **O**ne-**T**ime **P**assword and is usually part of a two-factor\nauthentication setup. That is, when a second password is required for a login to some service as\nextra security measure.\n\nIt usually involves scanning a QR-Code from the service's website or inputting it into an\nauthenticator manually.\n\nFor more information check out [this Wikipedia article](https://en.wikipedia.org/wiki/One-time_password).\n\n## Yet another OTP account manager?\n\nI wanted an OTP manager app for the terminal that behaves similar as mobile managers but couldn't\nfind any that work in that way. Most CLI-based existing managers use single commands to manage the\nOTP accounts, which are non-interactive.\n\nTherefore, this is a different approach by using the awesome [tui-rs] crate to build a TUI variant\nthat is as similar to the mobile apps as possible but still simplistic.\n\nAdditionally, I felt the way some OTP managers save the account information is to simple and weak in\nregards to security. **Otti** uses the [orion] crate for the credential storage which is very\nsimilar to **libsodium**, but fully implemented in Rust.\n\n[tui-rs]: https://github.com/fdehau/tui-rs\n[orion]: https://github.com/orion-rs/orion\n\n## Installation\n\n### Pre-built binaries\n\nGrab the binary for your OS from the [releases](https://github.com/dnaka91/otti/releases), extract\nit and put it in a folder that's on your `$PATH` like `/usr/local/bin`.\n\n### From source\n\nMake sure to have the latest Rust compiler and Cargo installed and run:\n\n```sh\ncargo install --git https://github.com/dnaka91/otti.git --tag v0.1.0\n```\n\nYou can omit the `--tag` flag to install the latest development version, but make backups of your\nstore file just in case.\n\n\n### From AUR\n\nArch Linux users can install **Otti** from the [AUR](https://aur.archlinux.org/) using an [AUR helper](https://wiki.archlinux.org/title/AUR_helpers). For example:\n\n```sh\nparu -S otti\n```\n\n## Usage\n\nCurrently **Otti** is read-only, that means you can not add any new accounts to its database.\nInstead you have to import from an external OTP manager until editing features are implemented.\n\nTo do so, first export your OTP accounts from one of the supported external apps (currently\n**Aegis** and **andOTP**), then run `otti import \u003cprovider\u003e \u003cfile\u003e` and optionally give a password with the `--password` argument if the import file is protected.\n\nAfter the import completed successfully simply run `otti`, enter your password and use the TUI. For\nfurther help inside the TUI hit the `h` hotkey.\n\n## License\n\nThis project is licensed under [AGPL-3.0 License](LICENSE) (or\n\u003chttps://www.gnu.org/licenses/agpl-3.0.html\u003e).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnaka91%2Fotti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdnaka91%2Fotti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnaka91%2Fotti/lists"}