Forno is a cLabs hosted node service for interacting with the Celo network. This allows you to connect to the Celo Blockchain without having to run your own node.
Best-Effort ServiceForno is a free service with no terms of service or uptime guarantees, and is rate limited. For production applications or as your usage increases, consider professional RPC and node providers that can provide the desired level of support (SLA).
Forno has HTTP and websocket endpoints that you can use to query current Celo data or post transactions that you would like to broadcast to the network. The service runs full nodes in non-archive mode, so you can query the current state of the blockchain, but cannot access historic state.Forno is a public node, so to send transactions from a Forno connection you will have to sign transactions with a private key before sending them to Forno.Forno is the supported path for applications submitting transactions. If you run your own node instead, it forwards the transactions you submit on to the sequencer for you — see Run a public RPC node.
Websocket connections are useful for listening to logs (events) emitted by smart contracts. However, Forno automatically disconnects websocket connections after 20 minutes.When disconnected, you can reconnect to the websocket endpoint to continue listening for events. This example script demonstrates how to set up an event listener that automatically reconnects when the connection drops.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Celo Docs","description":"Learn to develop on the Ethereum L2 built for the real world. Access guides, APIs, and tools for fast, affordable blockchain applications","colors":{"primary":"#000000","light":"#fcff52","dark":"#000000"},"logo":{"light":"https://mintcdn.com/celo-64ac69bd/0WkPc8r8miw6rJ0o/images/CeloDocs_LogoLight.svg?fit=max\u0026auto=format\u0026n=0WkPc8r8miw6rJ0o\u0026q=85\u0026s=9d6c38002bd204ed66ca9db0782aecf9","dark":"https://mintcdn.com/celo-64ac69bd/0WkPc8r8miw6rJ0o/images/CeloDocs_LogoDark.svg?fit=max\u0026auto=format\u0026n=0WkPc8r8miw6rJ0o\u0026q=85\u0026s=020f629b1f5797de98cb1aed37d8a3a7"},"favicon":"https://mintcdn.com/celo-64ac69bd/0WkPc8r8miw6rJ0o/images/CeloDocs_Favicon_64px.png?fit=max\u0026auto=format\u0026n=0WkPc8r8miw6rJ0o\u0026q=85\u0026s=7ba4295bda57bbba69fb5e4d52e86db9","appearance":{"default":"dark"},"background":{"color":{"light":"#FCF6F1","dark":"#0b0d10"}},"navbar":{"links":[{"href":"https://discord.com/invite/celo","label":"Community"},{"href":"https://celo.org","label":"Celo.org"}],"primary":{"type":"button","label":"GitHub","href":"https://github.com/celo-org"}},"footer":{"links":[{"header":"Community","items":[{"label":"Forum","href":"https://forum.celo.org/"},{"label":"Contributors","href":"/contribute"}]},{"header":"Socials","items":[{"label":"Youtube","href":"https://www.youtube.com/@CeloOrg"},{"label":"Discord","href":"https://discord.com/invite/celo"},{"label":"X","href":"https://x.com/Celo"},{"label":"Events","href":"https://luma.com/user/usr-QJkvU5EML2BJeYc"},{"label":"Celo Developers newsletter","href":"https://celo-devs.beehiiv.com/subscribe"}]}]},"seo":{"organization":{"name":"Celo","url":"https://celo.org","logo":"https://docs.celo.org/logo/celo_light.png","sameAs":["https://github.com/celo-org","https://x.com/Celo","https://www.youtube.com/@CeloOrg","https://discord.com/invite/celo","https://forum.celo.org/","https://l2beat.com/scaling/projects/celo"]}},"fonts":{"heading":{"family":"system-ui"},"body":{"family":"system-ui"}},"integrations":{"ga4":{"measurementId":"G-0CXEKQ81V2"}},"banner":{"content":"🤖 **Agents on Open Rails** | Celo’s global hackathon — $5,000 in prizes, kicks off Oct 6. [Join the hackathon](https://www.loops.house/agents-on-open-rails)","dismissible":true},"contextual":{"options":["copy","view","mcp","chatgpt","claude","cursor","vscode",{"title":"Edit on GitHub","description":"Open the docs repository to edit a page and raise a pull request","icon":"github","href":"https://github.com/celo-org/docs"}],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Docs for AI","icon":"robot","href":"/build/agents/use-docs-with-ai"},{"anchor":"Organization","icon":"globe","href":"https://celo.org/"},{"anchor":"Support","icon":"bullhorn","href":"https://discord.com/invite/celo"},{"anchor":"Forum","icon":"newspaper","href":"https://forum.celo.org/"},{"anchor":"Faucet","icon":"faucet","href":"https://faucet.celo.org/celo-sepolia"},{"anchor":"FAQs","icon":"square-question","href":"https://docs.celo.org/operate/operators/faq"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"celo-64ac69bd","hasAudioNarration":false,"actualSubdomain":"celo-64ac69bd","customDomains":["docs.celo.org"],"gitSource":{"type":"github","owner":"celo-org","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad5ce964613fdc88740c7e6","collectionId":"0f091180-f9ba-4200-93ab-a63bf72e192d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad5ce964613fdc88740c7e6"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ad5dc421f1165e83eb5573f","clientVersion":"0.0.3883","searchFilterCounts":[{"language":"default","tag":"Build","count":126},{"language":"default","tag":"Tools","count":84},{"language":"default","tag":"Learn","count":44},{"language":"default","tag":"Libraries \u0026 SDKs","count":40},{"language":"default","tag":"Operate","count":39},{"language":"default","tag":"CLI","count":21},{"language":"default","tag":"Agents","count":15},{"language":"default","tag":"Contribute","count":15},{"language":"default","tag":"Guides","count":12},{"language":"default","tag":"ContractKit","count":10}]},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"community@celo.org"}},"hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"editor-v7-file-tree","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":"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":"editor-branches-v2-autocommit","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2","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":"teamspace","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","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":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"client-snapshot-docs-config","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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".colored_text a{color:inherit!important}ol ol{list-style-type:lower-roman!important}"}],"page":{"pagePath":"build/tools/nodes/forno","slug":"/build/tools/nodes/forno","pageMetadata":{"title":"Forno","sidebarTitle":"Forno","description":"How to connect to Celo without running a full node using Forno.","href":"/build/tools/nodes/forno"},"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: \"How to connect to Celo without running a full node using Forno.\"\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`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`what-is-forno`,children:`What is Forno?`}),`\n`,_jsx(_components.p,{children:`Forno is a cLabs hosted node service for interacting with the Celo network. This allows you to connect to the Celo Blockchain without having to run your own node.`}),`\n`,_jsxs(Tip,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Best-Effort Service`})}),_jsxs(_components.p,{children:[`Forno is a free service with no terms of service or uptime guarantees, and is rate limited. For production applications or as your usage increases, consider `,_jsx(_components.a,{href:`/build/tools/nodes/overview#as-a-service`,children:`professional RPC and node providers`}),` that can provide the desired level of support (SLA).`]})]}),`\n`,_jsx(_components.p,{children:`Forno has HTTP and websocket endpoints that you can use to query current Celo data or post transactions that you would like to broadcast to the network. The service runs full nodes in non-archive mode, so you can query the current state of the blockchain, but cannot access historic state.`}),`\n`,_jsx(_components.p,{children:`Forno is a public node, so to send transactions from a Forno connection you will have to sign transactions with a private key before sending them to Forno.`}),`\n`,_jsxs(_components.p,{children:[`Forno is the supported path for applications submitting transactions. If you run your own node instead, it forwards the transactions you submit on to the sequencer for you — see `,_jsx(_components.a,{href:`/operate/operators/public-rpc-node`,children:`Run a public RPC node`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`forno-networks`,children:`Forno networks`}),`\n`,_jsxs(_components.p,{children:[`Consult `,_jsx(_components.a,{href:`/learn/network/overview`,children:`this page`}),` to determine which network is right for you.`]}),`\n`,_jsx(Heading,{level:`3`,id:`celo-mainnet`,children:`Celo Mainnet`}),`\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:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`https://forno.celo.org`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Websocket support:`}),`\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:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`wss://forno.celo.org/ws`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`celo-sepolia-testnet`,children:`Celo Sepolia Testnet`}),`\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:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`https://forno.celo-sepolia.celo-testnet.org`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Websocket support:`}),`\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:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`wss://forno.celo-sepolia.celo-testnet.org/ws`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`websocket-connections-\u0026-event-listeners`,children:`Websocket Connections \u0026 Event Listeners`}),`\n`,_jsx(_components.p,{children:`Websocket connections are useful for listening to logs (events) emitted by smart contracts. However, Forno automatically disconnects websocket connections after 20 minutes.`}),`\n`,_jsxs(_components.p,{children:[`When disconnected, you can reconnect to the websocket endpoint to continue listening for events. `,_jsx(_components.a,{href:`https://gist.github.com/critesjosh/a230e7b2eb54c8d330ca57db1f6239db`,children:`This example script`}),` demonstrates how to set up an event listener that automatically reconnects when the connection drops.`]})]})}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":"Forno","sidebarTitle":"Forno","description":"How to connect to Celo without running a full node using Forno.","href":"/build/tools/nodes/forno"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What is Forno?","slug":"what-is-forno","depth":2,"children":[]},{"title":"Forno networks","slug":"forno-networks","depth":2,"children":[{"title":"Celo Mainnet","slug":"celo-mainnet","depth":3,"children":[]},{"title":"Celo Sepolia Testnet","slug":"celo-sepolia-testnet","depth":3,"children":[]},{"title":"Websocket Connections \u0026 Event Listeners","slug":"websocket-connections-\u0026-event-listeners","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/celo-64ac69bd/2f1ae726193f7358/assistant.js"],"subdomain":"celo-64ac69bd","siteName":"Celo Docs","title":"Forno - Celo Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-06T17:44:46.563Z","originalFileLocation":"build/tools/nodes/forno.mdx"},"headHtml":"\u003cmeta data-mint-head name=\"description\" content=\"How to connect to Celo without running a full node using Forno.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Celo Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/celo-64ac69bd/AG5c0rSidebGFnjH/_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/celo-64ac69bd/AG5c0rSidebGFnjH/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/celo-64ac69bd/AG5c0rSidebGFnjH/_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/celo-64ac69bd/AG5c0rSidebGFnjH/_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/celo-64ac69bd/AG5c0rSidebGFnjH/_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/celo-64ac69bd/AG5c0rSidebGFnjH/_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/celo-64ac69bd/AG5c0rSidebGFnjH/_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/celo-64ac69bd/AG5c0rSidebGFnjH/_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/celo-64ac69bd/AG5c0rSidebGFnjH/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Forno - Celo Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"How to connect to Celo without running a full node using Forno.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Celo Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.celo.org/build/tools/nodes/forno\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Forno - Celo Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How to connect to Celo without running a full node using Forno.\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/celo-64ac69bd/AG5c0rSidebGFnjH/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Celo Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.celo.org/build/tools/nodes/forno\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/build/tools/nodes/forno.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://celo.org/#organization\",\"name\":\"Celo\",\"url\":\"https://celo.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://docs.celo.org/logo/celo_light.png\"},\"sameAs\":[\"https://github.com/celo-org\",\"https://x.com/Celo\",\"https://www.youtube.com/@CeloOrg\",\"https://discord.com/invite/celo\",\"https://forum.celo.org/\",\"https://l2beat.com/scaling/projects/celo\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.celo.org#website\",\"name\":\"Celo Docs\",\"url\":\"https://docs.celo.org\",\"publisher\":{\"@id\":\"https://celo.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.celo.org/build/tools/nodes/forno#webpage\",\"url\":\"https://docs.celo.org/build/tools/nodes/forno\",\"name\":\"Forno\",\"description\":\"How to connect to Celo without running a full node using Forno.\",\"dateModified\":\"2026-10-06T17:44:46.563Z\",\"isPartOf\":{\"@id\":\"https://docs.celo.org#website\"},\"breadcrumb\":{\"@id\":\"https://docs.celo.org/build/tools/nodes/forno#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.celo.org/build/tools/nodes/forno#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Network info\",\"item\":\"https://docs.celo.org/build/tools/testnets/celo-sepolia/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Forno\",\"item\":\"https://docs.celo.org/build/tools/nodes/forno\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.celo.org/build/tools/nodes/forno#article\",\"headline\":\"Forno\",\"name\":\"Forno\",\"description\":\"How to connect to Celo without running a full node using Forno.\",\"url\":\"https://docs.celo.org/build/tools/nodes/forno\",\"mainEntityOfPage\":{\"@id\":\"https://docs.celo.org/build/tools/nodes/forno#webpage\"},\"dateModified\":\"2026-10-06T17:44:46.563Z\",\"publisher\":{\"@id\":\"https://celo.org/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.celo.org#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Celo Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Celo Docs","nav":{"global":{"anchors":[{"anchor":"Docs for AI","icon":"robot","href":"/build/agents/use-docs-with-ai"},{"anchor":"Organization","icon":"globe","href":"https://celo.org/"},{"anchor":"Support","icon":"bullhorn","href":"https://discord.com/invite/celo"},{"anchor":"Forum","icon":"newspaper","href":"https://forum.celo.org/"},{"anchor":"Faucet","icon":"faucet","href":"https://faucet.celo.org/celo-sepolia"},{"anchor":"FAQs","icon":"square-question","href":"https://docs.celo.org/operate/operators/faq"}]},"tabs":[{"tab":"Learn","pages":[{"title":"Learn","href":"/learn/celo"}]},{"tab":"Build","groups":[{"group":"Quickstart","pages":[{"title":"Building Apps on Celo","sidebarTitle":"Getting started","href":"/build"},{"title":"Quickstart","sidebarTitle":"Quickstart with Celo Composer","href":"/build/quickstart"},{"title":"Developer Tools and Resources","href":"/build/tools/overview/index"},{"title":"Celo for Ethereum Developers","href":"/build/tools/overview/migrate/from-ethereum"}]},{"group":"Agents","pages":[{"title":"Build with AI on Celo","sidebarTitle":"Overview","href":"/build/agents/overview"},{"title":"Use Celo Docs with AI Tools","sidebarTitle":"Docs for AI Tools","href":"/build/agents/use-docs-with-ai"},{"title":"ERC-8004: Agent Trust Protocol","sidebarTitle":"8004: Agent Trust","href":"/build/agents/8004"},{"title":"Self Agent ID: Proof-of-Human Identity for Agents","sidebarTitle":"Self: Agent Identity","href":"/build/agents/self-agent-id"},{"title":"Agent Vault: Card Payments and Logins for Agents","sidebarTitle":"Self: Agent Vault","href":"/build/agents/agent-vault"},{"title":"x402: Agent Payments","sidebarTitle":"x402: Payments","href":"/build/agents/x402"},{"title":"x402: Get your endpoint discovered","sidebarTitle":"x402: Get discovered","href":"/build/agents/x402-get-discovered"},{"title":"MPP: Machine Payments Protocol","sidebarTitle":"MPP: Payments","href":"/build/agents/mpp"},{"title":"Celopedia","sidebarTitle":"Celopedia (Skill)","href":"/build/agents/celopedia"},{"title":"Vibe Coding","href":"/build/agents/vibe-coding"},{"title":"Model Context Protocol (MCP)","href":"/build/agents/mcp/index"},{"title":"Celo MCP Server","href":"/build/agents/mcp/celo-mcp"},{"title":"Celina","sidebarTitle":"Celina (agent wallet)","href":"/build/agents/mcp/celina"},{"title":"AI Agents Examples","sidebarTitle":"Use Cases","href":"/build/agents/usecases"},{"title":"Attribution Tags","href":"/build/agents/attribution-tags"}]},{"group":"Mini Apps","pages":[{"title":"Build for MiniPay","sidebarTitle":"MiniPay","href":"/build/mini-apps/overview"}]},{"group":"Network info","pages":[{"title":"Celo Sepolia Testnet","sidebarTitle":"Celo Sepolia","href":"/build/tools/testnets/celo-sepolia/index"},{"title":"Nodes and Services","description":"Nodes as a Service","sidebarTitle":"Overview","href":"/build/tools/nodes/overview"},{"title":"Forno","sidebarTitle":"Forno","href":"/build/tools/nodes/forno"},{"title":"Alchemy","description":"How to connect to Celo using Alchemy.","href":"/build/tools/nodes/alchemy"}]},{"group":"Guides","pages":[{"title":"Build with Farcaster","href":"/build/build-with-farcaster"},{"title":"Build with Self","href":"/build/build-with-self"},{"title":"Build with Local Stablecoins","href":"/build/build-with-local-stablecoin"},{"title":"Build with USA₮","href":"/build/build-with-usat"},{"title":"Introduction to SocialConnect","href":"/build/build-on-socialconnect"},{"title":"Build with DeFi","href":"/build/build-with-defi"},{"group":"Fee Abstraction","pages":[{"title":"Fee abstraction guide","sidebarTitle":"Overview","href":"/build/fee-abstraction/overview"},{"title":"Using Fee Abstraction in Transactions","sidebarTitle":"Using Fee Abstraction","href":"/build/fee-abstraction/using-fee-abstraction"},{"title":"Adding Fee Currencies","sidebarTitle":"Adding Fee Currencies","href":"/build/fee-abstraction/add-fee-currency"}]},{"title":"Scaling Your App","href":"/build/scaling-your-app"},{"title":"Nightfall Privacy Layer","sidebarTitle":"Nightfall Privacy Layer","href":"/build/nightfall"},{"title":"Fund your Project","href":"/build/fund-your-project"}]},{"group":"Tools","pages":[{"group":"Libraries \u0026 SDKs","pages":[{"title":"Celo Libraries \u0026 SDKs","sidebarTitle":"Overview","href":"/build/tools/libraries-sdks/celo-sdks"},{"title":"Composer Kit UI","href":"/build/tools/libraries-sdks/composer-kit"},{"group":"CLI","pages":[{"title":"Celo CLI","sidebarTitle":"Overview","href":"/build/tools/libraries-sdks/cli/index"},{"title":"celocli account","sidebarTitle":"Account","href":"/build/tools/libraries-sdks/cli/account"},{"title":"celocli autocomplete","sidebarTitle":"Autocomplete","href":"/build/tools/libraries-sdks/cli/autocomplete"},{"title":"celocli commands","sidebarTitle":"Commands","href":"/build/tools/libraries-sdks/cli/commands"},{"title":"celocli config","sidebarTitle":"Config","href":"/build/tools/libraries-sdks/cli/config"},{"title":"celocli election","sidebarTitle":"Election","href":"/build/tools/libraries-sdks/cli/election"},{"title":"celocli epochs","sidebarTitle":"Epochs","href":"/build/tools/libraries-sdks/cli/epochs"},{"title":"celocli governance","sidebarTitle":"Governance","href":"/build/tools/libraries-sdks/cli/governance"},{"title":"celocli help","sidebarTitle":"Help","href":"/build/tools/libraries-sdks/cli/help"},{"title":"celocli identity","sidebarTitle":"Identity","href":"/build/tools/libraries-sdks/cli/identity"},{"title":"celocli lockedcelo","sidebarTitle":"Lockedcelo","href":"/build/tools/libraries-sdks/cli/lockedcelo"},{"title":"celocli multisig","sidebarTitle":"Multisig","href":"/build/tools/libraries-sdks/cli/multisig"},{"title":"celocli network","sidebarTitle":"Network","href":"/build/tools/libraries-sdks/cli/network"},{"title":"celocli node","sidebarTitle":"Node","href":"/build/tools/libraries-sdks/cli/node"},{"title":"celocli oracle","sidebarTitle":"Oracle","href":"/build/tools/libraries-sdks/cli/oracle"},{"title":"celocli plugins","sidebarTitle":"Plugins","href":"/build/tools/libraries-sdks/cli/plugins"},{"title":"celocli releasecelo","sidebarTitle":"Releasecelo","href":"/build/tools/libraries-sdks/cli/releasecelo"},{"title":"celocli rewards","sidebarTitle":"Rewards","href":"/build/tools/libraries-sdks/cli/rewards"},{"title":"celocli transfer","sidebarTitle":"Transfer","href":"/build/tools/libraries-sdks/cli/transfer"},{"title":"celocli validator","sidebarTitle":"Validator","href":"/build/tools/libraries-sdks/cli/validator"},{"title":"celocli validatorgroup","sidebarTitle":"Validatorgroup","href":"/build/tools/libraries-sdks/cli/validatorgroup"}]},{"title":"Viem","sidebarTitle":"viem","href":"/build/tools/libraries-sdks/viem/index"},{"title":"Ethers.js","href":"/build/tools/libraries-sdks/ethers/index"},{"title":"Reown (prev. known as WalletConnect)","sidebarTitle":"Reown","href":"/build/tools/libraries-sdks/reown/index"},{"title":"Using Dynamic","sidebarTitle":"Dynamic","href":"/build/tools/libraries-sdks/dynamic/index"},{"title":"Build with Portal","sidebarTitle":"Portal","href":"/build/tools/libraries-sdks/portal/index"},{"title":"Build with JAW","sidebarTitle":"JAW","href":"/build/tools/libraries-sdks/jaw/index"},{"group":"ContractKit","pages":[{"title":"ContractKit","sidebarTitle":"Overview","href":"/build/tools/libraries-sdks/contractkit/index"},{"title":"Setup","sidebarTitle":" Setup","href":"/build/tools/libraries-sdks/contractkit/setup"},{"title":"Using the Kit","href":"/build/tools/libraries-sdks/contractkit/usage"},{"title":"Core Contracts (Wrapper/Registry)","sidebarTitle":"Core Contracts Registry","href":"/build/tools/libraries-sdks/contractkit/contracts-wrappers-registry"},{"title":"Query On-Chain Identifiers with ODIS","sidebarTitle":"Querying on-chain identifiers with ODIS","href":"/build/tools/libraries-sdks/contractkit/odis"},{"title":"Data Encryption Key","href":"/build/tools/libraries-sdks/contractkit/data-encryption-key"},{"title":"Migrating to viem","sidebarTitle":"Migrating to viem","href":"/build/tools/libraries-sdks/contractkit/migrating-to-viem"},{"title":"Migrating to ContractKit v2.0","href":"/build/tools/libraries-sdks/contractkit/migrating-to-contractkit-v2"},{"title":"Migrating to ContractKit v1.0","href":"/build/tools/libraries-sdks/contractkit/migrating-to-contractkit-v1"},{"title":"Using Web3 from ContractKit","sidebarTitle":"Using Web3 from ContractKit with Celo","href":"/build/tools/libraries-sdks/contractkit/notes-web3-with-contractkit"}]},{"title":"Web3.js","sidebarTitle":"Web3.js (deprecated)","href":"/build/tools/libraries-sdks/web3/index"}]},{"group":"Dev environments","pages":[{"title":"Build with Celo","sidebarTitle":"Overview","href":"/build/tools/dev-environments/index"},{"title":"Deploy on Celo with Foundry","sidebarTitle":"Using Foundry","href":"/build/tools/dev-environments/foundry"},{"title":"Deploy on Celo with thirdweb","sidebarTitle":"Using thirdweb","href":"/build/tools/dev-environments/thirdweb"},{"group":"Using MultiBaas","pages":[{"title":"MultiBaas by Curvegrid","sidebarTitle":"Overview","href":"/build/tools/dev-environments/multibaas/overview"},{"title":"Smart Contracts","href":"/build/tools/dev-environments/multibaas/contracts"},{"title":"Event Webhooks","href":"/build/tools/dev-environments/multibaas/webhooks"}]},{"title":"Deploy on Celo with Remix","sidebarTitle":"Using Remix","href":"/build/tools/dev-environments/remix"},{"title":"Deploy on Celo with Hardhat","sidebarTitle":"Using Hardhat","href":"/build/tools/dev-environments/hardhat"}]},{"group":"Wallets","pages":[{"title":"Wallet integration","href":"/build/tools/wallets/index"},{"group":"MetaMask","pages":[{"title":"Add Celo Testnet to MetaMask","sidebarTitle":"Add Celo to MetaMask","href":"/build/tools/wallets/metamask/add-celo-testnet-to-metamask"},{"title":"Programmatic Setup","href":"/build/tools/wallets/metamask/setup"},{"title":"MetaMask and Celo","href":"/build/tools/wallets/metamask/use"},{"title":"Import Valora to MetaMask","sidebarTitle":"MetaMask and Valora","href":"/build/tools/wallets/metamask/import"}]},{"group":"Ledger Wallet","pages":[{"title":"Set up a Ledger Wallet with Celo","sidebarTitle":"Ledger Wallet Setup","href":"/build/tools/wallets/ledger/setup"},{"title":"Connect Ledger to Celo Terminal","sidebarTitle":"Connect to Celo Terminal","href":"/build/tools/wallets/ledger/to-celo-terminal"},{"title":"Connect Ledger to Celo Web Wallet","sidebarTitle":"Connect to Celo Web Wallet","href":"/build/tools/wallets/ledger/to-celo-web"},{"title":"Connect Ledger to Celo CLI","sidebarTitle":"Connect to Celo CLI","href":"/build/tools/wallets/ledger/to-celo-cli"},{"title":"Ledger EIP-712 Signing Workaround","sidebarTitle":"EIP-712 Workaround","href":"/build/tools/wallets/ledger/eip712-workaround"}]}]},{"group":"Indexers","pages":[{"title":"Data Indexer","sidebarTitle":"Overview","href":"/build/tools/indexers/overview"},{"title":"The Graph","href":"/build/tools/indexers/the-graph"},{"title":"SubQuery","href":"/build/tools/indexers/subquery"},{"title":"Envio","href":"/build/tools/indexers/envio"},{"title":"GoldRush","href":"/build/tools/indexers/goldrush"},{"title":"Indexing Co","href":"/build/tools/indexers/indexing-co"},{"title":"Codex","href":"/build/tools/indexers/codex"}]},{"group":"Oracles","pages":[{"title":"Running oracles","sidebarTitle":"Running Oracles","href":"/build/tools/oracles/run"},{"title":"Oracles on Celo","sidebarTitle":"Overview","href":"/build/tools/oracles/index"},{"title":"Using Band","sidebarTitle":"Using Band Protocol","href":"/build/tools/oracles/band-protocol"},{"title":"Using Chainlink Oracles","href":"/build/tools/oracles/chainlink-oracles"},{"title":"Using RedStone Oracles","sidebarTitle":"Using RedStone","href":"/build/tools/oracles/redstone"},{"title":"Using Supra Oracle","sidebarTitle":"Using Supra","href":"/build/tools/oracles/supra"},{"title":"Using Quex Oracles","sidebarTitle":"Using Quex","href":"/build/tools/oracles/quex-oracles"},{"title":"Using DIA Oracles","sidebarTitle":"Using DIA","href":"/build/tools/oracles/dia"},{"title":"How to Use Wit/Oracle on Celo","sidebarTitle":"Wit/Oracle","href":"/build/tools/oracles/wit-oracle"}]},{"group":"Explorers","pages":[{"title":"Explorer on Celo","sidebarTitle":"Overview","href":"/build/tools/explorers/overview"},{"title":"Block Explorer","href":"/build/tools/explorers/block-explorers"},{"title":"Analytics","href":"/build/tools/explorers/analytics"}]},{"group":"Contract verification","pages":[{"title":"Verify Contract Deployed on Celo","sidebarTitle":"Overview","href":"/build/tools/contract-verification/index"},{"title":"Verify Smart Contract using Blockscout","sidebarTitle":"Using Blockscout","href":"/build/tools/contract-verification/blockscout"},{"title":"Verify Smart Contract using CeloScan","sidebarTitle":"Using Celoscan","href":"/build/tools/contract-verification/celoscan"},{"title":"Verify Smart Contract using Remix","sidebarTitle":"Using Remix","href":"/build/tools/contract-verification/remix"},{"title":"Verify Smart Contract using Hardhat","sidebarTitle":"Using Hardhat","href":"/build/tools/contract-verification/hardhat"}]},{"group":"Bridges","pages":[{"title":"Bridge Providers","href":"/build/tools/bridges/bridges"},{"title":"Cross-Chain Messaging","href":"/build/tools/bridges/cross-chain-messaging"}]}]},{"group":"Reference","pages":[{"title":"L1 Contracts","href":"/build/tools/contracts/l1-contracts"},{"title":"Core Contracts","href":"/build/tools/contracts/core-contracts"},{"title":"Stablecoin Contracts","href":"/build/tools/contracts/stablecoin-contracts"},{"title":"Fee currency contracts","href":"/build/tools/contracts/fee-currencies"},{"title":"Uniswap Contracts","href":"/build/tools/contracts/uniswap-contracts"},{"title":"Launch Checklist","href":"/build/launch-checklist"}]}]},{"tab":"Contribute","pages":[{"title":"Contribute","href":"/contribute"}]},{"tab":"Operate","pages":[{"title":"Operate","href":"/operate"}]}]},"title":"Forno - Celo Docs","buildId":"dpl_37ZDLJcyt8yhrTVF6LiYvX7LvmXB","deploymentId":"dpl_37ZDLJcyt8yhrTVF6LiYvX7LvmXB","dynamics":["10e4515597"],"chunks":["BannerMarkdown-BNd7h86C.js","dist-BapHnXz-.js","lib-B6V4jynN.js","lib-vtHBCq3V.js","clsx-DWf8bZo2.js","html-void-elements-mCSPHezU.js","katex-Cnv50rb0.js","marked.esm-BKo0Hl1x.js"]}