Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


twosheds is a library, written in Python, for making command language interpreters, or shells.

While shells like bash and zsh are powerful, extending them and customizing them is hard; you need to write in inexpressive arcane languages, such as bash script or C. twosheds helps you write and customize your own shell, in pure Python:

>>> import twosheds
>>> shell = twosheds.Shell()
>>> shell.serve_forever()
$ whoami
$ ls
AUTHORS.rst       build             requirements.txt
LICENSE           dist              scripts           tests
Makefile          docs              setup.cfg         twosheds
README.rst        env               twosheds.egg-info

Get started now.


  • Substitution
  • History
  • Tab completion
  • Highly extensible


To install twosheds, simply:

$ pip install twosheds


Documentation is available at


twosheds is under active development and contributions are especially welcome.

  1. Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug.
  2. Fork the repository on GitHub to start making your changes to the master branch (or branch off it).
  3. Write a test which shows that the bug was fixed or that the feature works as expected.
  4. Send a pull request and bug the maintainer until its get merged and published. Make sure to add yourself to AUTHORS. :)


If you have questions or issues about twosheds, there are several options:

Send a Tweet

If your question is less than 140 characters, feel free to tweet at the maintainer, @Ceasar_Bautista.

File an Issue

If you notice some unexpected behavior in twosheds, or want to see support for a new feature, file an issue on GitHub issues.


I'm more than happy to answer any personal or in-depth questions about twosheds. Feel free to email