A Modern, POSIX-compatible, Generative Shell.
This project is in early development stage. Use at your own risk! Please expect bugs, incomplete features and breaking changes.
That said, if you can try it out and provide feedback, that would help make gsh more useful!
- POSIX-compatibility: you shouldn't need to learn a new shell language to adopt gsh
- Embrace AI: gsh is designed from the ground up for the generative AI era to provide you with intelligent assistance at the right place, right time
- Privacy: gsh should allow you to use local LLMs for guaranteed privacy
- Customizability: gsh is your shell. You should be able to configure it to your liking
- Extensibility: gsh should allow the community to build and share extensions to make it more useful
gsh will automatically suggest the next command you are likely want to run.
gsh will provide an explanation of the command you are about to run.
gsh can act as an agent that invoke commands on your behalf. Commands starting with "#" are sent to the agent as a chat message.
gsh can even code for you!
gsh can run with either
- Local LLMs through Ollama
- Or remote LLMs through an OpenAI API-compatible endpoint, such as OpenRouter
To install gsh:
# Linux and macOS through Homebrew
brew tap atinylittleshell/gsh https://github.com/atinylittleshell/gsh
brew install atinylittleshell/gsh/gsh
# You can use gsh on arch, btw
yay -S gsh-binWindows is not supported (yet).
gsh can automatically detect newer versions and self update.
gsh can be configured through a configuration file located at ~/.gshrc.
Configuration options and default values can be found in .gshrc.default.
gsh also loads a ~/.gshenv file, right after loading ~/.gshrc.
This file can be used to set environment variables that the gsh session will use.
When launched as a login shell (gsh -l),
gsh will also load /etc/profile and ~/.gsh_profile at start (before ~/.gshrc).
You can use Starship.rs to render a custom command line prompt. See .gshrc.starship for an example configuration.
You can manually start gsh from an existing shell:
gshYou can also automatically launch gsh from another shell's configuration file:
# For bash
echo "gsh" | tee -a ~/.bashrc# For zsh
echo "gsh" | tee -a ~/.zshrc
# Your zsh config may have set "gsh" as an alias for `git show`.
# In that case, you would need to use the full path to gsh.
echo "/full/path/to/gsh" | tee -a ~/.zshrcOr, you can set gsh as your default shell. This is not recommended at the moment as gsh is still in early development. But if you know what you are doing, you can do so by:
# Get the absolute path to gsh by running `which gsh`
which gsh
# Add gsh to the list of approved shells
echo "/path/to/gsh" | sudo tee -a /etc/shells
# Change your default shell to gsh
chsh -s "/path/to/gsh"gsh provides a set of default key bindings for navigating and editing text input. These key bindings are designed to be familiar to users of traditional shells and text editors. It's on the roadmap to allow users to customize these key bindings.
- Character Forward:
Right Arrow,Ctrl+F - Character Backward:
Left Arrow,Ctrl+B - Word Forward:
Alt+Right Arrow,Ctrl+Right Arrow,Alt+F - Word Backward:
Alt+Left Arrow,Ctrl+Left Arrow,Alt+B - Delete Word Backward:
Alt+Backspace,Ctrl+W - Delete Word Forward:
Alt+Delete,Alt+D - Delete After Cursor:
Ctrl+K - Delete Before Cursor:
Ctrl+U - Delete Character Backward:
Backspace,Ctrl+H - Delete Character Forward:
Delete,Ctrl+D - Line Start:
Home,Ctrl+A - Line End:
End,Ctrl+E - Paste:
Ctrl+V
See ROADMAP.md for what's already planned. Feel free to suggest new features by opening an issue!
gsh is built on top of many great open source projects. Most notably:



