cmd2 3.4.0


pip install cmd2

  Latest version

Released: Mar 03, 2026

Project Links

Meta
Author: cmd2 Contributors
Requires Python: >=3.10

Classifiers

Development Status
  • 5 - Production/Stable

Environment
  • Console

Operating System
  • OS Independent

Intended Audience
  • Developers
  • System Administrators

Programming Language
  • Python :: 3 :: Only
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13
  • Python :: 3.14
  • Python :: 3.15
  • Python :: Free Threading :: 3 - Stable

Topic
  • Software Development :: Libraries :: Python Modules

cmd2 : immersive interactive command line applications

Latest Version Tests codecov Documentation Status Chat

Developer's ToolboxPhilosophyInstallationDocumentationTutorialsHello WorldProjects using cmd2

Screenshot

cmd2 is a tool for building interactive command line applications in Python. Its goal is to make it quick and easy for developers to build feature-rich and user-friendly interactive command line applications. It provides a simple API which is an extension of Python's built-in cmd module. cmd2 provides a wealth of features on top of cmd to make your life easier and eliminates much of the boilerplate code which would be necessary when using cmd.

:warning: cmd2 3.0.0 has been released and there are some significant backwards incompatibilities from version 2.x. Please see the Migration Guide for tips on upgrading from cmd2 2.x to 3.x.

The developers toolbox

system schema

When creating solutions developers have no shortage of tools to create rich and smart user interfaces. System administrators have long been duct taping together brittle workflows based on a menagerie of simple command line tools created by strangers on github and the guy down the hall. Unfortunately, when CLIs become significantly complex the ease of command discoverability tends to fade quickly. On the other hand, Web and traditional desktop GUIs are first in class when it comes to easily discovering functionality. The price we pay for beautifully colored displays is complexity required to aggregate disparate applications into larger systems. cmd2 fills the niche between high ease of command discovery applications and smart workflow automation systems.

The cmd2 framework provides a great mixture of both worlds. Application designers can easily create complex applications and rely on the cmd2 library to offer effortless user facing help and extensive tab completion. When users become comfortable with functionality, cmd2 turns into a feature rich library enabling a smooth transition to full automation. If designed with enough forethought, a well implemented cmd2 application can serve as a boutique workflow tool. cmd2 pulls off this flexibility based on two pillars of philosophy:

  • Tab Completion
  • Automation Transition

Philosophy

Deep extensive tab completion and help text generation based on the argparse library create the first pillar of 'ease of command discovery'. The following is a list of features in this category.

  • Great tab completion of commands, subcommands, file system paths, and shell commands.
  • Custom tab completion for user designed commands via simple function overloading.
  • Tab completion from persistent_history_file sources added with very little friction.
  • Automatic tab completion of argparse flags and optional arguments.
  • Path completion easily enabled.
  • When all else fails, custom tab completion based on choices_provider can fill any gaps.

cmd2 creates the second pillar of 'ease of transition to automation' through alias/macro creation, command line argument parsing and execution of cmd2 scripting.

  • Flexible alias and macro creation for quick abstraction of commands.
  • Text file scripting of your application with run_script (@) and _relative_run_script (@@)
  • Powerful and flexible built-in Python scripting of your application using the run_pyscript command
  • Transcripts for use with built-in regression can be automatically generated from history -t or run_script -t

Installation

On all operating systems, the latest stable version of cmd2 can be installed using pip:

pip install -U cmd2

cmd2 works with Python 3.10+ on Windows, macOS, and Linux. It is pure Python code with few 3rd-party dependencies. It works with both conventional CPython and free-threaded variants.

For information on other installation options, see Installation Instructions in the cmd2 documentation.

Documentation

The latest documentation for cmd2 can be read online here: https://cmd2.readthedocs.io/en/latest/

It is available in HTML, PDF, and ePub formats.

The best way to learn the cmd2 api is to delve into the example applications located in source under examples.

Tutorials

Hello World

#!/usr/bin/env python
"""A simple cmd2 application."""
import cmd2


class FirstApp(cmd2.Cmd):
    """A simple cmd2 application."""

    def do_hello_world(self, _: cmd2.Statement):
        self.poutput('Hello World')


if __name__ == '__main__':
    import sys

    c = FirstApp()
    sys.exit(c.cmdloop())

Found a bug?

If you think you've found a bug, please first read through the open Issues. If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so we can reproduce the bug. At a minimum, please state the following:

  • cmd2 version
  • Python version
  • OS name and version
  • What you did to cause the bug to occur
  • Include any traceback or error message associated with the bug

Projects using cmd2

