Skip to content
keep your machine's shell history synchronize
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Yet another tool for laziness
Keep your machine's shell history synchronize

Get SyncShell

Currently, SyncShell is just available on PyPi and by the following command install the latest version:

$ pip install syncshell # Maybe sudo need
$ syncshell -- --help
Type:        Syncshell
String form: <syncshell.syncshell.Syncshell object at 0x7fa35d7d87f0>

Usage:       syncshell 
             syncshell auth
             syncshell download
             syncshell upload

How it Works

The actual idea of SyncShell is synchronization of your devices shell history, Almost, this ability will be useful when you want to sync your office and home machines. SyncShell is just built on Github Gist feature such that this CLI tool represents three methods to communicate with the tool.

According to Github API, you can generate a token key with gist scope to accessing to your gists. Gists have two public, secret type which syncshell while executing syncshell upload command will use secret type to store your history file and keep them secret on Github Gist.

On the others machine, by executing syncshell download after entering your token key and created Gist ID you can download the gist and sync your shell's history.

Gists will be secret until you don't share it with someone else, In other words, It'll be secret and safe until you only have the Github Token and Gist ID.


Currently, SyncShell just support zsh and supporting other shells is in WIP.

Before SyncShell can be useful you need to setup your Github token key:

  1. Open Github personal access tokens page, Generate a new token with gist scope feature.
  2. Execute the syncshell auth command, Enter your token key to validate and confirm it.
  3. Done 😉

Now you can try to upload your shell history by the following command:

$ syncshell upload

After the uploading process, you'll take a Gist ID that by this ID and your Github token, you can download history on the others machine by executing the following command:

$ syncshell download


  • Write more test cases
  • Support bash and other shells


So nice you wanna contribute to this repository. Thank you. You may contribute in several ways like:

  • Creating new features
  • Fixing bugs
  • Write test cases

Installing dependencies

By the following command install syncshell dependencies

$ python install -r requirements.txt


Before submiting your PR, Execute the below command to be sure about passing test cases.

$ pytest -c pytest.ini -s

Done 😉


The code is licensed under the MIT License. See the data's LICENSE file for more information.

You can’t perform that action at this time.