Take your iTerm2 environments with you wherever you go.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


⚠️ termrc has moved! ⚠️

Project rewritten in node and jxa, called 🔥mert🔥. Please file any new issues there.


Take your iTerm2 environments with you wherever you go.


Termrc allows you to store information about your project's environment for a given project in a small YAML file called a Termfile file. Restoring your project's environment is as simple as calling termrc start. Enjoy.

Quick Start

$ gem install termrc
$ termrc create
$ termrc start

The Termfile

The Termfile file is a YAML file which stores information about your project's environment. An environment, in this context, is an iTerm2 window with various panes, each with a different default command that is run when the pane opens. The layout dictates what your window looks like, while commands gives you a set of commands you can call for each pane.

Place the Termfile file at your project's root, then call termrc start. Voila!

Example Termfile

  here:       echo "Hello, here."
  there:      echo "Hello, there."
  world:      echo "Hello, world."
  me:         echo "Hello, me."
  you:        echo "Hello, you."

  - [ here, there ]       # row 1, with 2 panes
  - [ world ]             # row 2, with 1 pane
  - [ me, you ]           # row 3, with 2 panes

The Result

A Termfile file is a YAML file which requires two keys: commands and a layout. Each item in layout corresponds to a row of panes in iTerm2. So, for instance, the example Termfile file above would produce a new iTerm2 window with the following commands running inside each pane:

You can supply an optional key, root, which indicates the root directory you'd like each command to be run inside of. Have a look at this project's Termfile for an example.

You can also supply a layout_type value, either row or column, which denotes whether to use rows or columns as the means for splitting the window. This defaults to layout_type: row.


You can automate tabs by providing an array of arrays, each array denoting a new tab and the layout within it. See this template file for an example.

** Windows **

You can also use termrc to open multiple windows like so.


$ termrc start      # Start termrc file (Shortcut: s, Argument 0: file (optional) )
$ termrc create     # Create termrc file
$ termrc list       # List termrc files in folder (Shortcut: l, Argument 0: folder (optional))


Released under the MIT License.


Brian Gonzalez


  • March 9, 2015 - Release 0.2.3; support for windows (not the OS)
  • March 19, 2014 - Now using Termfile; panes now named with given command