https://github.com/xonsh/xonsh
๐ Python-powered shell. Full-featured, cross-platform and AI-friendly.
https://github.com/xonsh/xonsh
anthropic claude claude-code cmux data-engineering data-scientists devops devsecops hyper iterm2 kitty nix nixos python-automation raspberry-pi security-automation vscode-extension wezterm xonsh
Last synced: 12 days ago
JSON representation
๐ Python-powered shell. Full-featured, cross-platform and AI-friendly.
- Host: GitHub
- URL: https://github.com/xonsh/xonsh
- Owner: xonsh
- License: other
- Created: 2015-01-21T22:05:27.000Z (over 11 years ago)
- Default Branch: main
- Last Pushed: 2026-05-17T10:32:41.000Z (13 days ago)
- Last Synced: 2026-05-17T12:34:27.093Z (13 days ago)
- Topics: anthropic, claude, claude-code, cmux, data-engineering, data-scientists, devops, devsecops, hyper, iterm2, kitty, nix, nixos, python-automation, raspberry-pi, security-automation, vscode-extension, wezterm, xonsh
- Language: Python
- Homepage: http://xon.sh
- Size: 30.7 MB
- Stars: 9,423
- Watchers: 94
- Forks: 724
- Open Issues: 97
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Authors: AUTHORS.rst
Awesome Lists containing this project
- awesome-python-applications - Repo - platform shell language and command prompt. The language is a superset of Python 3.4+ with additional shell primitives. `(linux, windows, mac)` (<a id="tag-dev" href="#tag-dev">Dev</a> / <a id="tag-dev.shell" href="#tag-dev.shell">Shell</a>)
- awesome-python-applications - Repo - platform shell language and command prompt. The language is a superset of Python 3.4+ with additional shell primitives. `(linux, windows, mac)` (<a id="tag-dev" href="#tag-dev">Dev</a> / <a id="tag-dev.shell" href="#tag-dev.shell">Shell</a>)
- StarryDivineSky - xonsh/xonsh
- awesome-terminals - xonsh - ๐ Python-powered, cross-platform, Unix-gazing shell (Shells)
- awesome-rainmana - xonsh/xonsh - ๐ Python-powered shell. Full-featured, cross-platform and AI-friendly. (Python)
- awesome-python-resources - GitHub - 10% open ยท โฑ๏ธ 18.08.2022): (ๅฝไปค่กๅทฅๅ ท)
- starred-awesome - xonsh - Python-powered, cross-platform, Unix-gazing shell (Python)
- awesome-ricing - Xonsh - Python-powered, cross-platform, Unix-gazing shell. (Python) (Packages / Shells)
- awesome-starred - xonsh/xonsh - :shell: Python-powered, cross-platform, Unix-gazing shell. (devops)
- definitive-opensource - xonsh - powered shell. Full-featured, cross-platform and AI-friendly. | `Cross` | **9.4k** | (Table of Contents / Shell)
- awesome-datascience - xonsh shell - powered shell that enables integration, management and orchestration of data science libraries mostly written in Python, allowing you to build pipelines, code and command-based workflows. It can also be used as a kernel for Jupyter Notebook. | (The Data Science Toolbox / Miscellaneous Tools)
- fucking-awesome-datascience - xonsh shell - powered shell that enables integration, management and orchestration of data science libraries mostly written in Python, allowing you to build pipelines, code and command-based workflows. It can also be used as a kernel for Jupyter Notebook. | (The Data Science Toolbox / Miscellaneous Tools)
README
xonsh
=====
.. raw:: html

