# Permissioned Contract Deployment

Until mainnet enters the Mainnet-3 phase of the multi-phase mainnet rollout (opens new window), permissionless contract installation with Zoe is limited to development environments.

Until then, permission to deploy contracts can be granted using an Agoric extension to Cosmos SDK Governance (opens new window) called swingset.CoreEval. As discussed in governance using Hardened JavaScript: swingset.CoreEval (opens new window), if such a proposal passes, its JavaScript code is run with ocaps extracted using the proposal's declared capabilities, which the code can combine to perform privileged tasks.

To do try it out in a local testnet chain:

  1. Declare the capabilities that the proposal will require.
  2. Code the proposal itself.
  3. Deploy the proposal to a local testnet.