Skip to content

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


In order to publish apps you need to create a keyfile in your home directory with the following values:

  "key": "<snip>"
  "rpc": "wss://",
  "ens": "0xfbae32d1cde628bc45f51efc8cc4fa1415447e"

Note that the ENS registry address is an Aragon deployment

Please note that you need to replace <snip> with private key with no password. This is a temporary measure and will be changed in the near future. Please only use this on testnets for development.

Save the file as .localkey.json in your home directory. You can now publish apps.

To use other networks, you can change the rpc and ens keys.



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]

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 publish, described below.

aragon publish

$ aragon publish [CONTRACT_ADDRESS] [--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 version

$ aragon 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 versions

$ aragon versions

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


aragon grant

Note: This command is deprecated and will be replaced with a new one in the near future

$ aragon 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.


Creating and publishing an application

aragon init polls.aragonpm.test
cd polls
aragon publish

Publishing a new version

aragon version minor
aragon publish

Scaffolding from a custom template

aragon init polls.aragonpm.test username/gh-repo