Installation.
Takes under a minute.

dotstate ships as a single Rust binary — about eight megabytes, no runtime dependencies. Pick whichever installation method you prefer; they all land at the same place.

Install script

The fastest path. Downloads the latest release and drops the binary into ~/.local/bin — no sudo, no system paths touched. Falls back to a cargo install if no prebuilt binary is available for your platform.

$ curl -fsSL https://dotstate.serkan.dev/install.sh | bash

Homebrew

On macOS or Linux with Homebrew:

$ brew tap serkanyersen/dotstate
$ brew install dotstate
# or in one line:
$ brew install serkanyersen/dotstate/dotstate

Cargo

If you have the Rust toolchain installed:

$ cargo install dotstate

From source

Clone and build with the latest changes:

$ git clone https://github.com/serkanyersen/dotstate.git
$ cd dotstate
$ cargo install --path .

Verify the install

Confirm the binary is available and print its version:

$ dotstate --version

System requirements

Shell completions

dotstate can emit completions for your shell. Add one of these to your shell init file:

ShellCommand
bashsource <(dotstate completions bash)
zshsource <(dotstate completions zsh)
fishdotstate completions fish | source
Using oh-my-zsh, antigen, or prezto? These frameworks want the fpath approach — write the completion to ~/.zsh/completions/_dotstate and add it to your fpath before your framework loads.

Next

Run dotstate with no arguments to open the TUI and walk through first-time setup. Or jump straight to the quick start.