Application Name Description Organization or Author
CephFS Shell The Ceph File System, or CephFS, is a POSIX-compliant file system built on top of Ceph’s distributed object store ceph
garak LLM vulnerability scanner that checks if an LLM can be made to fail in a way we don't want NVIDIA
medusa Binary instrumentation framework that that automates processes for the dynamic analysis of Android and iOS Applications Ch0pin
InternalBlue Bluetooth experimentation framework for Broadcom and Cypress chips Secure Mobile Networking Lab
SCCMHunter A post-ex tool built to streamline identifying, profiling, and attacking SCCM related assets in an Active Directory domain Garret Foster
Unipacker Automatic and platform-independent unpacker for Windows binaries based on emulation unipacker
Frankenstein Broadcom and Cypress firmware emulation for fuzzing and further full-stack debugging Secure Mobile Networking Lab
Poseidon Leverages software-defined networks (SDNs) to acquire and then feed network traffic to a number of machine learning techniques. Faucet SDN
DFTimewolf A framework for orchestrating forensic collection, processing and data export log2timeline
GAP SDK SDK for Greenwaves Technologies' GAP8 IoT Application Processor GreenWaves Technologies
REW Sploit Emulate and Dissect Metasploit Framework (MSF) and other attacks REW-sploit
tomcatmanager A command line tool and python library for managing a tomcat server tomcatmanager
Falcon Toolkit Unleash the power of the CrowdStrike Falcon Platform at the CLI CrowdStrike
EXPLIoT Internet of Things Security Testing and Exploitation framework expliot_framework
Pobshell A Bash‑like shell for live Python objects: cd, ls, cat, find and CLI piping for object code, str values & more Peter Dalloz

Possibly defunct but still good examples

Application Name Description Organization or Author
Katana Automatic CTF Challenge Solver John Hammond
SatanSword (in Chinese) Comprehensive Penetration Framework for Red Teaming Lucifer1993
Jok3r Network & Web Pentest Automation Framework Koutto
Counterfit a CLI that provides a generic automation layer for assessing the security of ML models Microsoft Azure
Overlord Red Teaming Infrastructure Automation QSecure Labs
Automated Reconnaissance Pipeline An automated target reconnaissance pipeline epi052
JSShell An interactive multi-user web JavaScript (JS) shell Den1al
RedShell An interactive command prompt for red teaming and pentesting Verizon
FLASHMINGO Automatic analysis of SWF files based on some heuristics. Extensible via plugins. Mandiant
psiTurk An open platform for science on Amazon Mechanical Turk NYU Computation and Cognition Lab

Note: If you have created an application based on cmd2 that you would like us to mention here, please get in touch.

