caretaker - distributed dotfile and script manager


ct [options] action [arguments]


ct is the basic script for maintaining packages

action may be one of:

add packages

fetch packages from the package_root and install it


Show some information useful for debugging. For real debugging, use zsh -x path/to/ct [...]

eval expression

Evauluate expression. See caretaker(7)

info package

Show information on package, like dependencies, version, etc

list [filter]

List packages depending on filter:

* all

show all packages

* local

show currently installed packages (default)

* not-installed

show remote packages which are not installed

log package

Show commit history for package

new package [ files ]

If package does not exist locally: Create it on the local and remote site. If you have more than one package root, the first one is used. Note that this only works for SSH package roots without forcecommand.

If files are given, add them to the either newly created or already installed package. Be aware that this feature is experimental.

pull [ package ]

retrieve and install newest available version of package. If no argument is given, updates all installed packages

push [ package ]

push new local versions to PKG_ROOT. If no argument is given, pushes all installed packages

refresh [ package ]

Check prereqs and update symlinks of package. If no argument is given, refreshes all installed packages

You can think of this as a 'Fake-Upgrade', it is as if the package had been upgraded. Therefory, refresh is useful if you want to test a change without committing or pushing it.

remove packages

Remove packages from the local packages tree

status [ package ]

Check for local changes to the package's files. If no arguments is given, checks all installed packages

update [ local|remote ]

Update local/remote package list (both if no argument is given)

For all actions which expect a package as argument, if the first argument is ., the package related to the current working directory will be used.


Instead of the actions described above, you may also use their short forms:

  short   long form
  -----   ---------
     a    add
     e    eval
     f    pull      (think "fetch")
     i    info
     l    log
     ls   list
     n    new
     p    push
     r    refresh
     rm   remove
     s    status
     u    update


Options marked as [boolean] may be negated by prepending a 'no', like '--no-auto-update'.

Options always override the configuration file. Also, every option refers to a configuration parameter, so please see caretaker.conf(5) for more information.


~/.config/caretaker/caretaker.conf or ~/.caretaker.conf

Contains configuration vars


Daniel Friesel <>


* Lars Stoltenow (penma)

for pointing out various bugs and design mistakes

* Maximilian Gaß (mxey)

many ideas and suggestions


caretaker.conf(5), caretaker(7)