# Hishtory: Better Shell History

## Shell scripting is powerful, keep track of how you use it

Your shell keeps a list of every command you run locally, but this list of commands is devoid of context (where did I run that command? what was the output of the command? how long did it take to run?) and it is easily corrupted (open two terminals at once? Say goodbye to your shell history!).
Hishtory keeps track of the command you ran, how long it took to run, whether it succeeded or failed, where you ran it, and on what machine. It syncs this information across all your machines, so you can always find that useful shell pipeline you wrote a month ago.

## Setup Process

To install hishtory on your first machine:
`curl -L -o hishtory https://api.hishtory.dev/download/hishtory-linux-amd64
chmod +x hishtory
./hishtory install`
To install hishtory on your second machine, you must first retrieve your secret key from first first machine. To do so, run `hishtory status` and copy your "Secret Key". Then to install it on your second machine:
`curl -L -o hishtory https://api.hishtory.dev/download/hishtory-linux-amd64
chmod +x hishtory
./hishtory install $YOUR_HISHTORY_SECRET`

## Usage

- To query your hishtory: `hishtory query foo` or use the custom search atoms `cwd:/etc/`, `exit_code:127`, `hostname:laptop`, `user:david`
- To dump all hishtory entries to stdout: `hishtory export`
- To temporarily turn on/off hishtory recording: `hishtory disable` / `hishtory enable`
- To update to the latest version: `hishtory update`

## FAQ

##

Hishtory hooks into your shell to record everything you could want to know about your shell history. It saves this data in a local sqlite DB, and then syncs an encrypted copy of this DB with all your other computers.

##

This is up to you to judge, but in my opinion: Yes! All data is end-to-end encrypted with a key that never leaves your computer(s). The code is OSS and verifiably built as SLSA Level 3 so you can verify that the software you're running is the code on Github, and that it in fact does not share any of your private data. In addition, the backend server is OSS so you can verify how it works.

##

If it works for you, great! But I find I constantly get annoyed with `.bash_history` either because I lose context (which directory do I need to run that command from?) or because I full on lose the file (it tends to get corrupted if you open multiple terminals at the same time).

##

Yes! This is just a hobby project for me that I use, and I hope other people get some use out of. It is also OSS, so feel free to fork it and self-host!

##

Made with ❤️ by David Dworken. I'm a Security Engineer who also enjoys creating software. I built this to solve a problem for myself, and wanted to share it with others who may find it useful.

Feedback, thoughts, ideas, or other questions? Let me know!

david@daviddworken.com