Learn how to configure consensus clients (op-node, kona-node) for your OP Stack node.
The consensus client (also called the rollup node) builds, relays, and verifies the canonical chain of blocks.
This guide covers configuration for the most popular consensus client implementations.
Always run your consensus client and execution client in a one-to-one configuration.
Don’t run multiple execution client instances behind one consensus client, or vice versa.
Keep your sequencer private key secure and never commit it to version control.
Use environment variables or secure key management systems in production.
To communicate with execution client and enable the Engine API, you’ll also need to generate a JWT secret file and enable the consensus client’s authenticated RPC endpoint.
To generate the JWT secret file:
openssl rand -hex 32 > jwt-secret.txt
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":"6ae4ebeac9dc3ac4e7866441","collectionId":"75914986-8c5a-4586-ab84-adc3ec4c24eb","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4ebeac9dc3ac4e7866441"},"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":"6ae4ebeac9dc3ac4e7866441","clientVersion":"0.0.4044","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":[],"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":"node-operators/guides/configuration/consensus-clients","slug":"/node-operators/guides/configuration/consensus-clients","pageMetadata":{"title":"Consensus client configuration","description":"Learn how to configure consensus clients (op-node, kona-node) for your OP Stack node.","diataxis":"how-to","href":"/node-operators/guides/configuration/consensus-clients"},"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: \"Learn how to configure consensus clients (op-node, kona-node) for your OP Stack node.\"\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`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Info,Tab,Tabs,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The consensus client (also called the rollup node) builds, relays, and verifies the canonical chain of blocks.\nThis guide covers configuration for the most popular consensus client implementations.`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Always run your consensus client and execution client in a one-to-one configuration.\nDon’t run multiple execution client instances behind one consensus client, or vice versa.`})}),`\n`,_jsx(Heading,{level:`2`,id:`consensus-clients`,children:`Consensus clients`}),`\n`,_jsx(_components.p,{children:`Choose the consensus client that best fits your needs:`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`op-node`,id:`op-node`,\"data-child-heading-ids\":`[\"op-node-configuration\",\"minimal-configuration\",\"sequencer-configuration\",\"l2-enginekind\",\"complete-reference\"]`,children:[_jsx(Heading,{level:`2`,id:`op-node-configuration`,children:`op-node configuration`}),_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://github.com/ethereum-optimism/optimism/tree/develop/op-node`,children:`op-node`}),` is the reference implementation of the OP Stack consensus client, written in Go.`]}),_jsx(Heading,{level:`3`,id:`minimal-configuration`,children:`Minimal configuration`}),_jsx(_components.p,{children:`The minimum required flags for running op-node:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`op-node`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --l1=https://ethereum-rpc-endpoint.example.com`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --l1.beacon=https://ethereum-beacon-endpoint.example.com`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --l2=http://localhost:8551`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --l2.jwt-secret=/path/to/jwt-secret.txt`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --network=op-mainnet`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --rpc.addr=0.0.0.0`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --rpc.port=9545`})}),`\n`]})})}),_jsx(Heading,{level:`3`,id:`sequencer-configuration`,children:`Sequencer configuration`}),_jsx(_components.p,{children:`If you’re running a sequencer node, use these additional flags:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`--rpc.enable-admin`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--sequencer.enabled `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--sequencer.l1-confs=4 `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--p2p.sequencer.key=\u003cyour-sequencer-private-key>`})}),`\n`]})})}),_jsx(Warning,{children:_jsx(_components.p,{children:`Keep your sequencer private key secure and never commit it to version control.\nUse environment variables or secure key management systems in production.`})}),_jsx(Heading,{level:`3`,id:`l2-enginekind`,children:`l2.enginekind`}),_jsx(_components.p,{children:`Controls op-node’s engine-API behavior to match the connected execution client. Supported values:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`reth`}),` — default; for op-reth.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`geth`}),` — for op-geth (`,_jsx(_components.em,{children:`deprecated`}),`, see the `,_jsx(_components.a,{href:`/notices/archive/op-geth-deprecation`,children:`op-geth deprecation notice`}),`).`]}),`\n`]}),_jsxs(_components.p,{children:[`The default is `,_jsx(_components.code,{children:`reth`}),`, so op-reth operators do not need to set this flag. Set `,_jsx(_components.code,{children:`--l2.enginekind=geth`}),` only if you are running op-geth.`]}),_jsx(Heading,{level:`3`,id:`complete-reference`,children:`Complete reference`}),_jsxs(_components.p,{children:[`For all available configuration options, see the `,_jsx(_components.a,{href:`/node-operators/reference/op-node-config`,children:`op-node configuration reference`}),`.`]})]}),_jsxs(Tab,{title:`kona-node`,id:`kona-node`,\"data-child-heading-ids\":`[\"kona-node-configuration\",\"basic-configuration\",\"additional-resources\"]`,children:[_jsx(Heading,{level:`2`,id:`kona-node-configuration`,children:`kona-node configuration`}),_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://github.com/ethereum-optimism/optimism/tree/develop/rust/kona/bin/node`,children:`kona-node`}),` is an experimental Rust-based implementation of the OP Stack consensus client.`]}),_jsx(Warning,{children:_jsx(_components.p,{children:`kona-node is experimental and may not be production-ready. Use with caution.`})}),_jsx(Heading,{level:`3`,id:`basic-configuration`,children:`Basic configuration`}),_jsx(_components.p,{children:`kona-node follows a similar configuration pattern to op-node:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`kona-node`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --l1-rpc-url=https://ethereum-rpc-endpoint.example.com`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --l2-rpc-url=http://localhost:8551`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --jwt-secret=/path/to/jwt-secret.txt`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --network=op-mainnet`})}),`\n`]})})}),_jsx(Heading,{level:`3`,id:`additional-resources`,children:`Additional resources`}),_jsx(_components.p,{children:`For more details on kona-node configuration, see:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/op-stack/components/kona-node`,children:`kona-node component hub`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/node-operators/kona-node/configuration`,children:`kona-node CLI reference`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/node-operators/kona-node/run/overview`,children:`Run a node with kona-node`})}),`\n`]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`jwt-secret`,children:`JWT secret`}),`\n`,_jsx(_components.p,{children:`To communicate with execution client and enable the Engine API, you’ll also need to generate a JWT secret file and enable the consensus client’s authenticated RPC endpoint.\nTo generate the JWT secret file:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`openssl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` rand`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -hex`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 32`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` >`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` jwt-secret.txt`})]}),`\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":"Consensus client configuration","description":"Learn how to configure consensus clients (op-node, kona-node) for your OP Stack node.","diataxis":"how-to","href":"/node-operators/guides/configuration/consensus-clients"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Consensus clients","slug":"consensus-clients","depth":2,"children":[]},{"title":"op-node configuration","slug":"op-node-configuration","depth":2,"children":[{"title":"Minimal configuration","slug":"minimal-configuration","depth":3,"children":[],"tabId":"op-node"},{"title":"Sequencer configuration","slug":"sequencer-configuration","depth":3,"children":[],"tabId":"op-node"},{"title":"l2.enginekind","slug":"l2-enginekind","depth":3,"children":[],"tabId":"op-node"},{"title":"Complete reference","slug":"complete-reference","depth":3,"children":[],"tabId":"op-node"}],"tabId":"op-node"},{"title":"kona-node configuration","slug":"kona-node-configuration","depth":2,"children":[{"title":"Basic configuration","slug":"basic-configuration","depth":3,"children":[],"tabId":"kona-node"},{"title":"Additional resources","slug":"additional-resources","depth":3,"children":[],"tabId":"kona-node"}],"tabId":"kona-node"},{"title":"JWT secret","slug":"jwt-secret","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-07-27T17:48:23.438Z","originalFileLocation":"node-operators/guides/configuration/consensus-clients.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=\"Learn how to configure consensus clients (op-node, kona-node) for your OP Stack node.\">\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=\"Learn how to configure consensus clients (op-node, kona-node) for your OP Stack node.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Optimism Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.optimism.io//node-operators/guides/configuration/consensus-clients\">\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=Consensus+client+configuration\u0026amp;description=Learn+how+to+configure+consensus+clients+%28op-node%2C+kona-node%29+for+your+OP+Stack+node.\u0026amp;theme=f64aba71940449e3ce8f3efe\u0026amp;signature=b64cd497e9aa3bac59f2bfcea15eddfb59958c0dc6d0ffcddf6bcb1201a65f6a\">\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=\"Learn how to configure consensus clients (op-node, kona-node) for your OP Stack node.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://optimism-373f39ad.mintlify.app/_mintlify/api/og/v2?title=Consensus+client+configuration\u0026amp;description=Learn+how+to+configure+consensus+clients+%28op-node%2C+kona-node%29+for+your+OP+Stack+node.\u0026amp;theme=f64aba71940449e3ce8f3efe\u0026amp;signature=b64cd497e9aa3bac59f2bfcea15eddfb59958c0dc6d0ffcddf6bcb1201a65f6a\">\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//node-operators/guides/configuration/consensus-clients\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/node-operators/guides/configuration/consensus-clients.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//node-operators/guides/configuration/consensus-clients#webpage\",\"url\":\"https://docs.optimism.io//node-operators/guides/configuration/consensus-clients\",\"name\":\"Consensus client configuration\",\"description\":\"Learn how to configure consensus clients (op-node, kona-node) for your OP Stack node.\",\"dateModified\":\"2026-07-27T17:48:23.438Z\",\"isPartOf\":{\"@id\":\"https://docs.optimism.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.optimism.io//node-operators/guides/configuration/consensus-clients#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.optimism.io//node-operators/guides/configuration/consensus-clients#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.optimism.io/node-operators/guides/configuration/consensus-clients\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configuration\",\"item\":\"https://docs.optimism.io/node-operators/guides/configuration/consensus-clients\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Consensus client configuration\",\"item\":\"https://docs.optimism.io//node-operators/guides/configuration/consensus-clients\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.optimism.io//node-operators/guides/configuration/consensus-clients#article\",\"headline\":\"Consensus client configuration\",\"name\":\"Consensus client configuration\",\"description\":\"Learn how to configure consensus clients (op-node, kona-node) for your OP Stack node.\",\"url\":\"https://docs.optimism.io//node-operators/guides/configuration/consensus-clients\",\"mainEntityOfPage\":{\"@id\":\"https://docs.optimism.io//node-operators/guides/configuration/consensus-clients#webpage\"},\"dateModified\":\"2026-07-27T17:48:23.438Z\",\"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","pages":[{"title":"Chain Operators","href":"/chain-operators"}]},{"tab":"Node Operators","groups":[{"group":"Run a node","pages":[{"title":"Node Operator Overview","description":"Learn about running nodes on OP Stack networks.","href":"/node-operators/overview"}]},{"group":"Guides","pages":[{"group":"Configuration","pages":[{"title":"Consensus client configuration","href":"/node-operators/guides/configuration/consensus-clients"},{"title":"Execution client configuration","description":"Configure op-reth as your OP Stack execution client and migrate off end-of-support op-geth.","href":"/node-operators/guides/configuration/execution-clients"},{"title":"Supernode setup","href":"/node-operators/guides/configuration/supernode-setup"},{"title":"Supernode configuration","href":"/node-operators/guides/configuration/supernode"}]},{"group":"Management","pages":[{"title":"Running an archive node","href":"/node-operators/guides/management/archive-node"},{"title":"Fetch blob data for your node","href":"/node-operators/guides/management/blobs"},{"title":"Restore a Node From a Snapshot","sidebarTitle":"Restore From a Snapshot","href":"/node-operators/guides/management/restore-from-snapshot"}]},{"group":"Monitoring","pages":[{"title":"Node Metrics and Monitoring","href":"/node-operators/guides/monitoring/metrics"}]},{"title":"Node Troubleshooting","href":"/node-operators/guides/troubleshooting"}]},{"group":"Tutorials","pages":[{"title":"Running a Node With Docker","href":"/node-operators/tutorials/node-from-docker"},{"title":"Building and running an OP Stack node from source","href":"/node-operators/tutorials/run-node-from-source"},{"title":"Running op-reth with Historical Proofs","href":"/node-operators/tutorials/reth-historical-proofs"}]},{"group":"Clients","pages":[{"group":"Kona Node","pages":[{"title":"System Requirements","href":"/node-operators/kona-node/requirements"},{"group":"Installation","pages":[{"title":"Install kona-node","href":"/node-operators/kona-node/install/overview"},{"title":"Building from Source","href":"/node-operators/kona-node/install/source"}]},{"group":"Run a Node","pages":[{"title":"Run a Node","href":"/node-operators/kona-node/run/overview"},{"title":"Run Kona Node as a Binary","href":"/node-operators/kona-node/run/binary"},{"title":"Docker Guide","href":"/node-operators/kona-node/run/docker"},{"title":"How it Works","href":"/node-operators/kona-node/run/mechanics"},{"title":"Configure RPC Trust","href":"/node-operators/kona-node/run/rpc-trust"},{"title":"Run a Sequencer Node","href":"/node-operators/kona-node/run/sequencer"}]},{"group":"JSON-RPC Reference","pages":[{"title":"JSON-RPC","href":"/node-operators/kona-node/rpc/overview"},{"title":"P2P RPC Methods","href":"/node-operators/kona-node/rpc/p2p"},{"title":"Rollup RPC Methods","href":"/node-operators/kona-node/rpc/rollup"},{"title":"Admin RPC Methods","href":"/node-operators/kona-node/rpc/admin"}]},{"title":"Kona Node CLI Reference","href":"/node-operators/kona-node/configuration"},{"title":"Monitoring","href":"/node-operators/kona-node/monitoring"},{"title":"`kona-node` Subcommands","href":"/node-operators/kona-node/subcommands"},{"group":"FAQ","pages":[{"title":"FAQ","href":"/node-operators/kona-node/faq/overview"},{"title":"Node Ports","href":"/node-operators/kona-node/faq/ports"}]},{"group":"Design","pages":[{"title":"Node Design Overview","href":"/node-operators/kona-node/design/intro"},{"title":"Derivation in Kona Node","href":"/node-operators/kona-node/design/derivation"},{"title":"Execution Engine","href":"/node-operators/kona-node/design/engine"},{"title":"P2P Networking","href":"/node-operators/kona-node/design/p2p"},{"title":"Sequencer Mode","href":"/node-operators/kona-node/design/sequencer"}]}]},{"group":"op-reth","pages":[{"title":"op-reth for node operators","href":"/node-operators/op-reth/index"},{"title":"Sync OP Mainnet","href":"/node-operators/op-reth/run/faq/sync-op-mainnet"}]}]},{"group":"Reference","pages":[{"group":"Architecture","pages":[{"title":"Node architecture","href":"/node-operators/reference/architecture/index"}]},{"title":"op-node configuration options","href":"/node-operators/reference/op-node-config"},{"title":"op-node JSON-RPC API","href":"/node-operators/reference/op-node-json-rpc"},{"title":"op-supernode configuration options","href":"/node-operators/reference/op-supernode-config"},{"title":"op-reth configuration options","href":"/node-operators/reference/op-reth-config"},{"title":"op-reth JSON-RPC API","href":"/node-operators/reference/op-reth-json-rpc"},{"title":"op-reth historical proof configuration","href":"/node-operators/reference/op-reth-historical-proof-config"},{"title":"Consensus-layer sync","href":"/node-operators/reference/consensus-layer-sync"},{"group":"op-reth CLI reference","pages":[{"title":"Understanding the op-reth CLI","href":"/node-operators/op-reth/cli/overview"},{"group":"op-reth","pages":[{"title":"op-reth","href":"/node-operators/op-reth/cli/op-reth"},{"title":"op-reth node","href":"/node-operators/op-reth/cli/op-reth/node"},{"title":"op-reth init","href":"/node-operators/op-reth/cli/op-reth/init"},{"title":"op-reth init-state","href":"/node-operators/op-reth/cli/op-reth/init-state"},{"title":"op-reth import-op","href":"/node-operators/op-reth/cli/op-reth/import-op"},{"title":"op-reth import-receipts-op","href":"/node-operators/op-reth/cli/op-reth/import-receipts-op"},{"title":"op-reth dump-genesis","href":"/node-operators/op-reth/cli/op-reth/dump-genesis"},{"group":"op-reth db","pages":[{"title":"op-reth db","href":"/node-operators/op-reth/cli/op-reth/db"},{"title":"op-reth db stats","href":"/node-operators/op-reth/cli/op-reth/db/stats"},{"title":"op-reth db list","href":"/node-operators/op-reth/cli/op-reth/db/list"},{"group":"op-reth db checksum","pages":[{"title":"op-reth db checksum","href":"/node-operators/op-reth/cli/op-reth/db/checksum"},{"title":"op-reth db checksum mdbx","href":"/node-operators/op-reth/cli/op-reth/db/checksum/mdbx"},{"title":"op-reth db checksum static-file","href":"/node-operators/op-reth/cli/op-reth/db/checksum/static-file"},{"title":"op-reth db checksum rocksdb","href":"/node-operators/op-reth/cli/op-reth/db/checksum/rocksdb"}]},{"title":"op-reth db copy","href":"/node-operators/op-reth/cli/op-reth/db/copy"},{"title":"op-reth db diff","href":"/node-operators/op-reth/cli/op-reth/db/diff"},{"group":"op-reth db get","pages":[{"title":"op-reth db get","href":"/node-operators/op-reth/cli/op-reth/db/get"},{"title":"op-reth db get mdbx","href":"/node-operators/op-reth/cli/op-reth/db/get/mdbx"},{"title":"op-reth db get static-file","href":"/node-operators/op-reth/cli/op-reth/db/get/static-file"},{"title":"op-reth db get rocksdb","href":"/node-operators/op-reth/cli/op-reth/db/get/rocksdb"}]},{"title":"op-reth db drop","href":"/node-operators/op-reth/cli/op-reth/db/drop"},{"group":"op-reth db clear","pages":[{"title":"op-reth db clear","href":"/node-operators/op-reth/cli/op-reth/db/clear"},{"title":"op-reth db clear mdbx","href":"/node-operators/op-reth/cli/op-reth/db/clear/mdbx"},{"title":"op-reth db clear static-file","href":"/node-operators/op-reth/cli/op-reth/db/clear/static-file"}]},{"title":"op-reth db repair-trie","href":"/node-operators/op-reth/cli/op-reth/db/repair-trie"},{"group":"op-reth db static-file-header","pages":[{"title":"op-reth db static-file-header","href":"/node-operators/op-reth/cli/op-reth/db/static-file-header"},{"title":"op-reth db static-file-header block","href":"/node-operators/op-reth/cli/op-reth/db/static-file-header/block"},{"title":"op-reth db static-file-header path","href":"/node-operators/op-reth/cli/op-reth/db/static-file-header/path"}]},{"title":"op-reth db version","href":"/node-operators/op-reth/cli/op-reth/db/version"},{"title":"op-reth db path","href":"/node-operators/op-reth/cli/op-reth/db/path"},{"group":"op-reth db settings","pages":[{"title":"op-reth db settings","href":"/node-operators/op-reth/cli/op-reth/db/settings"},{"title":"op-reth db settings get","href":"/node-operators/op-reth/cli/op-reth/db/settings/get"},{"group":"op-reth db settings set","pages":[{"title":"op-reth db settings set","href":"/node-operators/op-reth/cli/op-reth/db/settings/set"},{"title":"op-reth db settings set v2","href":"/node-operators/op-reth/cli/op-reth/db/settings/set/v2"}]}]},{"group":"op-reth db prune-checkpoints","pages":[{"title":"op-reth db prune-checkpoints","href":"/node-operators/op-reth/cli/op-reth/db/prune-checkpoints"},{"title":"op-reth db prune-checkpoints get","href":"/node-operators/op-reth/cli/op-reth/db/prune-checkpoints/get"},{"title":"op-reth db prune-checkpoints set","href":"/node-operators/op-reth/cli/op-reth/db/prune-checkpoints/set"}]},{"group":"op-reth db stage-checkpoints","pages":[{"title":"op-reth db stage-checkpoints","href":"/node-operators/op-reth/cli/op-reth/db/stage-checkpoints"},{"title":"op-reth db stage-checkpoints get","href":"/node-operators/op-reth/cli/op-reth/db/stage-checkpoints/get"},{"title":"op-reth db stage-checkpoints set","href":"/node-operators/op-reth/cli/op-reth/db/stage-checkpoints/set"}]},{"title":"op-reth db account-storage","href":"/node-operators/op-reth/cli/op-reth/db/account-storage"},{"title":"op-reth db state","href":"/node-operators/op-reth/cli/op-reth/db/state"},{"title":"op-reth db migrate-v2","href":"/node-operators/op-reth/cli/op-reth/db/migrate-v2"}]},{"group":"op-reth stage","pages":[{"title":"op-reth stage","href":"/node-operators/op-reth/cli/op-reth/stage"},{"title":"op-reth stage run","href":"/node-operators/op-reth/cli/op-reth/stage/run"},{"title":"op-reth stage drop","href":"/node-operators/op-reth/cli/op-reth/stage/drop"},{"group":"op-reth stage dump","pages":[{"title":"op-reth stage dump","href":"/node-operators/op-reth/cli/op-reth/stage/dump"},{"title":"op-reth stage dump execution","href":"/node-operators/op-reth/cli/op-reth/stage/dump/execution"},{"title":"op-reth stage dump storage-hashing","href":"/node-operators/op-reth/cli/op-reth/stage/dump/storage-hashing"},{"title":"op-reth stage dump account-hashing","href":"/node-operators/op-reth/cli/op-reth/stage/dump/account-hashing"},{"title":"op-reth stage dump merkle","href":"/node-operators/op-reth/cli/op-reth/stage/dump/merkle"}]},{"group":"op-reth stage unwind","pages":[{"title":"op-reth stage unwind","href":"/node-operators/op-reth/cli/op-reth/stage/unwind"},{"title":"op-reth stage unwind to-block","href":"/node-operators/op-reth/cli/op-reth/stage/unwind/to-block"},{"title":"op-reth stage unwind num-blocks","href":"/node-operators/op-reth/cli/op-reth/stage/unwind/num-blocks"}]}]},{"group":"op-reth p2p","pages":[{"title":"op-reth p2p","href":"/node-operators/op-reth/cli/op-reth/p2p"},{"title":"op-reth p2p header","href":"/node-operators/op-reth/cli/op-reth/p2p/header"},{"title":"op-reth p2p body","href":"/node-operators/op-reth/cli/op-reth/p2p/body"},{"group":"op-reth p2p rlpx","pages":[{"title":"op-reth p2p rlpx","href":"/node-operators/op-reth/cli/op-reth/p2p/rlpx"},{"title":"op-reth p2p rlpx ping","href":"/node-operators/op-reth/cli/op-reth/p2p/rlpx/ping"}]},{"title":"op-reth p2p bootnode","href":"/node-operators/op-reth/cli/op-reth/p2p/bootnode"},{"title":"op-reth p2p enode","href":"/node-operators/op-reth/cli/op-reth/p2p/enode"}]},{"title":"op-reth config","href":"/node-operators/op-reth/cli/op-reth/config"},{"title":"op-reth prune","href":"/node-operators/op-reth/cli/op-reth/prune"},{"title":"op-reth re-execute","href":"/node-operators/op-reth/cli/op-reth/re-execute"},{"group":"op-reth proofs","pages":[{"title":"op-reth proofs","href":"/node-operators/op-reth/cli/op-reth/proofs"},{"title":"op-reth proofs init","href":"/node-operators/op-reth/cli/op-reth/proofs/init"},{"title":"op-reth proofs backfill","href":"/node-operators/op-reth/cli/op-reth/proofs/backfill"},{"title":"op-reth proofs prune","href":"/node-operators/op-reth/cli/op-reth/proofs/prune"},{"group":"op-reth proofs snapshot","pages":[{"title":"op-reth proofs snapshot","href":"/node-operators/op-reth/cli/op-reth/proofs/snapshot"},{"title":"op-reth proofs snapshot init","href":"/node-operators/op-reth/cli/op-reth/proofs/snapshot/init"},{"title":"op-reth proofs snapshot drop","href":"/node-operators/op-reth/cli/op-reth/proofs/snapshot/drop"}]},{"title":"op-reth proofs unwind","href":"/node-operators/op-reth/cli/op-reth/proofs/unwind"}]}]}]}]}]},{"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"}]}]},"basePath":"","title":"Optimism Documentation","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}