{"id":28143551,"url":"https://github.com/djetelina/tofuref","last_synced_at":"2026-01-19T11:02:17.658Z","repository":{"id":290929025,"uuid":"976023997","full_name":"djetelina/tofuref","owner":"djetelina","description":"TUI for OpenTofu provider registry","archived":false,"fork":false,"pushed_at":"2025-10-10T16:04:21.000Z","size":1239,"stargazers_count":18,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-10T16:25:47.616Z","etag":null,"topics":["documentation","opentofu","terminal","tui"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/tofuref/","language":"Python","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/djetelina.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null}},"created_at":"2025-05-01T10:45:51.000Z","updated_at":"2025-10-08T22:31:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"ffd102bb-e6a2-492e-973f-e02980516c75","html_url":"https://github.com/djetelina/tofuref","commit_stats":null,"previous_names":["djetelina/tofuref"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/djetelina/tofuref","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djetelina%2Ftofuref","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djetelina%2Ftofuref/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djetelina%2Ftofuref/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djetelina%2Ftofuref/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/djetelina","download_url":"https://codeload.github.com/djetelina/tofuref/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djetelina%2Ftofuref/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28565876,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T08:53:44.001Z","status":"ssl_error","status_checked_at":"2026-01-19T08:52:40.245Z","response_time":67,"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":["documentation","opentofu","terminal","tui"],"created_at":"2025-05-14T21:18:39.396Z","updated_at":"2026-01-19T11:02:17.653Z","avatar_url":"https://github.com/djetelina.png","language":"Python","funding_links":[],"categories":["Tools"],"sub_categories":["Registry"],"readme":"# tofuref\n\n[![PyPI - Version](https://img.shields.io/pypi/v/tofuref)](https://pypi.org/project/tofuref/)\n![PyPI - License](https://img.shields.io/pypi/l/tofuref)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/tofuref)\n![GitHub Repo stars](https://img.shields.io/github/stars/DJetelina/tofuref?style=flat\u0026logo=github)\n\nTUI for OpenTofu provider registry.\n\n![Screenshot](https://github.com/djetelina/tofuref/blob/main/tests/__snapshots__/test_snapshots/test_welcome.svg?raw=true)\n\n## Features\n\n* Keyboard first navigation\n* Searchable index of providers and resources\n* Copy blocks for your `required_providers`\n* Copy snippets from the docs\n* Browse all provider versions\n* Bookmark frequently used providers and resources\n* Cache visited providers and resources\n* If the markdown viewer is not sufficient for you, quickly open the resource in your web browser\n* Check provider stats to see if they are production ready based on stars and forks\n* Configurable look to match the rest of your system\n\n## Installation\n\n```bash\n# Platform independent\npipx install tofuref\n\n# From AUR\nyay -S tofuref\n```\n\n## Usage\n\nRun the application:\n\n```bash\ntofuref\n```\n\n### Controls\n\n#### Actions\n\n| keybindings   | action                                                                           |\n|---------------|----------------------------------------------------------------------------------|\n| `s`, `/`      | **search** in the context of providers and resources                             |\n| `u`, `y`      | context aware copying (using a provider/resource)                                |\n| `v`           | change active provider **version**                                               |\n| `b`           | persistently bookmark an item to prioritize them in sorting when next re-ordered |\n| `q`, `ctrl+q` | **quit** tofuref                                                                 |\n| `t`           | toggle **table of contents** from content window                                 |\n| `B`           | from content window, open active page in browser                                 |\n| `ctrl+g`      | open **GitHub** repository for provider                                          |\n| `ctrl+s`      | Show **stats** of provider's github repo                                         |\n\n\u003e Note: The GitHub functionality tries to use your GitHub token (env or `gh` cli) to avoid rate limiting.\n\n#### Focus windows\n\n| keybindings               | action                     |\n|---------------------------|----------------------------|\n| `tab`                     | focus next window          |\n| `shift+tab`               | focus previous window      |\n| `p`                       | focus **providers** window |\n| `r`                       | focus **resources** window |\n| `c`                       | focus **content** window   |\n| `backspace`, `left arrow` | focus previous window      |\n\n### Navigate in a window\n\nNavigate with arrows/page up/page down/home/end or your mouse.\n\nVIM keybindings should be also supported in a limited capacity.\n\n### Configuration\n\nDefault configuration can be overridden by a config file,\nwhich can be overridden with env variables.\n\nConfig file locations:\n\n* Unix: `~/.config/tofuref/config.toml`\n* macOS: `~/Library/Application Support\"/tofuref/config.toml`\n* Windows: `%USERPROFILE%\\AppData\\Local\\tofuref\\tofuref\\config.toml`\n\n#### General\n\nPut these as simple key=value in your config.toml.\n\n| name                      | description                                                       | type  | default | env                                 |\n|---------------------------|-------------------------------------------------------------------|-------|---------|-------------------------------------|\n| http_request_timeout      | Timeout for all http requests (in seconds)                        | float | 3.0     | `TOFUREF_HTTP_REQUEST_TIMEOUT`      |\n| index_cache_duration_days | How long the provider index should be cached for (in days)        | int   | 31      | `TOFUREF_INDEX_CACHE_DURATION_DAYS` |\n| markdown_length_target    | Target markdown length (in characters) to keep tofuref responsive | int   | 40_000  | `TOFUREF_MARKDOWN_LENGTH_TARGET`    |\n\n#### Theme\n\nThese options belong to a toml section, `[theme]`.\n\n| name          | description                                                                                                                          | type   | default                               | env                           |\n|---------------|--------------------------------------------------------------------------------------------------------------------------------------|--------|---------------------------------------|-------------------------------|\n| ui            | Colorscheme for the UI, inspect available themes through command palette (`^p`) `Change theme` command                               | string | textual-dark (or `TEXTUAL_THEME` env) | `TOFUREF_THEME_UI`            |\n| codeblocks    | **CURRENTLY WORKS ONLY IN COPY MENU** The [pygments style](https://pygments.org/styles/) for code blocks                             | string | material                              | `TOFUREF_THEME_CODEBLOCKS`    |\n| borders_style | The borders to use for windows, list and showcase of available [here](https://textual.textualize.io/styles/border/#all-border-types) | string | ascii                                 | `TOFUREF_THEME_BORDERS_STYLE` |\n| emoji         | Whether to display emojis or letters as icons                                                                                        | bool   | true                                  | `TOFUREF_THEME_EMOJI`         |\n\n#### Example file\n\nAuthor's configuration:\n\n```toml\n[theme]\nui = \"dracula\"\ncodeblocks = \"dracula\"\nborders_style = \"vkey\"\n```\n\n## Upgrade\n\n```bash\npipx upgrade tofuref\n```\n\n## Development notes\n\n### Setup\n\n    just init\n\n### Testing\n\nRun tests:\n\n    just test\n\nUpdate snapshots for tests if the diff was expected:\n\n    just test-update\n\n### Running\n\n    just run\n\n### Undocumented config options\n\nIntended mainly for development.\n\nForce downloading from API to see the first time load experience:\n\n    TOFUREF_DISABLE_CACHE=1 uv run tofuref\n\nShow popups with load times for provider/resource listings:\n\n    TOFUREF_SHOW_LOAD_TIMES=1 uv run tofuref\n\nOr combine those:\n\n    TOFUREF_SHOW_LOAD_TIMES=1 TOFUREF_DISABLE_CACHE=1 uv run tofuref\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdjetelina%2Ftofuref","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdjetelina%2Ftofuref","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdjetelina%2Ftofuref/lists"}