**Xonsh** (sounds like "consh") is a full-featured and cross-platform Python-based shell. The language is a superset of Python 3 with seamless integration of shell functionality and commands. It works on all major platforms, including Linux, macOS, Windows, BSD, Jupyter, Android and Raspberry Pi.
.. raw:: html
.. list-table::
:widths: 1 1
* - **Xonsh is the Shell**
- **Xonsh is Python**
* - .. code-block:: shell
cd $HOME
id $(whoami) > ~/id.txt
cat /etc/passwd | grep root
$PROMPT = '@ '
- .. code-block:: python
2 + 2
var = "hello".upper()
@.imp.json.loads('{"a":1}')
[i for i in range(0,10)]
* - **Xonsh is the Shell in Python**
- **Xonsh is Python in the Shell**
* - .. code-block:: python
len($(curl -L https://xon.sh))
$PATH.append('/tmp')
p'/etc/passwd'.read_text().find('usr')
$(@json podman ps --format json)['ID']
- .. code-block:: python
name = 'snail'
echo @(name) > /tmp/@(name)
with p'/tmp/dir'.mkdir().cd():
touch @(input('File: '))
aliases['e'] = 'echo @(2+2)'
aliases['a'] = lambda args: print(args)
* - **Xonsh is Everywhere**
- **Xonsh is an Ecosystem**
* - .. code-block:: python
$PATH
# ['/bin', '/sbin'] # Linux
# ['/homebrew/bin'] # macOS
# ['/usr/local/bin'] # FreeBSD
# ['/mnt/c/Windows/System32'] # WSL
# [r'c:\Windows\System32'] # Windows
# ['/nix/store/0-python/bin'] # Nix
# ['/data/termux/usr/bin'] # Termux
# ['/tmp/.mount_x/usr/bin/'] # AppImage
# ['/app/bin'] # Flatpak
$PATH = ['/my/own/path']
- .. code-block:: python
xontrib load term_integration \
prompt_starship \
powerline \
dracula \
chatgpt \
django \
jupyter \
1password \
github_copilot \
history_encrypt
* - **Xonsh is a Meta-Shell**
- **Xonsh is User-extensible**
* - .. code-block:: python
xontrib load sh \
fish_completer
def nudf(cmd):
return @.imp.pandas.DataFrame(
@.imp.json.loads(
$(nu -c @(cmd+'| to json'))))
nudf!(ls -la)
aliases['ai'] = 'ollama run llama3'
ai! how to remove images in podman
- .. code-block:: python
@events.on_ptk_create
def custom_keybindings(bindings, **kw):
@bindings.add(Keys.ControlI)
def say_whoami(event):
echo $(whoami)
@events.on_postcommand
def _prompt_err_cmd(cmd, rtn, out, ts):
if rtn != 0:
$XONSH_PROMPT_NEXT_CMD = cmd.rstrip()
If you like xonsh, :star: the repo and spread the word about xonsh.
.. class:: center
.. image:: https://img.shields.io/badge/Zulip%20Community-xonsh-green
:target: https://xonsh.zulipchat.com/
:alt: Join to xonsh.zulipchat.com
.. image:: https://repology.org/badge/tiny-repos/xonsh.svg
:target: https://repology.org/project/xonsh/versions
:alt: repology.org
.. image:: https://img.shields.io/badge/Docker%20Hub-xonsh-blue
:target: https://hub.docker.com/u/xonsh
:alt: hub.docker.com
.. image:: https://img.shields.io/badge/AppImage-xonsh-lightblue
:target: https://xon.sh/appimage.html
:alt: AppImage
.. image:: https://github.com/xonsh/xonsh/actions/workflows/test.yml/badge.svg
:target: https://github.com/xonsh/xonsh/actions/workflows/test.yml
:alt: GitHub Actions
.. image:: https://codecov.io/gh/xonsh/xonsh/branch/master/graphs/badge.svg?branch=main
:target: https://codecov.io/github/xonsh/xonsh?branch=main
:alt: codecov.io
First steps
***********
- `Installation `_ - isolated environment, package, container or portable AppImage.
- `Tutorial `_ - step by step introduction in xonsh.
- `Cheat sheet `_ - some beginners may find this a helpful place to start.
Extensions
**********
Xonsh has an extension/plugin system. We call these additions ``xontribs``.
- `Xontribs on Github `_
- `Awesome xontribs `_
- `Core xontribs `_
- `Create a xontrib step by step from template `_
Projects that use xonsh or compatible
*************************************
- `Assistant `_: An AI-powered shell with a full Xonsh terminal and a multi-agent LLM system.
- `CrateDB `_: The Database for Real-Time Analytics and Hybrid Search.
- `conda `_ and `mamba `_: Cross-platform package managers.
- `Starship `_: Cross-shell prompt.
- `zoxide `_: A smarter cd command.
- `gitsome `_: Supercharged Git/shell autocompleter with GitHub integration.
- `xxh `_: Using xonsh wherever you go through the SSH.
- `kash `_: The knowledge agent shell.
- `Snakemake `_: A workflow management system to create reproducible and scalable data analyses.
- `any-nix-shell `_: xonsh support for the ``nix run`` and ``nix-shell`` environments of the Nix package manager.
- `lix `_: A modern, delicious implementation of the Nix package manager.
- `x-cmd `_: x-cmd is a vast and interesting collection of tools guided by the Unix philosophy.
- `rever `_: Cross-platform software release tool.
- `Regro autotick bot `_: Regro Conda-Forge autoticker.
Jupyter-based interactive notebooks via `xontrib-jupyter `_:
- `Jupyter and JupyterLab `_: Interactive notebook platform.
- `Euporie `_: Terminal based interactive computing environment.
- `Jupytext `_: Clear and meaningful diffs when doing Jupyter notebooks version control.
Compiling, packaging, or accelerating xonsh:
- `AppImage `_ is a format for distributing Linux applications and can be used to `create a standalone xonsh package `_.
- `Nuitka `_ is an optimizing Python compiler that can `build a native xonsh binary `_.
- `RustPython `_ is a Python interpreter written in Rust that can `run xonsh on top of Rust `_.
Welcome to the xonsh shell community
************************************
The xonsh shell is developed by a community of volunteers. There are a few ways to help out:
- Write a note or an article about xonsh.
- Send a link to Xonsh to your favorite blogger.
- Add xonsh support in third party tool: `package manager `_, `terminal emulator `_, `console tool `_, `IDE `_.
- Give a star to xonsh repository and to `xontribs `_ you like.
- Solve a `popular issue `_ or `high priority issue `_ or a `good first issue `_. You can start with the `Developer guide `_. Feel free to use LLM e.g. `Github Copilot `_.
- Take an `idea `_ and `create a new xontrib `_.
- Contribute to `xonsh API `_.
- Become xonsh core developer by deep diving into xonsh internals. E.g. we feel a lack of Windows support.
- Test xonsh with compiler, interpreter, optimizer and report upstream issues (e.g. `Nuitka `_, `RustPython `_).
- Design more `logos and images `_, improve `xonsh website `_ (`src `_).
- `Become a sponsor to xonsh `_.
We welcome new contributors!
Credits
*******
- Thanks to `Zulip `_ for supporting the `xonsh community `_!
- Thanks to `HELLOTUX `_ for distributing the `xonsh t-shirts, backpacks and more `_!
- Thanks to ADS.FUND for supporting `xonsh token `_!