#bookmarks #bookmark-manager #git #fastest #fish #git-url #bash #lightest

app tempesta

The lightest and fastest CLI for managing bookmarks, written in Rust

88 releases

0.1.34 Dec 29, 2025
0.1.33 Dec 28, 2025
0.1.10 Nov 15, 2025
0.1.0 Oct 9, 2025
0.0.47 Feb 28, 2025

#81 in Configuration

MIT license

56KB
1.5K SLoC

Tempesta

The fastest and lightest bookmark manager CLI written in Rust.
[Heavily inspired by pass]

Bookmark management should be simple and follow Unix philosophy.

With Tempesta all bookmarks live in ~/.bookmark-store, and tempesta provides some intuitive commands for adding, updating, editing and open URLs.

It can also track all the changes using git.

Table of content

How to use it:

Install

Alias

Combine

How to use it

Init

Before start using it, run:

tempesta init

This will prompt with questions about the set up.

Configuration

Tempesta's configuration file (tempesta.toml) is typically located at ~/.config/tempesta/tempesta.toml.

You can specify a custom configuration file path using the --config or -c global flag. This flag can be placed anywhere in the command line:

tempesta --config /path/to/your/custom/tempesta.toml init
tempesta -c /path/to/another/config.toml list

If the --config flag is not provided, Tempesta will check for the TEMPESTA_CONFIG environment variable. If set, its value will be used as the configuration file path.

The --config flag takes precedence over the TEMPESTA_CONFIG environment variable. If neither is provided, Tempesta defaults to ~/.config/tempesta/tempesta.toml.

Available configuration options are documented in the table below:

Option Type Explanation
git bool Set to true to enable git backend for storing bookmarks
pull_before_push bool Requires the git backend enabled, used to pull remote before any push to update
rebase_on_pull bool Requires git & rebase_on_pull enabled, use rebase instead of fast-forward strategy for git pull
remote string Git https/git url for repository to store bookmarks.
dir string Directory path in local filesystem for bookmark-store

Add a bookmark

tempesta add <local-path> <url>

tempesta add search-engines/google "http://google.com/"

Edit a bookmark in your editor (it check $EDITOR variable)

tempesta edit <local-path>

tempesta edit search-engines/google

Get a bookmark

It prints the URL of the bookmark

tempesta get <local-path>

tempesta get search-engines/google

Show configuration

It prints the current configuration

tempesta config

List bookmarks

tempesta list <local-path>

tempesta list search-engines/

Without arguments it lists all the bookmarks

tempesta list

List has a parameter that can be passed with the flag --divisor that divides the path name to the actual url:

tempesta list search-engines/ --divisor=" --- "

This prints:

search-engines/google --- https://google.com/
search-engines/duck --- https://duckduckgo.com/

Move a bookmark

tempesta move <local-path>

tempesta move search-engines/google query-engines/google

Open the URL in the browser

tempesta open <local-path>

tempesta open search-engines/google

Remove a bookmark

tempesta remove <local-path>

tempesta remove search-engines/google

Update a bookmark

tempesta update <local-path> <url>

tempesta update search-engines/google "https://google.com"

Shortcut

You can use the initial of the methods instead of their full identifier:

[a]dd     -- Add a new bookmark
[c]onfig  -- Show the current configuration
[e]dit    -- Edit an existing bookmark
[g]et     -- Get an existing bookmark
[i]nit    -- Init the bookmark store
[l]ist    -- List bookmarks
[m]ove    -- Move a bookmark
[o]pen    -- Open a bookmark
[r]emove  -- Remove a bookmark
[u]pdate  -- Update an existing bookmark

For example

tempesta o search-engines/google

tempesta r search-engines/google

Install

NixOS/Nix (NUR)

# Direct install
nix-env -iA nur.repos.x71c9.tempesta -f '<nixpkgs>'

# NixOS configuration
environment.systemPackages = [ nur.repos.x71c9.tempesta ];

# Home Manager
home.packages = [ pkgs.nur.repos.x71c9.tempesta ];

The NUR package includes configurable shell completion support. See NUR documentation for completion configuration options.

Arch Linux (AUR)

yay -S tempesta

MacOS (Homebrew)

brew install x71c9/x71c9/tempesta

Download binaries

Download the latest compatible binaries for your system and architecture: https://github.com/x71c9/tempesta/releases/latest


Build from source

Install Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

After installation, ensure your environment is updated (or restart your terminal) so that the cargo and rustc commands are in your PATH.

git clone https://github.com/x71c9/tempesta
cd tempesta
cargo build --release

./target/release/tempesta

If you want to install the CLI tool so that it’s available in your PATH, you can use in the repo directory:

cargo install --path .

Shell completion

BASH

source <(tempesta completion bash)
# set up autocomplete in bash into the current shell,
# bash-completion package should be installed first.
echo "source <(tempesta completion bash)" >> ~/.bashrc
# add autocomplete permanently to your bash shell.

ZSH

source <(tempesta completion zsh)
# set up autocomplete in zsh into the current shell
echo '[[ $commands[tempesta] ]] && source <(tempesta completion zsh)' >> ~/.zshrc
# add autocomplete permanently to your zsh shell

FISH

echo 'tempesta completion fish | source' > ~/.config/fish/completions/tempesta.fish && source ~/.config/fish/completions/tempesta.fish

Alias

ZSH Alias

Most likely you will alias the command with

alias t='tempesta'

In order to make completion in bash to work with alias you can add the following:

complete -o default -o nospace -F _tempesta t

where the final t is the name of the alias.

Bash Alias

Autocompletion do not work for bash alias but works when using functions, therefore is recommended to use a function instead, for example:

t() {
  tempesta "$@"
}
complete -o default -o nospace -F _tempesta t

fzf

If you are using fzf you can pipe the result of tempesta list to it:

tempesta list | fzf

And you can use it in combination with tempesta open in order to fuzzy find a bookmark and open it in the browser

# with AWK
tempesta list | fzf | awk -F ' *:: *' '{print $1}' | xargs tempesta open
# with SED
tempesta list | fzf | sed 's/ *::.*//' | xargs tempesta open

An alias like this might be useful to open bookmarks:

alias tempo="tempesta list | fzf | sed 's/ *::.*//' | xargs tempesta open"

wofi

If you are using wofi you can pipe the result of tempesta list to it:

tempesta list | wofi --dmenu --insensitive | xargs tempesta open

rofi

If you are using rofi you can pipe the result of tempesta list to it:

tempesta list | rofi -dmenu -i -p "tempesta" | xargs tempesta open

Dependencies

~5–20MB
~225K SLoC