Framework
The plugin framework defines what a plugin is, how you build one, and how it's published, installed, updated, and uninstalled on a DAO safely and repeatably. Source: osx src/framework, plus the plugin base contracts in common (osx src/common).
The core DAO is deliberately minimal, and common provides cross-cutting primitives. The framework installs a specific plugin version on a DAO with exactly the required permissions, without leaving anyone with unchecked control. A plugin isn't part of the core; it's a contract that uses this framework to operate a DAO.
New to plugins? Read the model, then how you build one, then the publish/install machinery.
Exact signatures: the generated osx ABI reference has every public function, event, error and constant of these contracts, with its NatSpec.
What a plugin is, and building one
- The plugin model — what a plugin is and how it acts on a DAO. Start here.
- Choosing a plugin base — Plugin vs Cloneable vs UUPS, and how to decide.
- Plugin setup — the per-version contract that deploys a plugin and declares its permissions.
- Plugin metadata — the release/build JSON a version points to (incl. the install-params schema), and onchain instance metadata.
Publishing and installing
- PluginRepo — per-plugin versioning (
release.build) and publishing. - The PluginSetupProcessor (PSP) — the two-step prepare→apply install/update/uninstall engine.
- DAOFactory — one-transaction DAO creation and its sequence of permission changes.
- Registries and ENS names — how the canonical registries and ENS naming work (overview), covering the DAO Registry and PluginRepo Registry.
- Member registry — permissionless member-identity ENS names.
A note on the word "factory"
OSx reuses "factory" for several distinct things; keep them apart by what they produce:
- Plugin setup — assembles one plugin installation (deploys the plugin + declares its permissions). A "factory" only in the sense of producing a single install.
- DAOFactory — deploys one DAO (optionally with plugins) in a transaction.
- PluginRepoFactory (see PluginRepo) — deploys one plugin repo.
- Protocol Factory — deploys the whole OSx stack onto a new chain.
- The DAO Launchpad's one-shot factory — a project-specific contract that deploys one fully-configured DAO atomically.
Rule of thumb: setup = one install; DAOFactory / launchpad = one DAO; PluginRepoFactory = one repo; Protocol Factory = the whole protocol.
Builds on
Plugins reuse the cross-cutting primitives in common (conditions, proposals, membership, auth, proxies) and act on the DAO and its permission system from the core.