Skip to content
Parse on Buddy CLI
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib `request` must be promisified in lib/cli.js Apr 6, 2017
.eslintrc.yml eslint tweaks Mar 30, 2017
.gitignore Fix user-agent Apr 5, 2017
.travis.yml Modularise. Improve test/CI. Make node v4/5 happy. Nov 15, 2016
LICENSE Initial commit Nov 10, 2016 Update README Apr 5, 2017
index.js Use the proper [...] URL. Jun 8, 2017
package.json Update package.json May 3, 2017

Parse on Buddy CLI

Build Status NPM

This tool allows you to upload your Parse cloud code and static files for hosting to the Parse on Buddy service. It also allows you to manage different versions of cloud code/static files.


This tool depends on NPM, the Node Package Manager distributed with Node.js. Node.js/NPM installation instructions are here.

The tool depends on the following environment variables. Please set them appropriately in your environment before using the tool:



Open a command shell, and type npm install -g parse-on-buddy.


Directory Structure

Cloud code requires at least one JavaScript file, main.js. Other files can be included along with directory hierarchies such as node_modules. Static files need to be in a sibling directory named public. Here is the required directory structure:

+-- cloud
|   +-- main.js
|   +-- foo.js
|   +-- node_modules/...
+-- public
|   +-- sample.txt
|   +-- etc.

The public directory is required even if you have no static files to upload; it can remain empty.

You invoke the tool from the root of the directory structure, that is the parent directory of cloud and public.


A combined set of cloud code and static files is called a version. Using the tool you upload each version to Parse on Buddy. The latest version becomes active. You can also activate older versions using the tool.

Web Hosting

All the files in the public directory are publicly available at the URLs that are of the following format:{app ID}/{directory structure}/{file}. Using the above directory structure example, and a sample app ID of 98d29ee6-0b40-4296-9665-10d36b9ae0ad, the resulting URL would be


There are some incompatibilities with the old cloud code service. They are detailed here.


For help, run without arguments:

$ parse-on-buddy


  -h, --help
  -g, --generate
  -V, --version
  -l, --listVersions
  -c, --createVersion number
  -a, --activateVersion number
  -v, --currentVersion

Here is an example walkthrough:

$ mkdir ExampleParseApp

$ cd ExampleParseApp

$ parse-on-buddy --generate
Generating template public and cloud directories...

$ ls -l cloud public
total 8
-rw-r--r--  1 parse  staff  89 10 Nov 15:49 main.js

total 8
-rw-r--r--  1 parse  staff  12 10 Nov 15:49 hello.txt

$ cat cloud/main.js
Parse.Cloud.define("hello", function(request, response) { response.success("world"); });

# In a new app, there is only v1, a starter version with example content.
$ parse-on-buddy -l
Listing application versions...

$ curl -X POST --header x-parse-application-id:<app-id>
{ "result": "world" }

$ curl<app-id>/hello.txt
hello world

Let's change main.js to do something different.

$ cat > cloud/main.js
Parse.Cloud.define("something", function(request, response) { response.success("different"); });

$ parse-on-buddy -c 2
Listing application versions...
Walking local public directory subtree...
Listing existing hash blobs...
1 public assets already synchronized!
Uploading cloud code...
Uploading name → hash mapping...
Setting active version...
All done!

$ parse-on-buddy -l
Listing application versions...
1 2

$ parse-on-buddy -v
Fetching current version...

$ curl -X POST --header x-parse-application-id:<app-id>
{ "result": "different" }

Finally, let's revert to the initial version.

$ parse-on-buddy -a 1
Listing application versions...
Setting active version...

$ curl -X POST --header x-parse-application-id:<app-id>
{ "result": "world" }


Q. Why do I need a public directory, even if I'm not using web hosting?

A. Due to legacy reasons, an empty public directory is necessary.

You can’t perform that action at this time.