A little CLI sugar for the GitHub API, built with gli and Octokit.

Still early. Rapidly evolving. Why not help out?

Why not hub?

hub is great, you should use it; however, hub primarily focuses on smoothing the git workflow for GitHub and most commands are in the context of a GitHub repository.

Octonaut is a more general-purpose CLI for the GitHub API. Oh, and plugins.


Install via RubyGems:

gem install octonaut

Example usage

$ octonaut
    octonaut - Octokit-powered CLI for GitHub

    octonaut [global options] command [command options] [arguments...]

    -a, --[no-]auto_traversal      - Automatically fetch all pages of paginated results
    --help                         - Show this message
    -n, --[no-]netrc               - Use .netrc file for authentication
    --netrc-file=arg               - .netrc file for authentication (default: none)
    -p, --password=arg             - GitHub password (default: ********)
    -t, --oauth_token, --token=arg - GitHub API token (default: ********)
    -u, --login=arg                - GitHub login (default: none)

    archive-link           - Get repository tarball or zipball archive URL
    authorize              - Create and store an API token using username and password
    browse                 - Browse resource on github.com
    contents               - Get repository contents
    follow                 - Follow a user
    followers              - View followers for a user
    following              - View who a user is following
    follows                - Check to see if a user follows another
    help                   - Shows a list of commands or help for one command
    initconfig             - Initialize the config file using current global options
    langs, languages       - Display languages for a repo
    markdown, md           - Convert markdown to HTML
    me                     - View your profile
    readme                 - View README for repository
    repo, repository       - Display details for a repository
    repos, repositories    - List repositories for a user or organization
    scopes                 - List scopes for a token
    star                   - Star a repository
    stargazers             - List stargazers
    starred                - List or check starred repositories for a user
    subscribe              - Subscribe to a repository
    subscribers            - List subscribers for a repository
    subscriptions          - List user repository subscriptions
    tokens, authorizations - Manage tokens
    unfollow               - Unfollow a user
    unstar                 - Unstar a repository
    unsubscribe            - Unsubscribe to a repository
    user, whois            - Manage users

View a user's profile:

$ octonaut whois cloudhead
       ID 40774
   JOINED 2008-12-16T15:09:49Z
    LOGIN cloudhead
     NAME Alexis Sellier
  COMPANY SoundCloud, Ltd.
      URL http://twitter.com/cloudhead

Browse a user on github.com in your default browser:

$ octonaut browse cloudhead

List followers: $ octonaut followers pengwynn krisbulman camdub cglee nextmat zachinglis seaofclouds njonsson davidnorth polomasta webiest mchelen brogers marclove adamstac marshall asenchi piyush rmetzler nileshtrivedi sferik jimmybaker jnunemaker peterberkenbosch leah jakestutzman nkabbara etagwerker vagostino johan-- bry4n ...

Follow a user: $ octonaut follow linus Followed linus.

Unfollow a user: $ octonaut unfollow pengwynn Unfollowed pengwynn.

Convert some markdown: ``` $ octonaut markdown "# Header #"


Convert markdown using STDIN

$ echo "Fixed in #3 " | octonaut markdown -c pengwynn/octonaut

Fixed in #3

" ```

... and much more.

Extend with plugins

Octonaut makes it simple to extend the CLI with new commands just by adding some Ruby files to ~/.octonaut_plugins:

$ cat ~/.octonaut_plugins/test.rb
module Octonaut

  desc 'An plugin method'
  arg_name 'text'
  command :say do |c|
    c.action do |global,options,args|
      puts @client.say args.shift

$ export OCTONAUT_PLUGINS_PATH=~./octonaut_plugins
$ octonaut say "hello from plugins"

           MMM.           .MMM
           MMMMMMMMMMMMMMMMMMM      ____________________
          MMMMMMMMMMMMMMMMMMMMM    |                    |
         MMMMMMMMMMMMMMMMMMMMMMM   | hello from plugins |
        MMMMMMMMMMMMMMMMMMMMMMMM   |_   ________________|
        MMMM::- -:::::::- -::MMMM    |/
         MM~:~   ~:::::~   ~:~MM
    .. MMMMM::. .:::+:::. .::MMMMM ..
          .MM::::: ._. :::::MM.
      -MM        MMMMMMM
      ^  M+     MMMMMMMMM
          MMMMMMM MM MM MM
               MM MM MM MM
               MM MM MM MM


Octonaut is inspired by t, the awesome Twitter CLI from Erik Michaels-Ober.


Copyright (c) 2013 Wynn Netherland. See LICENSE for details.