Skip to content

Switch to mobile version
This repository
Pull requests

Unwatch 1
Star 0
Fork 66 barkinet/mas
forked from mas-cli/mas
Code Pull requests 0 Projects 0 Wiki Pulse Graphs Settings
📦 Mac App Store command line interface Edit
Add topics
186 commits
1 branch
12 releases
14 contributors
Swift 57.2% Objective-C 34.6% Perl 4.6% Shell 2.8% Other 0.8%
Swift Objective-C Perl Shell Other
Clone or download Create new file Upload files Find file Branch: master New pull request
Pull request Compare This branch is even with mas-cli:master.
Latest commit 281dcf0 on Jan 15 rodionovd Revert “Enable Whole Module Optimization” …
Seeds Commit dependencies 6 months ago
mas-cli.xcodeproj Revert “Enable Whole Module Optimization” 2 months ago
mas-cli Swiftify rest of the code 5 months ago
script Ensure sed doesn’t save backups 6 months ago
.gitignore Commit dependencies 6 months ago
.ruby-version Use a newer ruby to keep activesupport happy 6 months ago
.travis.yml Update Travis CI Xcode image to 8.2 2 months ago
Gemfile Upgrade bundler dependencies a year ago
Gemfile.lock Update gems 6 months ago
LICENSE Add the license 2 years ago Add details about Homebrew integration 5 months ago
Seedfile Update to Commandant 0.11.1 6 months ago
mas-cli.png Add logo to the readme 6 months ago


A simple command line interface for the Mac App Store. Designed for scripting and automation.


Homebrew is the preferred way to install:

brew install mas
Alternatively, binaries are available in the GitHub Releases


Each application in the Mac App Store has a product identifier which is also used for mas-cli commands. Using mas list will show all installed applications and their product identifiers.

$ mas list
446107677 Screens
407963104 Pixelmator
497799835 Xcode
It is possible to search for applications by name using mas search which will search the Mac App Store and return matching identifiers

$ mas search Xcode
497799835 Xcode
688199928 Docs for Xcode
449589707 Dash 3 – API Docs & Snippets. Integrates with Xcode, Alfred, TextWrangler and many more.
To install or update an application simply run mas install with an application identifier:

$ mas install 808809998
==> Downloading PaintCode 2
==> Installed PaintCode 2
Please note that this command will not allow you to install (or even purchase) an app for the first time: it must already be in the Purchased tab of the App Store.
Use mas outdated to list all applications with pending updates.

$ mas outdated
497799835 Xcode (7.0)
446107677 Screens VNC – Access Your Computer From Anywhere (3.6.7)
mas is only able to install/update applications that are listed in the Mac App Store itself. Use softwareupdate(8) utility for downloading system updates (like iTunes, Xcode Command Line Tools, etc)
To install all pending updates run mas upgrade.

$ mas upgrade
Upgrading 2 outdated applications:
Xcode (7.0), Screens VNC – Access Your Computer From Anywhere (3.6.7)
==> Downloading Xcode
==> Installed Xcode
==> Downloading iFlicks
==> Installed iFlicks
Updates can be performed selectively by providing the app identifier(s) to mas upgrade

$ mas upgrade 715768417
Upgrading 1 outdated application:
Xcode (8.0)
==> Downloading Xcode
==> Installed Xcode
To sign into the Mac App Store for the first time run mas signin.

$ mas signin
==> Signing in to Apple ID:
If you experience issues signing in this way, you can ask to signin using a graphical dialog (provided by Mac App Store application):

$ mas signin –dialog
==> Signing in to Apple ID:
You can also embed your password in the command.

$ mas signin “ZdkM4f$gzF;”
==> Signing in to Apple ID:
Use mas signout to sign out from the Mac App Store.

Homebrew integration

mas is integrated with homebrew-bundle. If mas is installed, and you run brew bundle dump, then your Mac App Store apps will be included in the Brewfile created. See the homebrew-bundle docs for more details.

When something doesn’t work

If mas doesn’t work for you as expected (e.g. you can’t update/download apps), run mas reset and try again. If the issue persists, please file a bug! All your feedback is much appreciated ✨

Using tmux

mas operates via the same system services as the Mac App Store. These exist as separate processes with communication through XPC. As a result of this, mas experiences similar problems as the pasteboard when running inside tmux. A wrapper tool exists to fix pasteboard behaviour which also works for mas.

You should consider configuring tmux to use the wrapper but if you do not wish to do this it can be used on a one-off basis as follows:

$ brew install reattach-to-user-namespace
$ reattach-to-user-namespace mas install
Build from source

You can now build from Xcode by opening mas-cli.xcodeproj, or from the Terminal:

$ script/build
Build output can be found in the build/ directory within the project.


Code is under the MIT license.
Contact GitHub API Training Shop Blog About
© 2017 GitHub, Inc. Terms Privacy Security Status Help