Kyrat
SSH wrapper script that brings your dotfiles always with you on Linux and OSX
Install / Use
/learn @fsquillace/KyratREADME
kyrat
Kyrat - A simple ssh wrapper script that brings your dotfiles always with you on Linux and OSX
|Project Status|Communication|
|:-----------:|:-----------:|
|
| |
Table of Contents
Description
kyrat is a ssh wrapper that allows to source local dotfiles on a ssh session to a remote host. No installations or root access on the remote host are required. It works either from/to a Linux or OSX machines.
kyrat can transfer to the remote host and source the following dotfiles:
- bashrc files (located in either
~/.config/kyrat/bashrcor inside the directory~/.config/kyrat/bashrc.d/). - inputrc files (located in either
~/.config/kyrat/inputrcor inside the directory~/.config/kyrat/inputrc.d/) - vimrc files (located in either
~/.config/kyrat/vimrcor inside the directory~/.config/kyrat/vimrc.d/). - tmux.conf files (located in either
~/.config/kyrat/tmux.confor inside the directory~/.config/kyrat/tmux.conf.d/). - zshrc files (located in either
~/.config/kyrat/zshrcor inside the directory~/.config/kyrat/zshrc.d/).
Environment variables
KYRAT_SHELLcan be used to set which shell to spawn remotely (default isbash). The allowed shells arebash,zshandsh.KYRAT_TMPDIRremote location to store the dotfiles (default/tmp).
Kyrat features
The following summarizes the Kyrat features:
- Dotfile types supported:
bashrc,vimrc,inputrc,tmux.conf,zshrc - Platform: Linux, OSX
- Compression during tranfer:
gzip - Encoding during transfer:
base64 - Automatic removal of remote dotfiles when exiting from Kyrat session
- Remote dotfile location:
/tmp(configurable viaKYRAT_TMPDIRenv variable) - Remote shells available to spawn:
bash,zshorsh(configurable viaKYRAT_SHELLenv variable)
How it works?
This is the sequence of steps that occur when running Kyrat:
- The dotfiles are encoded using Base64 and compressed with Gzip
- The dotfile blobs are passed through the ssh command line containing a script
- The remote host will execute such script with the instructions of:
- how to decode and extract the dotfiles
- where to store the dotfiles (according to
KYRAT_TMPDIRvariable) - which environment variables to set to make the dotfiles working properly
- which remote shell to spawn (
bash,zshorshaccording toKYRAT_SHELLvariable)
Quickstart
Bash
Write locally in either ~/.config/kyrat/bashrc or any files inside ~/.config/kyrat/bashrc.d/:
alias q=exit
function processof(){
ps -U $1 -u $1 u
}
export PATH=$PATH:/sbin:/usr/sbin
Now, just access to your remote host:
$> kyrat myuser@myserver.com
myserver.com $> processof feel
feel 20567 0.3 0.0 14748 952 pts/5 S+ 12:44 0:13 ping www.google.com
feel 23458 0.0 0.0 12872 1372 pts/9 R+ 13:49 0:00 ps -U feel -u feel u
myserver.com $> q
exit
Or even inline:
$> kyrat myuser@myserver.com -- processorof feel
Vim
Write locally in either ~/.config/kyrat/vimrc or any files inside ~/.config/kyrat/vimrc.d/:
nnoremap <silent> <Leader>e :Explore<CR>
Now, just access to your remote host via kyrat, run vim and you will have the shortcut \e for running the vim file explorer.
Inputrc
Write locally in either ~/.config/kyrat/inputrc or any files inside ~/.config/kyrat/inputrc.d/:
set completion-ignore-case On
Now, just access to your remote host via kyrat and the terminal will have case insensitive tab completion.
Tmux
Write locally in either ~/.config/kyrat/tmux.conf or any files inside ~/.config/kyrat/tmux.conf.d/:
bind e setw synchronize-panes on \; display "Synchronization ON"
bind E setw synchronize-panes off \; display "Synchronization OFF"
Now, just access to your remote host via kyrat and run the following:
tmux -f "$TMUX_CONF"
This will open a tmux session and you can now toggle synchronization between
panes on the same window with the keys e/E.
Installation
Dependencies
Before installing Kyrat be sure that all dependencies are properly installed in your system. The Kyrat dependencies are the following:
Linux
Assuming all Kyrat dependencies are properly installed in the system, to install Kyrat run the following:
git clone https://github.com/fsquillace/kyrat ~/.local/share/kyrat
export PATH=$PATH:~/.local/share/kyrat/bin
OSX
In order to install all Kyrat dependencies, you first need to install Homebrew.
To install all the needed dependencies via Homebrew:
brew update
brew install bash coreutils
Once all Kyrat dependencies are properly installed in the system, to install Kyrat run the following:
git clone https://github.com/fsquillace/kyrat ~/.local/share/kyrat
export PATH=$PATH:~/.local/share/kyrat/bin
Troubleshooting
This section has been left blank intentionally. It will be filled up as soon as troubles come in!
Contributing
You could help improving Kyrat in the following ways:
Donating
To sustain the project please consider funding by donations through the GitHub Sponsors page.
Authors
Kyrat was originally created in April 2014 by Filippo Squillace (feel.sqoox@gmail.com).
Here is a list of really appreciated contributors!
Last words
Consider your origins:
You were not born to live like brutes
but to follow virtue and knowledge.
[verse, Dante Alighieri, from Divine Comedy]
Related Skills
node-connect
346.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
346.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
346.8kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
