CLI for creating and publishing Aragon apps
Clone or download
Latest commit dfd6caa Jan 18, 2019

Aragon CLI

Build Status Test Coverage NPM version Downloads

Aragon CLI is a tool for creating, testing and publishing Aragon applications.


Install Aragon CLI by running

npm install -g @aragon/cli


Aragon CLI uses Truffle configuration files for the web3 provider. Running any command with --network x will tell the CLI to use the configuration for the network x in the truffle config. If no network is passed, it will default to the development network.

All other configuration must be done through CLI flags for now. Do aragon [command] --help for more information about the configuration options for each command.



aragon init

$ aragon init <APP_NAME> [TEMPLATE]

Creates a new directory pre-populated with files from a template. APP_NAME must be a full ENS name, such as foo.aragonpm.eth, where the top-level name is an APM registry.

TEMPLATE defaults to react, but it can be any valid name of a GitHub repository in the format of <AUTHOR>/<REPOSITORY>.

Finally, templates with a single short name (such as react or bare) are treated as official Aragon templates. These can always be found at<TEMPLATE>-boilerplate.

aragon run

$ aragon run [--port PORT]

For running from a custom Kit (so you can deploy other Aragon apps to the DAO) check

Run the app in the current directory locally.

This command does the following:

  • Starts a local chain
  • Starts IPFS
  • Deploys all of the base smart contracts needed for aragonOS to work (ENS, APM, DAO templates, ...)
  • Creates a DAO
  • Runs the build script of the app (if specified in package.json)
  • Publishes the app locally
  • Installs it on your freshly created local DAO
  • Starts the wrapper and opens up your DAO in your browser

The local chain is started at PORT, which defaults to 8545.

The publish step of the app works exactly as aragon apm publish, described below.

aragon apm publish

$ aragon apm publish [CONTRACT_ADDRESS or CONTRACT_NAME] [--files PATTERN] [--ignore PATTERN] [--skip-confirm] [--only-artifacts]

Publishes a new (or the first!) version of your app.

If the APM repository does not exist at your app's full name, then we try to create a new repository for you at the APM registry from the app name. This usually happens the first time you publish, unless you create your repository manually beforehand.

The files specified by --files (defaults to ., i.e. all files in the current directory) will be published to IPFS for publishing. Specify --files multiple times to include multiple files or directories.

All files in your .gitignore (if any) will be ignored, along with all gitignore-like patterns specified by --ignore (which can be specified multiple times for multiple patterns).

Before publishing, your smart contract source code is scanned to generate an artifact containing additional metadata about it, such as the different methods of your contract, their Radspec descriptions (if any) and what roles they are guarded by. Specify --only-artifacts if you only want this artifact.

If --skip-confirm is specified the command will not wait for the transaction to receive confirmations.

aragon apm version

$ aragon apm version <BUMP>

Bumps the version of your Aragon app, where a valid BUMP is either major, minor or patch.

Note that you are only allowed to release a version with a new smart contract address if the bump specified is major.

aragon apm versions

$ aragon apm versions

View a list of published versions for the app in the current directory.


aragon apm grant

$ aragon apm grant <ADDRESS> [--skip-confirm]

Grants permission for ADDRESS to interact with the APM repository of the app in the current directory.

If --skip-confirm is specified the command will not wait for the transaction to receive confirmations.

aragon dao apps or dao apps

$ dao apps <your-dao-address>

Shows your installed apps along with their Proxy and IPFS addresses.

aragon dao acl or dao acl

$ dao acl <your-dao-address>

Shows the roles defined in your DAO with all the relevant info: where they are defined and to whom are granted.


aragon devchain

Starts a local ganache test chain for development. This is done automatically with aragon run also if you don't have one already running.


Use a .ipfsignore file to keep out any specified files or paths from the bundle published to ipfs. If there’s no .ipfsignore file, but there is a .gitignore file, then the CLI will ignore the stuff matched by the .gitignore file. If you want to include something that is excluded by your .gitignore file, you can create an empty .ipfsignore file to override it.