Skip to content
Copied!
published on 2026-07-18

Overview ​

Rigo is a dotfiles manager for macOS, Linux, and Windows. It keeps the real files in a plain directory called the vault and symlinks them into their usual places. The name Rigo combines rig (rigging up an environment) with Go, the implementation language.

Design Philosophy ​

Rigo's design comes down to three points.

  • Syncing is not Rigo's job
    The vault is a plain directory you sync across machines with whatever tool you like (Syncthing, Dropbox, iCloud Drive, and so on). Rigo itself never touches the sync mechanism.
  • No extra "apply" step
    Editing a linked file edits the vault copy directly. The change rides the sync tool to your other machines as it is.
  • No manifest, no templating
    The vault's directory tree itself is the single source of truth, mirroring your home directory (vault/.zshrc → ~/.zshrc). There is no separate file listing "what to manage".

A configuration file, rigo.toml, does exist, but it annotates the vault (directory-unit deployment, per-machine selection, secrets, and so on) rather than acting as a manifest. Every item in it is optional.

Features ​

  • File-level and directory-level symlink deployment with a five-state model (linked / pending / unlinked / conflict / broken)
  • Conflicts are never resolved silently (Rigo shows a diff and asks, or requires an explicit --force)
  • OS-specific entries under .os/<darwin|linux|windows>/, plus per-distribution overlays on Linux
  • Per-machine selective deployment via groups / include / exclude
  • Tags for grouping entries and operating on them in bulk
  • Named volumes for non-system drives on Windows
  • A secrets subcommand that materializes secrets from 1Password (op:// references)
  • An in-vault trash that makes forget undoable

Why Another Dotfiles Manager ​

There are already plenty of dotfiles managers. Rigo exists because none of them combined the design philosophy and the features above.

  • No version control required
    Dotfiles do not necessarily need version control. Git-centric tools (yadm, bare-repository setups) fix the sync mechanism to git, while Rigo treats the vault as a plain directory, so syncing alone with Syncthing, Dropbox, or iCloud Drive is enough (and if you do want history, the vault itself can go under git).
  • Edits take effect immediately
    Tools that copy a source state into place (the "apply" model, with chezmoi as the leading example) need a propagation step, or tool-mediated editing, after every edit. Switching environments, often cited as the strength of the copying model, only takes pointing Rigo at a different config file (the rigo.toml inside the vault; see How It Works for the procedure). Day-to-day work happens against a single vault, so Rigo favors the immediacy of symlinks.
  • No manifest, no templating
    dotbot's YAML manifest, and chezmoi's filename encoding (dot_zshrc) and templates, are at odds with "the vault tree itself is the single source of truth".
  • Windows as a first-class citizen
    Earlier symlink-based tools (GNU Stow, Mackup) have no practical Windows support. Rigo designs for Windows down to the %APPDATA% / %LOCALAPPDATA% sections and named volumes.
  • Observed state and safe convergence
    The combination of the five-state model, interactive conflict resolution, and the trash is only partially available in existing tools.

The closest relative is GNU Stow (a manifest-less symlink farm), but it lacks Windows support, OS layers, per-machine selection, and secrets. The strongest contender, chezmoi, is powerful, but its templates and apply-style workflow sit on the other side of the design philosophy.

Requirements ​

PlatformRequirements
macOS13 or later
Linux—
Windows11. Creating symlinks requires Developer Mode (Settings → System → For developers) or an elevated prompt

Installation ​

Download a release archive and put rigo somewhere on your PATH, or build from source:

sh
go install github.com/rinodrops/rigo@latest

For Linux, .deb / .rpm packages are also attached to releases.

First Steps ​

Only the first run on a new machine names the config file inside the vault with -f. After that, the vault is discovered automatically.

sh
# First run on a new machine only: name the config inside the vault directly
rigo -f ~/Sync/Vault/.config/rigo/rigo.toml apply

# From then on, the vault is discovered automatically
rigo status

# Start managing a file (moves it into the vault, links it back)
rigo add ~/.zshrc

For a walkthrough from zero to multi-machine syncing, see the tutorial (macOS and Linux) or the tutorial (Windows); for individual command specifications, see the command reference. The machinery (the state model, the vault layout, per-machine selection) is covered in How It Works.

License ​

MIT. The source code is on GitHub.