Take control of your dotfiles.
Doti is a powerful, terminal-first tool designed to simplify the management of your configuration files across machines. Stop manually symlinking and worrying about overwriting your precious configs—Doti handles the heavy lifting, backups, and organization for you.
Managing dotfiles shouldn't feel like a chore. Doti gives you:
- Safety First: Automatic backups are created before any symlink is applied. If something goes wrong, your original files are safe.
- Terminal Native: No heavy GUIs. Manage everything directly from your CLI with an intuitive interface.
- Smart Planning: Review your changes before they happen. Doti calculates an action plan, allowing you to confirm exactly what will be added or removed.
- Flexible Organization: Whether you're migrating an existing setup or setting up a fresh machine, Doti keeps your source repo and home directory perfectly in sync.
Doti is designed to be run directly from your terminal.
The basic syntax for Doti is:
doti [action] [options]
| Action | Description |
|---|---|
manage |
Open the interactive TUI to select, sync, and manage your configuration files. |
migrate |
Move existing local configurations into your dotfile repository. |
-c, --config <FILE>: Point to a specific configuration file.-s, --source <FILE>: Explicitly set the path to your dotfiles directory.
Want to sync your files? Just run the management command. Doti will visualize your tree and let you select what you want to link:
doti manage --config ./my_config.yaml
- Scan: Doti analyzes your source folder and home directory.
- Select: Use the interactive interface to choose the files/directories you want managed.
- Review: See a clear action plan of what will be symlinked or restored.
- Confirm: Once you approve, Doti applies the changes safely.
# Install from git
uv tool install git+https://github.com/anomalyco/doti.git
# Or install locally (for development)
uv tool install -e .
# Or use the Makefile
make install-toolThen run:
doti --helppip install doti# Clone your dotfiles repository
git clone https://github.com/yourusername/dotfiles.git
cd dotfiles
# Install doti in development mode
pip install -e .
# Or install with uv
uv sync
uv pip install -e .pip install git+https://github.com/anomalyco/doti.gitFor manual testing, use the included setup script to create a test environment:
# Run the setup script to create test directories
./setup_manual_test.sh
# Run doti with the test config
doti -c ./manual_testing/test_config.yaml
# Or for development
doti -c ./manual_testing/test_config.yaml manageThe script creates:
manual_testing/repo/- Your dotfiles repositorymanual_testing/home/- Simulated home directorymanual_testing/test_config.yaml- Configuration file pointing to both
Cleanup when done:
rm -rf ./manual_testing