Modular DAO framework. Aragon OSx (current) is a permission-based plugin architecture for DAOs — token voting, multisig, admin, and custom plugins compose around a core DAO contract. The legacy aragonOS / Aragon Client (apps + ACL) is deprecated and the @aragon/sdk JS client is archived; new builds should target OSx contracts directly via viem/wagmi.
- 01modular DAO infrastructure
- 02plugin-based governance
- 03permission management
- 04token voting + multisig combos
- 05upgradeable DAO contracts
- pnpm add viem wagmi @aragon/osx-commons-sdk
| Variable | Scope | Description |
|---|---|---|
| ARAGON_NETWORK | Client | Target network slug (e.g. mainnet, sepolia, polygon, base). Determines which OSx framework / DAOFactory address to use. |
Use Aragon OSx (not legacy aragonOS) for new DAOs. Deploy a DAO via the per-chain `DAOFactory.createDao(daoSettings, pluginSettings[])` — each entry installs a plugin (e.g. TokenVoting, Multisig, Admin) with its initial permissions. Read DAO state and permissions through the `DAO` and `PluginSetupProcessor` contracts using viem. The legacy `@aragon/sdk-client` npm package and `aragon/sdk` repo were archived in 2025 — use viem ABIs from `@aragon/osx` or `@aragon/osx-commons-contracts` instead. Plugins are versioned via the PluginRepo registry; always pin to a specific release tag when wiring `PluginSetupRef`.
- ⚑Do not target legacy aragonOS (kernel + ACL + apps) for new builds — it is deprecated; OSx is a different architecture (DAO + plugins + PSP) with no upgrade path.
- ⚑The `@aragon/sdk-client` JS package is archived (last release 1.26.0, July 2024); the OSx contracts themselves are still maintained — wire viem clients directly.
- ⚑Every privileged action goes through the OSx permission system — forget to grant `EXECUTE_PERMISSION_ID` to the voting plugin and proposals will execute-revert silently.
- ⚑Plugin upgrades must go through `PluginSetupProcessor.applyUpdate` and require the DAO itself to hold `ROOT_PERMISSION_ID` on the plugin — bricked upgrades are common when permissions are misconfigured.
- ⚑TokenVoting uses ERC-20 Votes (`getPastVotes`) — voters must self-delegate before the proposal snapshot block or their balance counts as 0.