TUI for OpenTofu provider registry.
- Keyboard first navigation
- Searchable index of providers and resources
- Copy blocks for your
required_providers - Copy snippets from the docs
- Browse all provider versions
- Bookmark frequently used providers and resources
- Cache visited providers and resources
- If the markdown viewer is not sufficient for you, quickly open the resource in your web browser
- Check provider stats to see if they are production ready based on stars and forks
- Configurable look to match the rest of your system
# Platform independent
pipx install tofuref
# Arch based distros
yay -S tofuref-binRun the application:
tofuref| keybindings | action |
|---|---|
s, / |
search in the context of providers and resources |
u, y |
context aware copying (using a provider/resource) |
v |
change active provider version |
b |
persistently bookmark an item to prioritize them in sorting when next re-ordered |
q, ctrl+q |
quit tofuref |
t |
toggle table of contents from content window |
B |
from content window, open active page in browser |
ctrl+g |
open GitHub repository for provider |
ctrl+s |
Show stats of provider's github repo |
Note: The GitHub functionality tries to use your GitHub token (env or
ghcli) to avoid rate limiting.
| keybindings | action |
|---|---|
tab |
focus next window |
shift+tab |
focus previous window |
p |
focus providers window |
r |
focus resources window |
c |
focus content window |
backspace, left arrow |
focus previous window |
Navigate with arrows/page up/page down/home/end or your mouse.
VIM keybindings should be also supported in a limited capacity.
Default configuration can be overridden by a config file, which can be overridden with env variables.
Config file locations:
- Unix:
~/.config/tofuref/config.toml - macOS:
~/Library/Application Support"/tofuref/config.toml - Windows:
%USERPROFILE%\AppData\Local\tofuref\tofuref\config.toml
Put these as simple key=value in your config.toml.
| name | description | type | default | env |
|---|---|---|---|---|
| http_request_timeout | Timeout for all http requests (in seconds) | float | 3.0 | TOFUREF_HTTP_REQUEST_TIMEOUT |
| index_cache_duration_days | How long the provider index should be cached for (in days) | int | 31 | TOFUREF_INDEX_CACHE_DURATION_DAYS |
| markdown_length_target | Target markdown length (in characters) to keep tofuref responsive | int | 40_000 | TOFUREF_MARKDOWN_LENGTH_TARGET |
These options belong to a toml section, [theme].
| name | description | type | default | env |
|---|---|---|---|---|
| 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 |
| codeblocks | CURRENTLY WORKS ONLY IN COPY MENU The pygments style for code blocks | string | material | TOFUREF_THEME_CODEBLOCKS |
| borders_style | The borders to use for windows, list and showcase of available here | string | ascii | TOFUREF_THEME_BORDERS_STYLE |
| emoji | Whether to display emojis or letters as icons | bool | true | TOFUREF_THEME_EMOJI |
Author's configuration:
[theme]
ui = "dracula"
codeblocks = "dracula"
borders_style = "vkey"pipx upgrade tofurefjust init
Run tests:
just test
Update snapshots for tests if the diff was expected:
just test-update
just run
Intended mainly for development.
Force downloading from API to see the first time load experience:
TOFUREF_DISABLE_CACHE=1 uv run tofuref
Show popups with load times for provider/resource listings:
TOFUREF_SHOW_LOAD_TIMES=1 uv run tofuref
Or combine those:
TOFUREF_SHOW_LOAD_TIMES=1 TOFUREF_DISABLE_CACHE=1 uv run tofuref