Show HN: Shittp – Volatile Dotfiles over SSH

https://news.ycombinator.com/rss Hits: 13
Summary

shittp Bring your dotfiles to a remote machine via SSH without mess. Installation Required dependencies: POSIX shell, ssh, tar, base64, mktemp curl -fsSL https://raw.githubusercontent.com/FOBshippingpoint/shittp/refs/heads/main/install.sh --output install.sh chmod +x install.sh ./install.sh Usage Edit your dotfiles in ~/.config/shittp cd ~ /.config/shittp echo ' aloha() { echo hello; } ' >> .profile $EDITOR .vimrc $EDITOR .tmux.conf Login to remote host with SSH: shittp john@other.machine john$ aloha # output: hello john$ vim # alias equal to "vim -u $SHITTP_HOME/.vimrc" john$ tmux # alias equal to "tmux -L shittp -f $SHITTP_HOME/.tmux.conf" Or Docker container: docker run -it alpine /bin/sh -c " $( shittp print ) " $ aloha # output: hello How It Works Pack: create a tarball of your dotfiles and pipes to base64 string. Transport: passing the base64 string and setup script as a SSH remote command. Unpack: on the remote, decodes base64 string and extracts to temp directory. Init: sources setup script and start an interactive shell. Cleanup: remove temp directory once disconnect. The original idea comes from kyrat, which uses gzip / gunzip and bash . shittp uses tar and POSIX shell. Help Information shittp [options]... [command] [ssh_options]... destination [-- ssh_command] Options Option Description Default -h , --help Show help message. --config-dir DIR Specify config directory. ~/.config/shittp --client CLIENT Specify SSH client command (e.g., dbclient ). ssh -v , --version Print shittp version. Commands Command Description where Show the default config directory path. print Output the command string instead of running SSH. Useful for loading dotfiles in environments like Docker. Examples Basic SSH Login shittp john@example.com Pass SSH options as is shittp -oStrictHostKeyChecking=no john@example.com Execute Remote Function shittp john@example.com -- foo bar shittp -oRemoteCommand= ' foo bar ' john@example.com Docker Integration docker run -it alpine /bin/sh -c " $(...

First seen: 2025-12-21 13:31

Last seen: 2025-12-22 01:33