4.0.0b2 Mar 24, 2026
4.0.0b1 Mar 03, 2026
3.4.0 Mar 03, 2026
3.3.0 Mar 01, 2026
3.2.2 Feb 21, 2026
3.2.1 Feb 21, 2026
3.2.0 Feb 05, 2026
3.1.3 Feb 03, 2026
3.1.2 Jan 27, 2026
3.1.1 Jan 27, 2026
3.1.0 Dec 25, 2025
3.0.0 Dec 07, 2025
3.0.0rc1 Sep 26, 2025
3.0.0b2 Sep 17, 2025
3.0.0b1 Sep 16, 2025
2.7.0 Jun 30, 2025
2.6.2 Jun 26, 2025
2.6.1 Jun 08, 2025
2.6.0 May 31, 2025
2.5.11 Jan 25, 2025
2.5.10 Jan 25, 2025
2.5.9 Jan 18, 2025
2.5.8 Dec 18, 2024
2.5.7 Nov 23, 2024
2.5.6 Nov 14, 2024
2.5.5 Nov 13, 2024
2.5.4 Nov 07, 2024
2.5.3 Nov 05, 2024
2.5.2 Nov 03, 2024
2.5.1 Nov 02, 2024
2.5.0 Oct 24, 2024
2.4.3 Jan 28, 2023
2.4.2 Jul 13, 2022
2.4.1 Apr 13, 2022
2.4.0 Feb 23, 2022
2.3.3 Nov 29, 2021
2.3.2 Nov 22, 2021
2.3.1 Nov 19, 2021
2.3.0 Nov 11, 2021
2.2.0 Sep 14, 2021
2.1.2 Jul 05, 2021
2.1.1 Jun 17, 2021
2.1.0 Jun 14, 2021
2.0.1 Jun 07, 2021
2.0.0 Jun 07, 2021
1.5.0 Jan 31, 2021
1.4.0 Nov 12, 2020
1.3.11 Oct 01, 2020
1.3.10 Sep 18, 2020
1.3.9 Sep 04, 2020
1.3.8 Aug 28, 2020
1.3.7 Aug 27, 2020
1.3.6 Aug 27, 2020
1.3.5 Aug 25, 2020
1.3.4 Aug 20, 2020
1.3.3 Aug 13, 2020
1.3.2 Aug 10, 2020
1.3.1 Aug 06, 2020
1.3.0 Aug 04, 2020
1.2.1 Jul 14, 2020
1.2.0 Jul 14, 2020
1.1.0 Jun 06, 2020
1.0.2 Apr 06, 2020
1.0.1 Mar 13, 2020
1.0.0 Mar 01, 2020
0.10.1 Feb 19, 2020
0.10.0 Feb 08, 2020
0.9.25 Jan 26, 2020
0.9.24 Jan 24, 2020
0.9.23 Jan 10, 2020
0.9.22 Dec 10, 2019
0.9.21 Nov 26, 2019
0.9.20 Nov 13, 2019
0.9.19 Oct 14, 2019
0.9.18 Oct 01, 2019
0.9.17 Sep 24, 2019
0.9.16 Aug 08, 2019
0.9.15 Jul 25, 2019
0.9.14 Jun 29, 2019
0.9.13 Jun 15, 2019
0.9.12 Apr 23, 2019
0.9.11 Mar 13, 2019
0.9.10 Feb 22, 2019
0.9.9 Feb 22, 2019
0.9.8 Feb 07, 2019
0.9.7 Jan 09, 2019
0.9.6 Oct 13, 2018
0.9.5 Oct 11, 2018
0.9.4 Aug 21, 2018
0.9.3 Jul 12, 2018
0.9.2 Jun 29, 2018
0.9.1 May 28, 2018
0.9.0.1 May 28, 2018
0.8.9 Aug 21, 2018
0.8.8 Jun 29, 2018
0.8.7 May 28, 2018
0.8.7rc1 May 28, 2018
0.8.6.1 May 28, 2018
0.8.6 May 27, 2018
0.8.5 Apr 15, 2018
0.8.4 Apr 10, 2018
0.8.3 Apr 09, 2018
0.8.2 Mar 21, 2018
0.8.1 Mar 10, 2018
0.8.0 Feb 01, 2018
0.7.9 Jan 04, 2018
0.7.8 Nov 09, 2017
0.7.7 Aug 25, 2017
0.7.6 Aug 11, 2017
0.7.5 Jul 08, 2017
0.7.4 Jul 03, 2017
0.7.3 Jun 23, 2017
0.7.2 May 22, 2017
0.7.1 May 22, 2017
0.7.0 Feb 23, 2017
0.6.9 Oct 03, 2016
0.6.8 Dec 09, 2014
0.6.7 Sep 21, 2013
0.6.6.1 Aug 14, 2013
0.6.6 Aug 06, 2013
0.6.5.1 Mar 18, 2013
0.6.5 Feb 28, 2013
0.6.4 May 27, 2012
0.6.3 Jul 29, 2011
0.6.2 Nov 09, 2010
0.6.1 Mar 03, 2010
0.6.0 Feb 18, 2010
0.5.5 Aug 08, 2009
0.5.4 Jun 02, 2009
0.5.3 Apr 30, 2009
0.5.2 Apr 03, 2009
0.5.1 Mar 30, 2009
0.5.0 Mar 24, 2009
0.4.8 Mar 19, 2009
0.4.7 Mar 02, 2009
0.4.6 Feb 25, 2009
0.4.5 Jan 28, 2009
0.4.4 Dec 22, 2008
0.4.3 Nov 07, 2008
0.4.2 Nov 05, 2008
0.4.1 Oct 29, 2008
0.4 Oct 28, 2008
0.3.7 Sep 29, 2008
0.3.6 Sep 04, 2008
0.3.5 Aug 02, 2008
0.3.4.1 Jul 02, 2008
0.3.4 Jun 09, 2008
0.3.3 May 28, 2008
0.3.2 May 21, 2008
0.3.1 May 19, 2008
0.3.0 May 15, 2008
0.2.3 May 14, 2008
0.2.2 Apr 11, 2008
0.2.1 Mar 03, 2008
0.2 Feb 26, 2008
0.1 Jan 06, 2008
0.6.0.py3 Feb 19, 2010
0.4.win32 Oct 28, 2008
0.4.4.win32 Dec 22, 2008
0.4.3.win32 Nov 07, 2008
0.4.1.win32 Oct 29, 2008
0.3.5.win32 Aug 04, 2008
0.3.4.win32 Jun 09, 2008
0.3.3.win32 May 28, 2008
0.2.win32 Feb 26, 2008
0.2.3.win32 May 14, 2008
0.2.2.win32 Apr 11, 2008
0.2.1.win32 Mar 05, 2008
0.1.win32 Jan 03, 2008

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras: None
Dependencies:
backports.strenum
gnureadline (>=8)
pyperclip (>=1.8.2)
pyreadline3 (>=3.4)
rich (>=14.3.0)
rich-argparse (>=1.7.1)
typing-extensions