I'm creating a plugin and want to test it locally.

While reviewing examples at https://github.com/aragon/osx/blob/develop/packages/contracts/test/plugins, I found two different ways to deploy a local DAO to install and test the plugin.

Which approach would be best? In both cases, I think it means copying some code from the OSx repository to my local plugin repository.

I checked whether any of these functions are exported in the OSx npm package, but it seems they are not.

Do you have any recommendations? Thank you.

1 Answer 1


Check if plugin was published successfully

First, you'll want to revise that your plugin is in fact published into the protocol. You can do this by going into the Subgraph (mainnet, goerli) and calling:

query GetPlugins {
  pluginRepos {

That will return a list of all plugins published into the protocol. There, you should be able to check whether yours was successfully published.

Check if the plugin is installed successfully

My recommendation would be to create a real DAO and test it using a flow similar to the you can see with the Admin plugin.

You will need to write a PluginSetup contract containing your installation script and then the plugin itself. (Remember: a plugin is always composed of a Plugin contract, containing all plugin logic + a PluginSetup contract, containing installation/uninstallation/upgrade requirements).

You shouldn't need to copy code, you can import the base classes or interfaces directly from @aragon/osx/... if you install the OSx NPM package.

Also, there are two ways to install a plugin:

  1. On DAO creation, you pass an array with the encoded params of the plugins that you want to use. Here's an example of this using the SDK: https://devs.aragon.org/docs/sdk/examples/tokenVoting-client/installation

  2. When a DAO is already created, you call MyPluginSetup.prepareInstallation(...). Then, you use an existing governance plugin to create a proposal with an action that does PluginSetupProcessor.applyInstallation(...) to grant all the needed permissions. Here's an example of how to pass encoded actions for proposals using the SDK: https://devs.aragon.org/docs/sdk/examples/tokenVoting-client/create-proposal-with-actions

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.