Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Pipes that double as weapons!
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Command-line tools for web apps


Kiseru is a set of command-line tools that move data between web apps - with the flexibility and power you expect from the Unix command line.

For instance, using Kiseru, you can:

  • Create a Pivotal Tracker bug from a YouTrack bug
  • Create a Trello QA card from a Pivotal Tracker bug
  • Create new Pivotal Tracker stories in your favorite text editor
  • And so much more…

In the spirit of "do one thing, do it well", each Kiseru command interacts with a one web app by reading and writing JSON. ki_middleman transforms JSON from one format to another. ki_format slices and dices the JSON so it can be consumed by tools like grep and tail.

A standard Kiseru command will look like

<write JSON from ki_some_app> | <transform JSON with ki_middleman> | <read JSON with ki_some_other_app>


$ gem install ki_pivotal ki_youtrack ki_middleman ki_format ki_trello
$ ki_youtrack init
$ ki_pivotal init
$ ki_trello init
$ ki_middleman --init

Optionally, you can also install moreutils, which include the handy vipe tool

$ brew install moreutils

You can then edit the files in ~/.kiseru. Specifically, you will want to edit ~/.kiseru/transforms.rb


Move a YouTrack bug into Tracker:

$ ki_youtrack issue <ISSUE_ID> | ki_middleman --to pivotal_story | ki_pivotal new_story --project=<PROJECT_ID>

Or, to do all that, then copy the URL to your clipboard (so you can paste it into a browser)

$ ki_youtrack issue <ISSUE_ID> | ki_middleman --to pivotal_story | ki_pivotal new_story --project=<PROJECT_ID> | ki_format --select story_url | pbcopy

Want to edit the file in the pipe? use vipe (make sure EDITOR has been set)

$ ki_youtrack issue <ISSUE_ID> | ki_middleman --to pivotal_story | vipe | ki_pivotal new_story --project=<PROJECT_ID>


Something went wrong with that request. Please try again.