Terminal Apps The Easy Way

Everything you need to create great Terminal Apps

  • Flexible

    TTY components let you solve command line problems in the same way Unix philosophy of focused tools does. You can mix and match components as you please.

  • Composable

    Each component is an independent piece and can be combined in many ways with other libraries outside of tty ecosystem.

  • Reliable

    All tty components are well tested to work on all major operating systems and terminal emulators, allowing you to create platform agnostic tools.

  • Simple

    Each tty component is a focused package of straightforward api calls. The source is small and easy to understand, so you can spend time creating and not learning how to use.

  • Quick Start

    You are one step away from generating your terminal application. To create a terminal app all you need is to install tty gem. Once tty gem is installed you gain access to a powerful teletype executable. By running teletype with a name of your tool, you will generate your command line application. What's left to do is to add your commands which again can be genereted using teletype.

  • $ gem install tty
    Successfully installed tty
    1 gem installed
    $ teletype new app
    Your teletype project has been created successfully.
    Run "teletype help" for more commands.
    $ teletype add config
    $ teletype add search

Learn more on github

Explore components

Mix & match what you need to create your command line tool

  • tty-prompt

    A beautiful and powerful interactive command line prompt.

    Learn more
  • tty-progressbar

    A flexible progress bars drawing in terminal emulators.

    Learn more
  • tty-option

    Parser for command line arguments, keywords and options.

    Learn more
  • tty-logger

    A readable, structured and beautiful logging for the terminal.

    Learn more
  • tty-table

    A flexible and intuitive table output generator.

    Learn more
  • tty-markdown

    Convert a markdown document or text into a terminal friendly output.

    Learn more
  • tty-command

    Execute shell commands with pretty logging.

    Learn more
  • tty-file

    File and directory manipulation utility methods.

    Learn more
  • tty-config

    Define, read and write any Ruby app configurations with a penchant for terminal clients.

    Learn more

View all components

  • Installing a Component

    TTY components are installed and managed via rubygems, the ruby package manager. Choose the tty component that matches your needs and install it using its name.

  • $ gem install tty-prompt
    Successfully installed tty-prompt
    Parsing documentation for tty-prompt
    1 gem installed


Nice Things People Have Said

  • The TTY gem-suite has helped me automate a ton of stuff I was doing manually. Writing the scripts in Ruby instead of pure Bash script has motivated me a lot, too. The api design for prompts, spinners and commands made it so intuitive to use, such a joy.

    Tim Brandes

    CEO, Zinkler & Brandes GmbH

  • I was always surprised by the amount of problems that the TTY family of gems solves. I remember when I first started looking for solutions for the command line gems I was developing, more often than not I landed on one of the TTY gems.

    Danny Ben Shitrit

    COO, Telesofia Medical

  • The tty-progressbar really helped us in a complex database migration that we had at work recently, it was so incredibly convenient to have all of these features available: ETA display, rate display, logging frequency option, interval option. It worked great for us, and thank you for all your awesome work!

    Janko Marohnić

    Software Engineer, Theorem

  • I came across the TTY gem suite in 2018 when I attended a talk at Ruby Kaigi. Since then it's been my default gem suite when I need to write my tools both for work as well as open source (story_branch gem relies heavily on TTY). Intuitive API, clean UX. Definitely on my awesome gems list.

    Rui Baltazar

    Tech Lead, OpsManager

Trusted by

Devs at these companies use TTY components