A CLI tool for deploying and upgrading smart contracts for OP Stack chains.
OP Deployer is a CLI tool that simplifies deploying and upgrading smart contracts for OP Stack chains. It also
exposes a suite of libraries that allow developers to easily manage smart contracts from their applications.
With OP Deployer, developers define their chain’s desired configuration in a declarative configuration file. The tool
then makes the minimum number of smart contract calls required to make the deployment match the configuration. This
ensures that the implementation details of the deployment are abstracted away, and allows complex configurations to be
expressed cleanly without concern for the underlying deployment process.
OP Deployer is designed to be small, portable, and easily installed. As such it is distributed as a standalone binary
with no additional dependencies. This allows it to be used in a variety of contexts, including as a CLI tool, in CI
pipelines, and as part of local development environments like Kurtosis.
OP Deployer aims to make doing the right thing easy, and doing dangerous things hard. As such its configuration and
API are optimized for deploying and upgrading Standard OP Chains. However, it also exposes a lower-level set of
primitives and configuration directives which users can use to deploy more complex configurations if the need arises.
OP Deployer is undergoing active development and has been used for several mainnet deployments. It is considered
production-ready. However, please keep in mind that OP Deployer has not been audited and that any chains
deployed using OP Deployer should be checked thoroughly for correctness prior to launch.
Bootstrap - Deploy global singletons and implementation contracts
Architecture - Understand OP Deployer’s architecture
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Optimism Documentation","colors":{"primary":"#FF0420","light":"#FF0420","dark":"#FF0420"},"logo":{"light":"https://mintcdn.com/optimism-373f39ad/Vw5vY8zA-CRjBsUF/public/logos/Lockup_docs_dark.svg?fit=max\u0026auto=format\u0026n=Vw5vY8zA-CRjBsUF\u0026q=85\u0026s=a1ab18aecbec09fe5ad40222ce76f00c","dark":"https://mintcdn.com/optimism-373f39ad/Vw5vY8zA-CRjBsUF/public/logos/Lockup_docs_light.svg?fit=max\u0026auto=format\u0026n=Vw5vY8zA-CRjBsUF\u0026q=85\u0026s=edf965cc513f1a46b1897e2a6494b43b"},"favicon":"https://mintcdn.com/optimism-373f39ad/x8TXRvd2PF-Wx1yv/public/favicon.png?fit=max\u0026auto=format\u0026n=x8TXRvd2PF-Wx1yv\u0026q=85\u0026s=7b7a602bd267ee638c0167179f41737c","navbar":{"links":[{"href":"https://www.optimism.io/blog","label":"Blog"},{"href":"https://github.com/ethereum-optimism/optimism/tree/develop/docs/public-docs","label":"GitHub"}]},"footer":{"socials":{"twitter":"https://twitter.com/optimism","github":"https://github.com/ethereum-optimism"}},"seo":{"metatags":{"canonical":"https://docs.optimism.io/","og:title":"Optimism Documentation","og:type":"website","twitter:card":"summary_large_image"}},"integrations":{"mixpanel":{"projectToken":"807e42c62989ff12427a35baa12b6218"}},"contextual":{"options":["copy","chatgpt","claude","mcp"],"display":"header"},"thumbnails":{"preset":"classic","appearance":"dark","surface":"neutral","background":"https://mintcdn.com/optimism-373f39ad/ZyL9bbNrDzMQhMLM/public/img/thumbnail-bg.png?fit=max\u0026auto=format\u0026n=ZyL9bbNrDzMQhMLM\u0026q=85\u0026s=5baf50afc7e4f4e6288de49b3df19d52","fonts":{"family":"Riforma LL","source":"public/fonts/RiformaLL-Regular.woff","format":"woff"},"eyebrow":{"source":"none"}},"interaction":{"drilldown":false},"metadata":{"timestamp":false},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Status","icon":"signal-bars","href":"https://status.optimism.io"},{"anchor":"Faucet","icon":"gas-pump","href":"https://console.optimism.io/faucet"},{"anchor":"Bridge","icon":"bridge-water","href":"https://app.optimism.io/bridge/deposit"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"optimism-373f39ad","hasAudioNarration":false,"actualSubdomain":"optimism-373f39ad","customDomains":["docs.optimism.io"],"gitSource":{"type":"github","owner":"ethereum-optimism","repo":"optimism","deployBranch":"develop","contentDirectory":"docs/public-docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae370aa878abd4f8baed6ff","collectionId":"a046324a-d997-4a23-995f-cab51ecc8ad4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae370aa878abd4f8baed6ff"},"feedback":{"thumbs":true,"issues":false,"edits":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae370aa878abd4f8baed6ff","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Reference","count":136},{"language":"default","tag":"Node Operators","count":119},{"language":"default","tag":"Protocol","count":98},{"language":"default","tag":"Chain Operators","count":75},{"language":"default","tag":"op-reth","count":74},{"language":"default","tag":"op-reth CLI reference","count":73},{"language":"default","tag":"App Developers","count":68},{"language":"default","tag":"Guides","count":52},{"language":"default","tag":"Tutorials","count":42},{"language":"default","tag":"How the protocol works","count":41}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles/homepage.css","content":"@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Regular.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Italic.woff2) format('woff2');font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Medium.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-MediumItalic.woff2) format('woff2');font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Bold.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-BoldItalic.woff2) format('woff2');font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Heavy.woff2) format('woff2');font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-HeavyItalic.woff2) format('woff2');font-weight:900;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Light.woff2) format('woff2');font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-LightItalic.woff2) format('woff2');font-weight:300;font-style:italic;font-display:swap}.nx-prose,.nx-prose h1,.nx-prose h2,.nx-prose h3,.nx-prose h4,.nx-prose h5,.nx-prose h6,.nx-prose p,[data-page-id=index] h1,body{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif!important}[data-page-id=index] h1+p,[data-page-id=index]>p:first-of-type{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif!important;font-family:var(--font-riforma)!important;font-size:1.25rem!important;line-height:1.6!important;color:#6b7280!important;margin-bottom:2rem!important;margin-top:0!important;max-width:100%!important}html[class*=dark] [data-page-id=index] h1+p,html[class*=dark] [data-page-id=index]>p:first-of-type{color:#9ca3af!important}body{font-family:var(--font-riforma)!important}html[class*=dark] body{background:#0f172a!important}.btn-primary,.btn-secondary,.hero-content h1,.hero-content p{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif}html[class*=dark] .hero-content p{color:#9ca3af}.btn-primary,.btn-secondary{border-radius:6px}@media (max-width:768px){.hero-section{flex-direction:column;text-align:center;min-height:auto;padding:2rem 0}.hero-content{padding-right:0;margin-bottom:2rem}.hero-content h1{font-size:1.75rem}.hero-buttons{justify-content:center}}.home-card .home-card__title{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif!important}.card-list-item__description,.card-list-item__title{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif}@media (max-width:768px){.hero-section{padding:4rem 2rem;flex-direction:column;text-align:center;min-height:auto}.hero-content{margin-bottom:2rem;max-width:none}.home-cards{grid-template-columns:1fr!important;padding:0 2rem}.nx-prose{padding-left:2rem!important;padding-right:2rem!important}.card-list-item__header{flex-direction:column;align-items:flex-start;gap:.5rem}}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Regular.woff2) format('woff2');font-weight:400;font-style:normal;font-display:block}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Regular.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Italic.woff2) format('woff2');font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Medium.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-MediumItalic.woff2) format('woff2');font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Bold.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-BoldItalic.woff2) format('woff2');font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Heavy.woff2) format('woff2');font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-HeavyItalic.woff2) format('woff2');font-weight:900;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Light.woff2) format('woff2');font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-LightItalic.woff2) format('woff2');font-weight:300;font-style:italic;font-display:swap}.nx-logo img,a[href=\"/\"] img,header img[src*=logo],img[alt*=logo],nav img{max-height:13px!important;width:auto!important;height:13px!important}:root{--font-riforma:'Riforma LL', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;--font-mono:'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace}.nx-prose,.nx-prose blockquote,.nx-prose h1,.nx-prose h2,.nx-prose h3,.nx-prose h4,.nx-prose h5,.nx-prose h6,.nx-prose li,.nx-prose p,.nx-prose td,.nx-prose th,a:not(pre a):not(code a),body,button,div:not([class*=language-]):not(pre):not(code),html,span:not([class*=language-]):not([class*=token]){font-family:var(--font-riforma)!important}.boolean,.cdata,.class-name,.comment,.constant,.deleted,.doctype,.function,.important,.keyword,.language-bash,.language-javascript,.language-json,.language-python,.language-sh,.language-shell,.language-solidity,.language-typescript,.language-yaml,.language-yml,.number,.nx-bg-primary-700\\/5,.nx-code-block,.nx-code-block *,.nx-code-block span,.nx-font-mono,.operator,.prolog,.property,.punctuation,.regex,.symbol,.tag,.token,.variable,[class*=language-],[class*=language-] *,[class*=language-] span,code,code *,code span,div[data-language],div[data-language] *,div[data-language] span,div[data-theme*=dark],div[data-theme*=light],pre,pre *,pre span,span[class*=token]{font-family:var(--font-mono)!important;font-feature-settings:normal!important}.nx-prose h1,.nx-prose h2,.nx-prose h3,h1,h2,h3{font-family:var(--font-riforma)!important;font-weight:400!important}[data-page-id=index]{max-width:1400px!important;margin-left:auto!important;margin-right:auto!important;padding-left:2rem!important;padding-right:2rem!important}[data-page-id=index] h1{font-size:3rem!important;font-weight:400!important;line-height:1.1!important;margin-bottom:1rem!important;margin-top:0!important;padding-top:0!important;color:#111827!important;letter-spacing:-.02em!important}html[class*=dark] [data-page-id=index] h1{color:#f9fafb!important}[data-page-id=index] .nx-prose{padding-top:0!important;padding-left:0!important;padding-right:0!important;max-width:100%!important}.nx-container{max-width:none!important;padding:0!important}[data-page-id=index] h1,[data-page-id=index]>div>div{max-width:100%!important}body{background:#fff!important}.nx-bg-gradient-to-b,.nx-bg-gradient-to-bl,.nx-bg-gradient-to-br,.nx-bg-gradient-to-l,.nx-bg-gradient-to-r,.nx-bg-gradient-to-t,.nx-bg-gradient-to-tl,.nx-bg-gradient-to-tr,.nx-container{background:0 0!important}.hero-section{display:flex;align-items:center;justify-content:space-between;min-height:auto;padding:0;margin-bottom:2.5rem;max-width:100%;margin-left:0;margin-right:0;background:0 0}.hero-content{flex:1;max-width:505px}.hero-content h1,.hero-content p,[data-page-id=index] h1{font-family:var(--font-riforma)!important}.hero-content h1{font-size:2.5rem;font-weight:600;line-height:1.2;margin-bottom:.75rem;color:#111827;letter-spacing:-.025em}html[class*=dark] .hero-content h1{color:#f9fafb}.hero-content p{font-size:1.125rem;font-weight:400;line-height:1.6;margin-bottom:1rem;color:#6b7280}.hero-visual{flex:1;display:flex;justify-content:center;align-items:center}.hero-visual img{max-width:100%;height:auto}.hero-buttons{display:flex;gap:1rem}.btn-primary{font-family:var(--font-riforma)!important;background-color:#ff0420;color:#fff;padding:.75rem 1.5rem;border:0;border-radius:.75rem;font-weight:500;cursor:pointer;transition:background-color .2s;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;text-align:center}.btn-primary:hover,.btn-secondary{background-color:#e00320;color:#fff;text-decoration:none}.btn-secondary{font-family:var(--font-riforma)!important;background-color:transparent;color:#1f2937;padding:.75rem 1.5rem;border:1px solid #d1d5db;border-radius:.75rem;font-weight:500;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;justify-content:center;text-align:center}.btn-secondary:hover{background-color:#f9fafb;border-color:#9ca3af;color:#1f2937;text-decoration:none}html[class*=dark] .btn-secondary{color:#f9fafb;border-color:#4b5563}html[class*=dark] .btn-secondary:hover{background-color:#374151;border-color:#6b7280;color:#f9fafb}@media (max-width:768px){.hero-section{flex-direction:column;text-align:center;min-height:auto;padding:2rem 0}.hero-content{padding-right:0;margin-bottom:2rem}.hero-content h1{font-size:1.75rem}.hero-buttons{justify-content:center}}.home-cards{width:100%;margin-bottom:2.5rem;margin-top:0;max-width:100%;margin-left:0;margin-right:0;padding:0}.home-card{display:flex;flex-direction:column;padding:1.75rem;background:0 0;border:1px solid #e2e8f0;border-radius:12px;transition:all .2s ease}html[class*=dark] .home-card{background:#1e293b;border-color:#334155}.home-card .home-card__title{font-family:var(--font-riforma)!important;font-size:1.5rem!important;font-weight:400!important;margin:0 0 1.5rem;color:#0f172a;letter-spacing:-.01em}html[class*=dark] .home-card .home-card__title{color:#f1f5f9}.home-card__footer{margin-top:auto;padding-top:1.5rem}.home-card__footer-link{color:#64748b;text-decoration:none;font-size:.875rem;font-weight:500;transition:color .2s ease}.home-card__footer-link:hover{color:#475569;text-decoration:none}html[class*=dark] .home-card__footer-link{color:#94a3b8}html[class*=dark] .card-list-item:hover .card-list-item__description,html[class*=dark] .home-card__footer-link:hover{color:#cbd5e1}.card-list{display:flex;flex-direction:column;gap:0}.card-list-item{display:flex;align-items:flex-start;gap:1rem;padding:.875rem 0;border-radius:6px;text-decoration:none;color:inherit;transition:all .2s ease;border-bottom:1px solid #f1f5f9}.card-list-item:last-child{border-bottom:none}html[class*=dark] .card-list-item{border-bottom-color:#334155}.card-list-item:hover .card-list-item__title,html[class*=dark] .card-list-item:hover .card-list-item__arrow{color:#ef4444}.card-list-item:hover .card-list-item__description{color:#475569}.card-list-item__number{width:2rem;height:2rem;border-radius:50%;background:#f1f5f9;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.875rem;flex-shrink:0;color:#475569}html[class*=dark] .card-list-item__number{background:#334155;color:#cbd5e1}.card-list-item__content{flex:1}.card-list-item__header{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.card-list-item__description,.card-list-item__title{font-family:var(--font-riforma)!important;margin:0;transition:color .2s ease}.card-list-item__title{font-size:1rem;font-weight:400;color:#0f172a;letter-spacing:-.01em}html[class*=dark] .card-list-item__title{color:#f1f5f9}.card-list-item__description{font-size:.875rem;color:#64748b;line-height:1.5}html[class*=dark] .card-list-item__description{color:#94a3b8}.card-list-item__badge{padding:.25rem .75rem;border-radius:16px;font-size:.75rem;font-weight:600;text-transform:capitalize}.card-list-item__badge--easy{background:#dcfce7;color:#166534}.card-list-item__badge--medium{background:#fef3c7;color:#92400e}.card-list-item__badge--hard{background:#fee2e2;color:#991b1b}html[class*=dark] .card-list-item__badge--easy{background:#14532d;color:#bbf7d0}html[class*=dark] .card-list-item__badge--medium{background:#92400e;color:#fef3c7}html[class*=dark] .card-list-item__badge--hard{background:#991b1b;color:#fecaca}.card-list-item__arrow{color:#cbd5e1;font-size:1.25rem;transition:all .2s ease;display:flex;align-items:center;justify-content:center;margin-top:.25rem}.card-list-item:hover .card-list-item__arrow{transform:translateX(4px);color:#ef4444}html[class*=dark] .card-list-item__arrow{color:#64748b}.nx-prose:not([data-page-id=index] .nx-prose){max-width:1400px!important;margin-left:auto!important;margin-right:auto!important;padding-left:2rem!important;padding-right:2rem!important}@media (max-width:768px){.hero-section{padding:4rem 2rem;flex-direction:column;text-align:center;min-height:auto}.hero-content{margin-bottom:2rem;max-width:none}.home-cards{grid-template-columns:1fr!important;padding:0 2rem}.nx-prose{padding-left:2rem!important;padding-right:2rem!important}.card-list-item__header{flex-direction:column;align-items:flex-start;gap:.5rem}}.nx-card img,[class*=card] img[src*=\"/public/img/\"]{background:0 0!important}"}],"page":{"pagePath":"chain-operators/tools/op-deployer/overview","slug":"/chain-operators/tools/op-deployer/overview","pageMetadata":{"title":"OP Deployer","description":"A CLI tool for deploying and upgrading smart contracts for OP Stack chains.","diataxis":"explanation","href":"/chain-operators/tools/op-deployer/overview"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"A CLI tool for deploying and upgrading smart contracts for OP Stack chains.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`OP Deployer is a CLI tool that simplifies deploying and upgrading smart contracts for OP Stack chains. It also\nexposes a suite of libraries that allow developers to easily manage smart contracts from their applications.`}),`\n`,_jsx(Heading,{level:`2`,id:`goals`,children:`Goals`}),`\n`,_jsx(Heading,{level:`3`,id:`declarative`,children:`Declarative`}),`\n`,_jsx(_components.p,{children:`With OP Deployer, developers define their chain’s desired configuration in a declarative configuration file. The tool\nthen makes the minimum number of smart contract calls required to make the deployment match the configuration. This\nensures that the implementation details of the deployment are abstracted away, and allows complex configurations to be\nexpressed cleanly without concern for the underlying deployment process.`}),`\n`,_jsx(Heading,{level:`3`,id:`portable`,children:`Portable`}),`\n`,_jsxs(_components.p,{children:[`OP Deployer is designed to be small, portable, and easily installed. As such it is distributed as a standalone binary\nwith no additional dependencies. This allows it to be used in a variety of contexts, including as a CLI tool, in CI\npipelines, and as part of local development environments like `,_jsx(_components.a,{href:`https://github.com/ethpandaops/optimism-package`,children:`Kurtosis`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`standard-but-extensible`,children:`Standard, But Extensible`}),`\n`,_jsx(_components.p,{children:`OP Deployer aims to make doing the right thing easy, and doing dangerous things hard. As such its configuration and\nAPI are optimized for deploying and upgrading Standard OP Chains. However, it also exposes a lower-level set of\nprimitives and configuration directives which users can use to deploy more complex configurations if the need arises.`}),`\n`,_jsx(Heading,{level:`2`,id:`development-status`,children:`Development Status`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`OP Deployer is undergoing active development and has been used for several mainnet deployments. It is considered\nproduction-ready. However, please keep in mind that `,_jsx(_components.strong,{children:`OP Deployer has not been audited`}),` and that any chains\ndeployed using OP Deployer should be checked thoroughly for correctness prior to launch.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next Steps`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/chain-operators/tools/op-deployer/installation`,children:`Install op-deployer`}),` - Install from pre-built binaries or from source`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/chain-operators/tools/op-deployer/usage/bootstrap`,children:`Bootstrap`}),` - Deploy global singletons and implementation contracts`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/chain-operators/tools/op-deployer/reference/architecture/overview`,children:`Architecture`}),` - Understand OP Deployer’s architecture`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"OP Deployer","description":"A CLI tool for deploying and upgrading smart contracts for OP Stack chains.","diataxis":"explanation","href":"/chain-operators/tools/op-deployer/overview"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Goals","slug":"goals","depth":2,"children":[{"title":"Declarative","slug":"declarative","depth":3,"children":[]},{"title":"Portable","slug":"portable","depth":3,"children":[]},{"title":"Standard, But Extensible","slug":"standard-but-extensible","depth":3,"children":[]}]},{"title":"Development Status","slug":"development-status","depth":2,"children":[]},{"title":"Next Steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/optimism-373f39ad/6b11b6c32a46a09b/public/mixpanel-custom.js"],"subdomain":"optimism-373f39ad","siteName":"Optimism Documentation","title":"Optimism Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-07T00:27:11.369Z","originalFileLocation":"chain-operators/tools/op-deployer/overview.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"A CLI tool for deploying and upgrading smart contracts for OP Stack chains.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Optimism Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Optimism Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"A CLI tool for deploying and upgrading smart contracts for OP Stack chains.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Optimism Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.optimism.io//chain-operators/tools/op-deployer/overview\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://optimism-373f39ad.mintlify.app/_mintlify/api/og/v2?title=OP+Deployer\u0026amp;description=A+CLI+tool+for+deploying+and+upgrading+smart+contracts+for+OP+Stack+chains.\u0026amp;theme=f64aba71940449e3ce8f3efe\u0026amp;signature=f37ec890bed93001c20a9433f11bad2bf3d22a1b278329b50731d7807243ab47\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Optimism Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"A CLI tool for deploying and upgrading smart contracts for OP Stack chains.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://optimism-373f39ad.mintlify.app/_mintlify/api/og/v2?title=OP+Deployer\u0026amp;description=A+CLI+tool+for+deploying+and+upgrading+smart+contracts+for+OP+Stack+chains.\u0026amp;theme=f64aba71940449e3ce8f3efe\u0026amp;signature=f37ec890bed93001c20a9433f11bad2bf3d22a1b278329b50731d7807243ab47\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Optimism Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF0420\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.optimism.io//chain-operators/tools/op-deployer/overview\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/chain-operators/tools/op-deployer/overview.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.optimism.io/#organization\",\"name\":\"Optimism Documentation\",\"url\":\"https://docs.optimism.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/optimism-373f39ad/Vw5vY8zA-CRjBsUF/public/logos/Lockup_docs_dark.svg?fit=max\u0026auto=format\u0026n=Vw5vY8zA-CRjBsUF\u0026q=85\u0026s=a1ab18aecbec09fe5ad40222ce76f00c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.optimism.io#website\",\"name\":\"Optimism Documentation\",\"url\":\"https://docs.optimism.io\",\"publisher\":{\"@id\":\"https://docs.optimism.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.optimism.io//chain-operators/tools/op-deployer/overview#webpage\",\"url\":\"https://docs.optimism.io//chain-operators/tools/op-deployer/overview\",\"name\":\"OP Deployer\",\"description\":\"A CLI tool for deploying and upgrading smart contracts for OP Stack chains.\",\"dateModified\":\"2026-08-07T00:27:11.369Z\",\"isPartOf\":{\"@id\":\"https://docs.optimism.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.optimism.io//chain-operators/tools/op-deployer/overview#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.optimism.io//chain-operators/tools/op-deployer/overview#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Tools\",\"item\":\"https://docs.optimism.io/chain-operators/tools/chain-monitoring\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OP Deployer\",\"item\":\"https://docs.optimism.io/chain-operators/tools/op-deployer/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"OP Deployer\",\"item\":\"https://docs.optimism.io//chain-operators/tools/op-deployer/overview\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.optimism.io//chain-operators/tools/op-deployer/overview#article\",\"headline\":\"OP Deployer\",\"name\":\"OP Deployer\",\"description\":\"A CLI tool for deploying and upgrading smart contracts for OP Stack chains.\",\"url\":\"https://docs.optimism.io//chain-operators/tools/op-deployer/overview\",\"mainEntityOfPage\":{\"@id\":\"https://docs.optimism.io//chain-operators/tools/op-deployer/overview#webpage\"},\"dateModified\":\"2026-08-07T00:27:11.369Z\",\"publisher\":{\"@id\":\"https://docs.optimism.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.optimism.io#website\"}}]}\u003c/script>","siteName":"Optimism Documentation","nav":{"global":{"anchors":[{"anchor":"Status","icon":"signal-bars","href":"https://status.optimism.io"},{"anchor":"Faucet","icon":"gas-pump","href":"https://console.optimism.io/faucet"},{"anchor":"Bridge","icon":"bridge-water","href":"https://app.optimism.io/bridge/deposit"}]},"tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":""}]},{"tab":"Chain Operators","groups":[{"group":"Launch a chain","pages":[{"title":"Chain operators","sidebarTitle":"Overview","href":"/chain-operators"}]},{"group":"Guides","pages":[{"group":"Configuration","pages":[{"title":"Chain Operator Configurations","href":"/chain-operators/guides/configuration/getting-started"},{"title":"Configure the batcher","href":"/chain-operators/guides/configuration/batcher"},{"title":"Proposer Configuration","href":"/chain-operators/guides/configuration/proposer"},{"title":"How to configure challenger for your chain","href":"/chain-operators/guides/configuration/op-challenger-config-guide"}]},{"group":"Features","pages":[{"title":"Deploy a Custom Gas Token chain","href":"/chain-operators/guides/features/custom-gas-token-guide"},{"title":"Switch to Kona Proofs","href":"/chain-operators/guides/features/switching-to-kona-proofs"},{"title":"Set the Minimum Base Fee","href":"/chain-operators/guides/features/setting-min-base-fee"},{"title":"Set the Operator Fee","href":"/chain-operators/guides/features/setting-operator-fee"},{"title":"Set the DA Footprint Gas Scalar","href":"/chain-operators/guides/features/setting-da-footprint"},{"title":"Enabling Subblocks","href":"/chain-operators/guides/features/subblocks-guide"},{"title":"Enabling Sequencer Defined Metering","href":"/chain-operators/guides/features/sequencer-defined-metering"},{"title":"How to run an Alt-DA mode chain","href":"/chain-operators/guides/features/alt-da-mode-guide"},{"title":"Post batch data as blobs","href":"/chain-operators/guides/features/blobs"},{"title":"Enable span batches","href":"/chain-operators/guides/features/enable-span-batches"},{"title":"Using snap sync for chain operators","href":"/chain-operators/guides/features/snap-sync"}]},{"group":"Management","pages":[{"title":"Chain operator best practices","href":"/chain-operators/guides/management/best-practices"},{"title":"Network Design Example","href":"/chain-operators/guides/management/network-architecture"},{"title":"Changing gas target/limit","href":"/chain-operators/guides/management/gas-target-limit"},{"title":"Key management","href":"/chain-operators/guides/management/key-management"},{"title":"Rollup operations","href":"/chain-operators/guides/management/operations"},{"title":"Transaction Fees 101","href":"/chain-operators/guides/management/transaction-fees-101"},{"title":"Fee vault operations","href":"/chain-operators/guides/management/fee-vaults"},{"title":"Troubleshooting chain operations","href":"/chain-operators/guides/management/troubleshooting"}]},{"title":"Join the Superchain Registry","href":"/chain-operators/guides/join-superchain-registry"}]},{"group":"Tutorials","pages":[{"group":"Create L2 Rollup","pages":[{"title":"Creating your own L2 rollup testnet","href":"/chain-operators/tutorials/create-l2-rollup/index"},{"title":"Deploy L1 contracts with op-deployer","href":"/chain-operators/tutorials/create-l2-rollup/op-deployer-setup"},{"title":"Spin up sequencer","href":"/chain-operators/tutorials/create-l2-rollup/op-reth-setup"},{"title":"Spin up batcher","href":"/chain-operators/tutorials/create-l2-rollup/op-batcher-setup"},{"title":"Spin up proposer","href":"/chain-operators/tutorials/create-l2-rollup/op-proposer-setup"},{"title":"Spin up challenger","href":"/chain-operators/tutorials/create-l2-rollup/op-challenger-setup"},{"title":"L2 Rollup Code Examples","href":"/chain-operators/tutorials/create-l2-rollup/code-setup"}]},{"group":"L1 contract upgrades","pages":[{"title":"Upgrade L1 contracts using op-deployer","href":"/chain-operators/tutorials/l1-contract-upgrades/op-deployer-upgrade"},{"title":"Upgrade using superchain-ops","href":"/chain-operators/tutorials/l1-contract-upgrades/superchain-ops-guide"},{"title":"Upgrading Smart Contracts from v1.3.0 to v1.8.0","href":"/chain-operators/tutorials/l1-contract-upgrades/upgrade-op-contracts-1-3-1-8"}]},{"group":"Customize your chain","pages":[{"title":"Adding a precompile","href":"/chain-operators/tutorials/adding-precompiles"},{"title":"Modifying predeployed contracts","href":"/chain-operators/tutorials/modifying-predeploys"},{"title":"Adding attributes to the derivation function","href":"/chain-operators/tutorials/adding-derivation-attributes"},{"title":"Integrating a new DA layer with Alt-DA","href":"/chain-operators/tutorials/integrating-da-layer"}]},{"group":"Proofs \u0026 disputes","pages":[{"title":"Generating absolute prestate and preimage files","href":"/chain-operators/tutorials/absolute-prestate"},{"title":"Generating a custom kona-client absolute prestate","href":"/chain-operators/tutorials/kona-custom-prestate"},{"title":"Deploying new dispute games with OPCM","href":"/chain-operators/tutorials/dispute-games"},{"title":"Migrating to permissionless fault proofs on OP Stack","href":"/chain-operators/tutorials/migrating-permissionless"},{"title":"Merging Two Chains Into a Shared Dispute Game","href":"/chain-operators/tutorials/merge-shared-dispute-game"}]},{"group":"Operations","pages":[{"title":"How to rewind op-geth","href":"/chain-operators/tutorials/rewind-op-geth"},{"title":"Upgrading a Chain From Output Roots to Super Roots","href":"/chain-operators/tutorials/upgrade-chain-to-super-roots"}]}]},{"group":"Tools","pages":[{"title":"Chain monitoring options","href":"/chain-operators/tools/chain-monitoring"},{"title":"Blockscout block explorer","href":"/chain-operators/tools/explorer"},{"group":"OP Conductor","pages":[{"title":"OP Conductor","href":"/chain-operators/tools/op-conductor"},{"title":"Setup","href":"/chain-operators/tools/op-conductor/setup"},{"title":"Configuration and RPCs","description":"Reference for op-conductor configuration flags, environment variables, and conductor namespace RPC methods.","href":"/chain-operators/tools/op-conductor/reference"}]},{"group":"OP Deployer","pages":[{"title":"OP Deployer","href":"/chain-operators/tools/op-deployer/overview"},{"title":"Install op-deployer","description":"Learn how to install op-deployer from pre-built binaries or from source.","href":"/chain-operators/tools/op-deployer/installation"},{"group":"Usage","pages":[{"title":"Bootstrap Commands","href":"/chain-operators/tools/op-deployer/usage/bootstrap"},{"title":"Init Command","href":"/chain-operators/tools/op-deployer/usage/init"},{"title":"Apply Command","href":"/chain-operators/tools/op-deployer/usage/apply"},{"title":"Verify Command","href":"/chain-operators/tools/op-deployer/usage/verify"},{"title":"Custom Deployments","href":"/chain-operators/tools/op-deployer/usage/custom-deployments"},{"title":"Release Workflows","href":"/chain-operators/tools/op-deployer/usage/release-workflows"}]},{"title":"Known Limitations","href":"/chain-operators/tools/op-deployer/known-limitations"},{"group":"Reference","pages":[{"group":"Architecture","pages":[{"title":"Architecture","href":"/chain-operators/tools/op-deployer/reference/architecture/overview"},{"title":"Deployment Pipeline","href":"/chain-operators/tools/op-deployer/reference/architecture/pipeline"},{"title":"Scripting Engine","href":"/chain-operators/tools/op-deployer/reference/architecture/engine"}]},{"title":"Artifacts Locators","href":"/chain-operators/tools/op-deployer/reference/artifacts-locators"},{"title":"op-deployer versioning and releases","href":"/chain-operators/tools/op-deployer/reference/releases"}]}]},{"title":"OP Interop Filter","href":"/chain-operators/tools/op-interop-filter"},{"title":"OP Txproxy","href":"/chain-operators/tools/op-txproxy"},{"title":"Run proxyd","href":"/chain-operators/tools/proxyd"}]},{"group":"Reference","pages":[{"title":"Batcher configuration reference","href":"/chain-operators/reference/batcher-configuration"},{"title":"Challenger configuration reference","href":"/chain-operators/reference/challenger-configuration"},{"title":"OP Contracts Manager","href":"/chain-operators/reference/opcm"},{"title":"Rollup deployment configuration","href":"/chain-operators/reference/rollup-deployment-configuration"},{"title":"Fee parameters","href":"/chain-operators/reference/fee-parameters"},{"title":"How the DA footprint block limit works","href":"/chain-operators/reference/da-footprint"}]},{"group":"Archive","pages":[{"title":"Generating an op-program absolute prestate (archived)","href":"/chain-operators/tutorials/archive/op-program-prestate"}]}]},{"tab":"Node Operators","pages":[{"title":"Node Operators","href":"/node-operators/overview"}]},{"tab":"App Developers","pages":[{"title":"App Developers","href":"/app-developers"}]},{"tab":"Protocol","pages":[{"title":"Protocol","href":"/op-stack/introduction/op-stack"}]},{"tab":"OP Mainnet","pages":[{"title":"OP Mainnet","href":"/op-mainnet"}]},{"tab":"Governance","pages":[{"title":"Governance","href":"/governance/protocol-upgrades"}]},{"tab":"Notices","pages":[{"title":"Notices","href":"/notices"}]}]},"title":"Optimism Documentation","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":[],"chunks":[]}