Skip to main content

dotman

Dotfile manager — track, sync, and restore config files across machines.

PyPI Python License Stars


dotman is a fast, terminal-native dotfile manager that keeps your configuration files in sync across all your machines. It moves tracked files into a central dotfiles directory, creates symlinks at their original locations, and uses git to sync changes. Profiles let you maintain separate file sets for work, home, and server environments — all protected by optional AES-256-GCM encryption for sensitive configs.

  • Symlink management — Move files to your dotfiles repo; symlinks stay in place transparently
  • Git sync — Commit, push, and pull with a single command to keep machines in sync
  • Profiles — Separate dotfile sets for work, home, server, or any context
  • Diff view — See exactly what changed since your last backup
  • Backup & restore — Timestamped snapshots; one command to restore all symlinks on a fresh machine
  • AES-256-GCM encryption — Protect sensitive files (SSH keys, API tokens) at rest
  • Rich terminal UI — Color-coded status tables, panels, and progress output

Installation

pip install dotfiles-tool

Usage

# Initialize dotman
dotman init --dir ~/.dotfiles

# Start tracking config files
dotman track ~/.bashrc ~/.vimrc ~/.tmux.conf

# Check status
dotman status
dotman list

# Sync to remote
dotman sync --init --remote git@github.com:you/dotfiles.git
dotman sync --push -m "add tmux config"

# Set up on a new machine
git clone git@github.com:you/dotfiles.git ~/.dotfiles
dotman restore

# Encrypt sensitive files
dotman encrypt ~/.ssh/config --password mysecret
dotman decrypt ~/.ssh/config.enc --password mysecret

Commands

Command Description
dotman init Initialize dotfiles directory and git repo
dotman track <files> Track file(s) — move to dotfiles dir and create symlinks
dotman untrack <files> Remove tracking and restore files to original location
dotman list List all tracked files with status
dotman status Show overall status: tracked count, git state, profile
dotman restore Re-create symlinks (use on a fresh machine after cloning)
dotman diff <file> Show diff between current file and last backup
dotman backup [files] Create timestamped backups of tracked files
dotman sync Commit + push (or pull) dotfiles via git
dotman log Show git commit history of dotfiles repo
dotman profile list List all profiles
dotman profile create <name> Create a new profile
dotman profile switch <name> Switch active profile
dotman profile delete <name> Delete a profile
dotman profile export <name> <file> Export profile manifest to JSON
dotman profile import <file> Import profile manifest
dotman encrypt <file> Encrypt a file with AES-256-GCM
dotman decrypt <file> Decrypt a dotman-encrypted file

Configuration

dotman stores its config at ~/.config/dotman/config.json:

{
  "dotfiles_dir": "~/.dotfiles",
  "git_remote": "git@github.com:you/dotfiles.git",
  "active_profile": "default",
  "encrypt_secrets": false
}

Override the config location with DOTMAN_HOME:

export DOTMAN_HOME=/custom/path

Profiles

Profiles let you group dotfiles by context:

dotman profile create work
dotman track ~/.config/work-tool.conf --profile work

dotman profile create server
dotman track ~/.nanorc --profile server

# Switch active profile
dotman profile switch work

# Export/import for sharing
dotman profile export work work-manifest.json
dotman profile import work-manifest.json

License

MIT © shazeus

Metadata

Release files for dotfiles-tool 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dotfiles-tool 0.1.0
File Size Uploaded
dotfiles_tool-0.1.0.tar.gz 13.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dotfiles-tool 0.1.0
File Interpreter ABI Platform
dotfiles_tool-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 28.5 kB

Release files / dotfiles_tool-0.1.0.tar.gz

Download URL dotfiles_tool-0.1.0.tar.gz
Size 13.1 kB
Tags Source
SHA-256 checksum
How to use checksums
0da832ccea9399bd8bd37a427fc54794be3f0fe00f0c390df959074f017e2ed1
BLAKE2b-256 checksum
How to use checksums
69a8355f42927c214738c45f985a142d7e186ed0d37ec7934d83b0788dc5d89d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / dotfiles_tool-0.1.0-py3-none-any.whl

Download URL dotfiles_tool-0.1.0-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5e8a8b1f12c854a4f18b785c677d0337af1af89a5c937a4f37e75a480168bc46
BLAKE2b-256 checksum
How to use checksums
a7135ff89eca50110e5afbca7661bafbb643946991942cdfb93751d01adb5524
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page