All workflows come with a session_state dictionary that you can use to cache intermediate results. The session_state is tied to a session_id and can be persisted to a database.Provide your workflows with storage to enable persistence of session state in a database.For example, you can use the SqliteWorkflowStorage to cache results in a Sqlite database.
# Create the workflowgenerate_blog_post = BlogPostGenerator( # Fix the session_id for this demo session_id="my-session-id", storage=SqliteWorkflowStorage( table_name="generate_blog_post_workflows", db_file="tmp/workflows.db", ),)
Then in the run() method, you can read from and add to the session_state as needed.
class BlogPostGenerator(Workflow): # ... agents def run(self, topic: str, use_cache: bool = True) -> Iterator[RunResponse]: # Read from the session state cache if use_cache and "blog_posts" in self.session_state: logger.info("Checking if cached blog post exists") for cached_blog_post in self.session_state["blog_posts"]: if cached_blog_post["topic"] == topic: logger.info("Found cached blog post") yield RunResponse( run_id=self.run_id, event=RunEvent.workflow_completed, content=cached_blog_post["blog_post"], ) return # ... generate the blog post # Save to session state for future runs if "blog_posts" not in self.session_state: self.session_state["blog_posts"] = [] self.session_state["blog_posts"].append({"topic": topic, "blog_post": self.writer.run_response.content})
When the workflow starts, the session_state for that particular session_id is read from the database and when the workflow ends, the session_state is stored in the database.
You can always call self.write_to_storage() to save the session_state to the database at any time. In case you need to abort the workflow but want to store the intermediate results.
View the Blog Post Generator for an example of how to use session state for caching.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Agno","colors":{"primary":"#FF4017","light":"#FF4017","dark":"#FF4017"},"logo":{"light":"https://mintcdn.com/agno/QZOB15dhrj4yAmBd/logo/black.svg?fit=max\u0026auto=format\u0026n=QZOB15dhrj4yAmBd\u0026q=85\u0026s=0ba9fbc41180e137818459edce954a48","dark":"https://mintcdn.com/agno/QZOB15dhrj4yAmBd/logo/white.svg?fit=max\u0026auto=format\u0026n=QZOB15dhrj4yAmBd\u0026q=85\u0026s=cc65cdfdc78638474d1c108480698d29"},"favicon":"/favicon.png","background":{"color":{"light":"#FFFFFF","dark":"#111113"}},"navbar":{"links":[{"label":"Discord","href":"https://agno.link/discord"},{"label":"Community","href":"https://community.agno.com/"}],"primary":{"type":"github","href":"https://github.com/agno-agi/agno"}},"footer":{"socials":{"x":"https://x.com/AgnoAgi","github":"https://github.com/agno-agi/agno","discord":"https://agno.link/discord","youtube":"https://agno.link/youtube","website":"https://agno.com"}},"fonts":{"heading":{"family":"Inter","weight":750},"body":{"family":"Inter","weight":400}},"integrations":{"posthog":{"apiKey":"phc_MjuWiUsZe9racJUG1IpiikP0gPInPwL0206gjfsBWSk"}},"banner":{"content":"You are viewing v1 docs. For the latest documentation, visit [docs.agno.com](https://docs.agno.com)","dismissible":true},"contextual":{"options":["copy","view","chatgpt","claude"]},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"agno","hasAudioNarration":false,"actualSubdomain":"agno","customDomains":["docs-v1.agno.com"],"gitSource":{"type":"github","owner":"agno-agi","repo":"agno-docs-v1","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21f61f52911a466b87d396","collectionId":"d9a42b83-85e4-4208-af5f-52ac21b1a434","schemaVersion":"v2"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a21f61f52911a466b87d396:success","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Examples","count":737},{"language":"default","tag":"Models","count":305},{"language":"default","tag":"User Guide","count":292},{"language":"default","tag":"Agent Concepts","count":284},{"language":"default","tag":"Concepts","count":268},{"language":"default","tag":"Tools","count":200},{"language":"default","tag":"API reference","count":125},{"language":"default","tag":"Reference","count":125},{"language":"default","tag":"Toolkits","count":89},{"language":"default","tag":"Knowledge","count":73}]},"assistantConfig":{},"basePath":"","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":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#banner p{font-weight:500}#banner a{text-decoration:underline;text-decoration-color:#fff}"}],"page":{"pagePath":"workflows/state","slug":"/workflows/state","pageMetadata":{"title":"Workflow State","description":null,"href":"/workflows/state"},"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`,..._provideComponents(),...props.components},{CodeBlock,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`All workflows come with a `,_jsx(_components.code,{children:`session_state`}),` dictionary that you can use to cache intermediate results. The `,_jsx(_components.code,{children:`session_state`}),` is tied to a `,_jsx(_components.code,{children:`session_id`}),` and can be persisted to a database.`]}),`\n`,_jsxs(_components.p,{children:[`Provide your workflows with `,_jsx(_components.code,{children:`storage`}),` to enable persistence of session state in a database.`]}),`\n`,_jsxs(_components.p,{children:[`For example, you can use the `,_jsx(_components.code,{children:`SqliteWorkflowStorage`}),` to cache results in a Sqlite database.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`python`,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:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Create the workflow`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`generate_blog_post `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` BlogPostGenerator(`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Fix the session_id for this demo`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` session_id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"my-session-id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` storage`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`SqliteWorkflowStorage(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` table_name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"generate_blog_post_workflows\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` db_file`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"tmp/workflows.db\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Then in the `,_jsx(_components.code,{children:`run()`}),` method, you can read from and add to the `,_jsx(_components.code,{children:`session_state`}),` as needed.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`23`,language:`python`,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:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`23`,children:[_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`class`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` BlogPostGenerator`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Workflow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # ... agents`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`topic`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`str`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`use_cache`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`bool`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` True`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) -> Iterator[RunResponse]:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Read from the session state cache`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` use_cache `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`and`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"blog_posts\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` in`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.session_state:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` logger.info(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Checking if cached blog post exists\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` cached_blog_post `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.session_state[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"blog_posts\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` cached_blog_post[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"topic\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`==`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` topic:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` logger.info(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Found cached blog post\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` yield`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` RunResponse(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` run_id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.run_id,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` event`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`RunEvent.workflow_completed,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` content`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`cached_blog_post[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"blog_post\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # ... generate the blog post`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Save to session state for future runs`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"blog_posts\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` not`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` in`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.session_state:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.session_state[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"blog_posts\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` []`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.session_state[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"blog_posts\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`].append({`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"topic\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: topic, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"blog_post\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.writer.run_response.content})`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`When the workflow starts, the `,_jsx(_components.code,{children:`session_state`}),` for that particular `,_jsx(_components.code,{children:`session_id`}),` is read from the database and when the workflow ends, the `,_jsx(_components.code,{children:`session_state`}),` is stored in the database.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`You can always call `,_jsx(_components.code,{children:`self.write_to_storage()`}),` to save the `,_jsx(_components.code,{children:`session_state`}),` to the database at any time. In case you need to abort the workflow but want to store the intermediate results.`]})}),`\n`,_jsxs(_components.p,{children:[`View the `,_jsx(_components.a,{href:`/workflows/introduction#full-example-blog-post-generator`,children:`Blog Post Generator`}),` for an example of how to use session state for caching.`]})]})}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":"Workflow State","description":null,"href":"/workflows/state"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"subdomain":"agno","siteName":"Agno","title":"Workflow State - Agno","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-07T05:50:48.281Z","originalFileLocation":"workflows/state.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=\"application-name\" content=\"Agno\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/agno/1IeQnW4BtURu6duG/_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/agno/1IeQnW4BtURu6duG/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/agno/1IeQnW4BtURu6duG/_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/agno/1IeQnW4BtURu6duG/_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/agno/1IeQnW4BtURu6duG/_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/agno/1IeQnW4BtURu6duG/_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/agno/1IeQnW4BtURu6duG/_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/agno/1IeQnW4BtURu6duG/_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/agno/1IeQnW4BtURu6duG/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Workflow State - Agno\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Agno\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs-v1.agno.com/workflows/state\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://agno.mintlify.app/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Workflow+State\u0026amp;theme=e38b262bc1335eecb906c7a3\u0026amp;signature=a5b1055433a3237263309de031784845b6b7599655a2b25ad0297c6e6ecf3b8c\">\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=\"Workflow State - Agno\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://agno.mintlify.app/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Workflow+State\u0026amp;theme=e38b262bc1335eecb906c7a3\u0026amp;signature=a5b1055433a3237263309de031784845b6b7599655a2b25ad0297c6e6ecf3b8c\">\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/agno/1IeQnW4BtURu6duG/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Agno\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF4017\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs-v1.agno.com/workflows/state\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/workflows/state.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs-v1.agno.com/#organization\",\"name\":\"Agno\",\"url\":\"https://docs-v1.agno.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/agno/QZOB15dhrj4yAmBd/logo/black.svg?fit=max\u0026auto=format\u0026n=QZOB15dhrj4yAmBd\u0026q=85\u0026s=0ba9fbc41180e137818459edce954a48\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs-v1.agno.com#website\",\"name\":\"Agno\",\"url\":\"https://docs-v1.agno.com\",\"publisher\":{\"@id\":\"https://docs-v1.agno.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs-v1.agno.com/workflows/state#webpage\",\"url\":\"https://docs-v1.agno.com/workflows/state\",\"name\":\"Workflow State\",\"dateModified\":\"2026-01-07T05:50:48.281Z\",\"isPartOf\":{\"@id\":\"https://docs-v1.agno.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs-v1.agno.com/workflows/state#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs-v1.agno.com/workflows/state#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Concepts\",\"item\":\"https://docs-v1.agno.com/agents/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Workflows\",\"item\":\"https://docs-v1.agno.com/workflows/introduction\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Workflow State\",\"item\":\"https://docs-v1.agno.com/workflows/state\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs-v1.agno.com/workflows/state#article\",\"headline\":\"Workflow State\",\"name\":\"Workflow State\",\"url\":\"https://docs-v1.agno.com/workflows/state\",\"mainEntityOfPage\":{\"@id\":\"https://docs-v1.agno.com/workflows/state#webpage\"},\"dateModified\":\"2026-01-07T05:50:48.281Z\",\"publisher\":{\"@id\":\"https://docs-v1.agno.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs-v1.agno.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Agno\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Agno","nav":{"global":null,"tabs":[{"tab":"User Guide","groups":[{"group":"Introduction","pages":[{"title":"What is Agno?","sidebarTitle":"What is Agno?","href":"/introduction"},{"title":"What are Agents?","sidebarTitle":"Your first Agents","href":"/introduction/agents"},{"title":"Multi Agent Systems","sidebarTitle":"Multi Agent Systems","href":"/introduction/multi-agent-systems"},{"title":"Playground","href":"/introduction/playground"},{"title":"Monitoring \u0026 Debugging","href":"/introduction/monitoring"},{"title":"Community \u0026 Support","href":"/introduction/community"}]},{"group":"Concepts","pages":[{"group":"Agents","pages":[{"title":"What are Agents?","sidebarTitle":"Overview","href":"/agents/introduction"},{"title":"Running your Agent","href":"/agents/run"},{"title":"Metrics","href":"/agents/metrics"},{"title":"Sessions","href":"/agents/sessions"},{"title":"Agent State","href":"/agents/state"},{"title":"Memory","href":"/agents/memory"},{"title":"Tools","href":"/agents/tools"},{"title":"Structured Output","href":"/agents/structured-output"},{"title":"Multimodal Agents","href":"/agents/multimodal"},{"title":"User Control Flows","href":"/agents/user-control-flow"},{"title":"Prompts","href":"/agents/prompts"},{"title":"Knowledge","href":"/agents/knowledge"},{"title":"Session Storage","href":"/agents/storage"},{"title":"Agent Context","href":"/agents/context"},{"title":"Agent Teams [Deprecated]","href":"/agents/teams"}]},{"group":"Teams","pages":[{"title":"What are Teams?","sidebarTitle":"Overview","href":"/teams/introduction"},{"title":"Running your Team","href":"/teams/run"},{"title":"Metrics","href":"/teams/metrics"},{"title":"Team State","sidebarTitle":"Team State","href":"/teams/shared-state"},{"group":"Team Modes","pages":[{"title":"Route","href":"/teams/route"},{"title":"Coordinate","href":"/teams/coordinate"},{"title":"Collaborate","href":"/teams/collaborate"}]},{"title":"Structured Output","href":"/teams/structured-output"}]},{"group":"Models","pages":[{"title":"What are Models?","sidebarTitle":"Overview","href":"/models/introduction"},{"title":"Models Compatibility","href":"/models/compatibility"},{"title":"OpenAI Like","href":"/models/openai-like"},{"title":"AI/ML API","href":"/models/aimlapi"},{"title":"Anthropic Claude","href":"/models/anthropic"},{"group":"AWS","pages":[{"title":"AWS Bedrock","href":"/models/aws-bedrock"},{"title":"AWS Claude","href":"/models/aws-claude"}]},{"group":"Azure","pages":[{"title":"Azure AI Foundry","href":"/models/azure-ai-foundry"},{"title":"Azure OpenAI","href":"/models/azure-openai"}]},{"group":"Cerebras","pages":[{"title":"Cerebras","href":"/models/cerebras"},{"title":"Cerebras OpenAI","href":"/models/cerebras_openai"}]},{"title":"Cohere","href":"/models/cohere"},{"title":"Dashscope","href":"/models/dashscope"},{"title":"DeepInfra","href":"/models/deepinfra"},{"title":"DeepSeek","href":"/models/deepseek"},{"title":"Fireworks","href":"/models/fireworks"},{"title":"Gemini","href":"/models/google"},{"title":"Groq","href":"/models/groq"},{"title":"HuggingFace","href":"/models/huggingface"},{"title":"IBM WatsonX","href":"/models/ibm-watsonx"},{"title":"LangDB","href":"/models/langdb"},{"group":"LiteLLM","pages":[{"title":"LiteLLM","href":"/models/litellm"},{"title":"LiteLLM OpenAI","href":"/models/litellm_openai"}]},{"title":"LM Studio","href":"/models/lmstudio"},{"title":"Meta","href":"/models/meta"},{"title":"Mistral","href":"/models/mistral"},{"title":"Nvidia","href":"/models/nvidia"},{"title":"Nebius","href":"/models/nebius"},{"title":"Ollama","href":"/models/ollama"},{"title":"OpenAI","href":"/models/openai"},{"title":"OpenAI Responses","href":"/models/openai-responses"},{"title":"OpenRouter","href":"/models/openrouter"},{"title":"Perplexity","href":"/models/perplexity"},{"title":"Portkey","href":"/models/portkey"},{"title":"Sambanova","href":"/models/sambanova"},{"title":"Together","href":"/models/together"},{"title":"Vercel v0","href":"/models/vercel"},{"title":"vLLM","href":"/models/vllm"},{"title":"xAI","href":"/models/xai"}]},{"group":"Tools","pages":[{"title":"What are Tools?","sidebarTitle":"Overview","href":"/tools/introduction"},{"title":"Writing your own tools","href":"/tools/tool-decorator"},{"title":"Exceptions","href":"/tools/exceptions"},{"title":"Hooks","href":"/tools/hooks"},{"title":"Human in the loop","href":"/tools/hitl"},{"group":"Toolkits","pages":[{"title":"Toolkit Index","href":"/tools/toolkits/toolkits"},{"group":"Search","pages":[{"title":"Arxiv","href":"/tools/toolkits/search/arxiv"},{"title":"BaiduSearch","sidebarTitle":"BaiduSearch","href":"/tools/toolkits/search/baidusearch"},{"title":"DuckDuckGo","sidebarTitle":"DuckDuckGo","href":"/tools/toolkits/search/duckduckgo"},{"title":"Exa","href":"/tools/toolkits/search/exa"},{"title":"Google Search","href":"/tools/toolkits/search/googlesearch"},{"title":"Hacker News","href":"/tools/toolkits/search/hackernews"},{"title":"Linkup","href":"/tools/toolkits/search/linkup"},{"title":"Pubmed","href":"/tools/toolkits/search/pubmed"},{"title":"Searxng","href":"/tools/toolkits/search/searxng"},{"title":"Serpapi","href":"/tools/toolkits/search/serpapi"},{"title":"Serper","href":"/tools/toolkits/search/serper"},{"title":"Tavily","href":"/tools/toolkits/search/tavily"},{"title":"Wikipedia","href":"/tools/toolkits/search/wikipedia"},{"title":"Brave Search","href":"/tools/toolkits/search/bravesearch"}]},{"group":"Social","pages":[{"title":"Discord","href":"/tools/toolkits/social/discord"},{"title":"Email","href":"/tools/toolkits/social/email"},{"title":"Gmail","sidebarTitle":"Gmail","href":"/tools/toolkits/social/gmail"},{"title":"Slack","href":"/tools/toolkits/social/slack"},{"title":"Telegram","href":"/tools/toolkits/social/telegram"},{"title":"Twilio","href":"/tools/toolkits/social/twilio"},{"title":"Webex","href":"/tools/toolkits/social/webex"},{"title":"WhatsApp","href":"/tools/toolkits/social/whatsapp"},{"title":"X (Twitter)","href":"/tools/toolkits/social/x"},{"title":"Zoom","sidebarTitle":"Zoom","href":"/tools/toolkits/social/zoom"}]},{"group":"Web Scraping","pages":[{"title":"AgentQL","href":"/tools/toolkits/web_scrape/agentql"},{"title":"Browserbase","href":"/tools/toolkits/web_scrape/browserbase"},{"title":"Crawl4AI","href":"/tools/toolkits/web_scrape/crawl4ai"},{"title":"Firecrawl","href":"/tools/toolkits/web_scrape/firecrawl"},{"title":"Jina Reader","href":"/tools/toolkits/web_scrape/jina_reader"},{"title":"Newspaper","href":"/tools/toolkits/web_scrape/newspaper"},{"title":"Newspaper4k","href":"/tools/toolkits/web_scrape/newspaper4k"},{"title":"Spider","href":"/tools/toolkits/web_scrape/spider"},{"title":"Website Tools","href":"/tools/toolkits/web_scrape/website"},{"title":"ScrapeGraph","href":"/tools/toolkits/web_scrape/scrapegraph"},{"title":"Oxylabs","href":"/tools/toolkits/web_scrape/oxylabs"},{"title":"BrightData","href":"/tools/toolkits/web_scrape/brightdata"}]},{"group":"Data","pages":[{"title":"CSV","href":"/tools/toolkits/database/csv"},{"title":"DuckDb","href":"/tools/toolkits/database/duckdb"},{"title":"Mem0","href":"/tools/toolkits/database/mem0"},{"title":"Memori","href":"/tools/toolkits/database/memori"},{"title":"Pandas","href":"/tools/toolkits/database/pandas"},{"title":"Postgres","href":"/tools/toolkits/database/postgres"},{"title":"SQL","href":"/tools/toolkits/database/sql"},{"title":"Zep","href":"/tools/toolkits/database/zep"}]},{"group":"Local","pages":[{"title":"Calculator","href":"/tools/toolkits/local/calculator"},{"title":"Docker","href":"/tools/toolkits/local/docker"},{"title":"File","href":"/tools/toolkits/local/file"},{"title":"Python","sidebarTitle":"Python","href":"/tools/toolkits/local/python"},{"title":"Shell","href":"/tools/toolkits/local/shell"},{"title":"Sleep","href":"/tools/toolkits/local/sleep"}]},{"group":"Models","pages":[{"title":"OpenAI","sidebarTitle":"OpenAI","href":"/tools/toolkits/models/openai"},{"title":"Gemini","sidebarTitle":"Gemini","href":"/tools/toolkits/models/gemini"},{"title":"Groq","sidebarTitle":"Groq","href":"/tools/toolkits/models/groq"}]},{"group":"Additional Toolkits","pages":[{"title":"Airflow","href":"/tools/toolkits/others/airflow"},{"title":"Apify","href":"/tools/toolkits/others/apify"},{"title":"AWS Lambda","href":"/tools/toolkits/others/aws_lambda"},{"title":"AWS SES","href":"/tools/toolkits/others/aws_ses"},{"title":"Cal.com","href":"/tools/toolkits/others/calcom"},{"title":"Cartesia","href":"/tools/toolkits/others/cartesia"},{"title":"Composio","href":"/tools/toolkits/others/composio"},{"title":"Confluence","href":"/tools/toolkits/others/confluence"},{"title":"Custom API","href":"/tools/toolkits/others/custom_api"},{"title":"Dalle","href":"/tools/toolkits/others/dalle"},{"title":"Daytona","href":"/tools/toolkits/others/daytona"},{"title":"Eleven Labs","href":"/tools/toolkits/others/eleven_labs"},{"title":"E2B","href":"/tools/toolkits/others/e2b"},{"title":"Fal","href":"/tools/toolkits/others/fal"},{"title":"Financial Datasets API","href":"/tools/toolkits/others/financial_datasets"},{"title":"Giphy","href":"/tools/toolkits/others/giphy"},{"title":"Github","href":"/tools/toolkits/others/github"},{"title":"Google Maps","href":"/tools/toolkits/others/google_maps"},{"title":"Google Calendar","sidebarTitle":"Google Calendar","href":"/tools/toolkits/others/googlecalendar"},{"title":"Google Sheets","href":"/tools/toolkits/others/google_sheets"},{"title":"Jira","href":"/tools/toolkits/others/jira"},{"title":"Linear","href":"/tools/toolkits/others/linear"},{"title":"Lumalabs","href":"/tools/toolkits/others/lumalabs"},{"title":"MLX Transcribe","href":"/tools/toolkits/others/mlx_transcribe"},{"title":"ModelsLabs","href":"/tools/toolkits/others/models_labs"},{"title":"OpenBB","href":"/tools/toolkits/others/openbb"},{"title":"OpenWeather","href":"/tools/toolkits/others/openweather"},{"title":"Replicate","href":"/tools/toolkits/others/replicate"},{"title":"Resend","href":"/tools/toolkits/others/resend"},{"title":"Todoist","href":"/tools/toolkits/others/todoist"},{"title":"Youtube","href":"/tools/toolkits/others/youtube"},{"title":"Zendesk","href":"/tools/toolkits/others/zendesk"},{"title":"Trello","href":"/tools/toolkits/others/trello"},{"title":"Web Browser Tools","href":"/tools/toolkits/others/web-browser"},{"title":"MoviePy Video Tools","href":"/tools/toolkits/others/moviepy"}]}]},{"group":"MCP","pages":[{"title":"Model Context Protocol (MCP)","sidebarTitle":"Overview","href":"/tools/mcp/mcp"},{"group":"Transports","pages":[{"title":"Stdio Transport","sidebarTitle":"stdio","href":"/tools/mcp/transports/stdio"},{"title":"SSE Transport","sidebarTitle":"SSE","href":"/tools/mcp/transports/sse"},{"title":"Streamable HTTP Transport","sidebarTitle":"Streamable HTTP","href":"/tools/mcp/transports/streamable_http"}]},{"title":"Advanced MCP Usage","sidebarTitle":"Advanced Usage","href":"/tools/mcp/advanced_usage"}]},{"group":"Reasoning Tools","pages":[{"title":"Reasoning Tools","sidebarTitle":"Reasoning Tools","href":"/tools/reasoning_tools/reasoning-tools"},{"title":"Thinking Tools","sidebarTitle":"Thinking Tools","href":"/tools/reasoning_tools/thinking-tools"},{"title":"Knowledge Tools","sidebarTitle":"Knowledge Tools","href":"/tools/reasoning_tools/knowledge-tools"}]},{"title":"Writing your own Toolkit","href":"/tools/custom-toolkits"},{"title":"Selecting tools","href":"/tools/selecting-tools"},{"title":"Updating Tools","href":"/tools/attaching-tools"},{"title":"Async Tools","href":"/tools/async-tools"},{"title":"Tool Result Caching","href":"/tools/caching"},{"title":"Tool Call Limit","href":"/tools/tool_call_limit"}]},{"group":"Reasoning","pages":[{"title":"What is Reasoning?","sidebarTitle":"Overview","href":"/reasoning/introduction"},{"title":"Reasoning Models","href":"/reasoning/reasoning-models"},{"title":"Reasoning Tools","href":"/reasoning/reasoning-tools"},{"title":"Reasoning Agents","href":"/reasoning/reasoning-agents"}]},{"group":"Memory","pages":[{"title":"What is Memory?","sidebarTitle":"Overview","href":"/memory/introduction"},{"title":"User Memories","href":"/memory/memory"},{"title":"Memory Storage","href":"/memory/storage"}]},{"group":"Knowledge","pages":[{"title":"What is Knowledge?","sidebarTitle":"Overview","href":"/knowledge/introduction"},{"title":"Agentic Search","href":"/knowledge/search"},{"title":"Hybrid Search- Combining Keyword and Vector Search","href":"/knowledge/hybrid_search"},{"group":"Knowledge Filters","pages":[{"title":null,"href":"/filters/introduction"},{"title":null,"href":"/filters/manual-filters"},{"title":null,"href":"/filters/agentic-filters"}]},{"title":"Implementing a Custom Retriever","sidebarTitle":"Custom Retriever","href":"/knowledge/custom_retriever"},{"title":"ArXiv Knowledge Base","sidebarTitle":"ArXiv","href":"/knowledge/arxiv"},{"title":"Combined Knowledge Base","sidebarTitle":"Combined","href":"/knowledge/combined"},{"title":"CSV Knowledge Base","sidebarTitle":"CSV","href":"/knowledge/csv"},{"title":"CSV URL Knowledge Base","sidebarTitle":"CSV URLs","href":"/knowledge/csv-url"},{"title":"Docx Knowledge Base","sidebarTitle":"Docx","href":"/knowledge/docx"},{"title":"Document Knowledge Base","sidebarTitle":"Document","href":"/knowledge/document"},{"title":"JSON Knowledge Base","sidebarTitle":"JSON","href":"/knowledge/json"},{"title":"LangChain Knowledge Base","sidebarTitle":"LangChain","href":"/knowledge/langchain"},{"title":"LightRAG Knowledge Base","sidebarTitle":"LightRAG","href":"/knowledge/lightrag"},{"title":"LlamaIndex Knowledge Base","sidebarTitle":"LlamaIndex","href":"/knowledge/llamaindex"},{"title":"Markdown Knowledge Base","sidebarTitle":"Markdown","href":"/knowledge/markdown"},{"title":"PDF Knowledge Base","sidebarTitle":"PDF","href":"/knowledge/pdf"},{"title":"PDF URL Knowledge Base","sidebarTitle":"PDF URLs","href":"/knowledge/pdf-url"},{"title":"PDF Bytes Knowledge Base","sidebarTitle":"PDF Bytes","href":"/knowledge/pdf-bytes"},{"title":"S3 PDF Knowledge Base","sidebarTitle":"S3 PDF","href":"/knowledge/s3_pdf"},{"title":"S3 Text Knowledge Base","sidebarTitle":"S3 Text","href":"/knowledge/s3_text"},{"title":"Text Knowledge Base","sidebarTitle":"Text","href":"/knowledge/text"},{"title":"Website Knowledge Base","sidebarTitle":"Website","href":"/knowledge/website"},{"title":"Wikipedia KnowledgeBase","sidebarTitle":"Wikipedia","href":"/knowledge/wikipedia"},{"title":"Youtube KnowledgeBase","sidebarTitle":"Youtube","href":"/knowledge/youtube"}]},{"group":"Chunking","pages":[{"title":"Fixed Size Chunking","href":"/chunking/fixed-size-chunking"},{"title":"Agentic Chunking","href":"/chunking/agentic-chunking"},{"title":"Semantic Chunking","href":"/chunking/semantic-chunking"},{"title":"Recursive Chunking","href":"/chunking/recursive-chunking"},{"title":"Document Chunking","href":"/chunking/document-chunking"}]},{"group":"Vector DBs","pages":[{"title":"What are Vector Databases?","sidebarTitle":"Overview","href":"/vectordb/introduction"},{"title":"Cassandra Agent Knowledge","sidebarTitle":"Cassandra","href":"/vectordb/cassandra"},{"title":"ChromaDB Agent Knowledge","sidebarTitle":"ChromaDB","href":"/vectordb/chroma"},{"title":"Clickhouse Agent Knowledge","sidebarTitle":"Clickhouse","href":"/vectordb/clickhouse"},{"title":"Couchbase Agent Knowledge","sidebarTitle":"Couchbase","href":"/vectordb/couchbase"},{"title":"LanceDB Agent Knowledge","sidebarTitle":"LanceDB","href":"/vectordb/lancedb"},{"title":"Milvus Agent Knowledge","sidebarTitle":"Milvus","href":"/vectordb/milvus"},{"title":"MongoDB Agent Knowledge","sidebarTitle":"MongoDB","href":"/vectordb/mongodb"},{"title":"Azure Cosmos DB MongoDB vCore Agent Knowledge","sidebarTitle":"Azure Cosmos DB MongoDB vCore","href":"/vectordb/azure_cosmos_mongodb"},{"title":"PgVector Agent Knowledge","sidebarTitle":"PgVector","href":"/vectordb/pgvector"},{"title":"Pinecone Agent Knowledge","sidebarTitle":"Pinecone","href":"/vectordb/pinecone"},{"title":"Qdrant Agent Knowledge","sidebarTitle":"Qdrant","href":"/vectordb/qdrant"},{"title":"SingleStore Agent Knowledge","sidebarTitle":"SingleStore","href":"/vectordb/singlestore"},{"title":"SurrealDB Agent Knowledge","sidebarTitle":"SurrealDB","href":"/vectordb/surrealdb"},{"title":"Weaviate Agent Knowledge","sidebarTitle":"Weaviate","href":"/vectordb/weaviate"}]},{"group":"Storage","pages":[{"title":"What is Storage?","sidebarTitle":"Overview","href":"/storage/introduction"},{"title":"Postgres Storage","sidebarTitle":"Postgres","href":"/storage/postgres"},{"title":"Sqlite Storage","sidebarTitle":"Sqlite","href":"/storage/sqlite"},{"title":"In-Memory Storage","sidebarTitle":"In-Memory","href":"/storage/in-memory"},{"title":"DynamoDB Storage","sidebarTitle":"DynamoDB","href":"/storage/dynamodb"},{"title":"Redis Storage","sidebarTitle":"Redis","href":"/storage/redis"},{"title":"Mongo Storage","sidebarTitle":"MongoDB","href":"/storage/mongodb"},{"title":"MySQL Storage","sidebarTitle":"MySQL","href":"/storage/mysql"},{"title":"Singlestore Storage","sidebarTitle":"Singlestore","href":"/storage/singlestore"},{"title":"YAML Storage","sidebarTitle":"YAML","href":"/storage/yaml"},{"title":"JSON Storage","sidebarTitle":"JSON","href":"/storage/json"}]},{"group":"Embeddings","pages":[{"title":"What are Embedders?","sidebarTitle":"Overview","href":"/embedder/introduction"},{"title":"OpenAI Embedder","sidebarTitle":"OpenAI","href":"/embedder/openai"},{"title":"Gemini Embedder","sidebarTitle":"Gemini","href":"/embedder/gemini"},{"title":"Ollama Embedder","sidebarTitle":"Ollama","href":"/embedder/ollama"},{"title":"Azure OpenAI Embedder","sidebarTitle":"Azure OpenAI","href":"/embedder/azure_openai"},{"title":"Cohere Embedder","sidebarTitle":"Cohere","href":"/embedder/cohere"},{"title":"Fireworks Embedder","sidebarTitle":"Fireworks","href":"/embedder/fireworks"},{"title":"HuggingFace Embedder","sidebarTitle":"HuggingFace","href":"/embedder/huggingface"},{"title":"Mistral Embedder","sidebarTitle":"Mistral","href":"/embedder/mistral"},{"title":"Nebius Embedder","sidebarTitle":"Nebius","href":"/embedder/nebius"},{"title":"Qdrant FastEmbed Embedder","sidebarTitle":"FastEmbed","href":"/embedder/qdrant_fastembed"},{"title":"SentenceTransformers Embedder","sidebarTitle":"SentenceTransformers","href":"/embedder/sentencetransformers"},{"title":"Together Embedder","sidebarTitle":"Together","href":"/embedder/together"},{"title":"Voyage AI Embedder","sidebarTitle":"Voyage AI","href":"/embedder/voyageai"},{"title":"AWS Bedrock Embedder","sidebarTitle":"AWS Bedrock","href":"/embedder/aws_bedrock"},{"title":"Jina Embedder","sidebarTitle":"Jina","href":"/embedder/jina"}]},{"group":"Evals","pages":[{"title":"Simple Agent Evals","sidebarTitle":"Overview","href":"/evals/introduction"},{"title":"Evals on the Agno platform","sidebarTitle":"Platform","href":"/evals/platform"}]},{"group":"Workflows","pages":[{"title":"What are Workflows?","sidebarTitle":"Overview","description":null,"href":"/workflows/introduction"},{"title":"Workflow State","href":"/workflows/state"},{"title":"Advanced","description":null,"href":"/workflows/advanced"}]},{"group":"Workflows v2 (Beta)","pages":[{"title":"What are Workflows?","sidebarTitle":"Overview","href":"/workflows_2/overview"},{"title":"Workflows Development Guide","sidebarTitle":"Development Guide","href":"/workflows_2/types_of_workflows"},{"title":"Running your Workflow","href":"/workflows_2/run_workflow"},{"title":"How does shared state work between workflows, teams and agents?","sidebarTitle":"Workflow Session State","href":"/workflows_2/workflow_session_state"},{"title":"Advanced Concepts in Workflows","sidebarTitle":"Advanced","href":"/workflows_2/advanced"},{"title":"Migrating to Workflows 2.0","sidebarTitle":"Migrating to Workflows 2.0","href":"/workflows_2/migration"}]},{"group":"Applications","pages":[{"title":"Playground App","href":"/applications/playground/introduction"},{"title":"FastAPI App","href":"/applications/fastapi/introduction"},{"title":"Whatsapp App","href":"/applications/whatsapp/introduction"},{"title":"AG-UI App","href":"/applications/ag-ui/introduction"},{"title":"Slack App","href":"/applications/slack/introduction"},{"title":"Discord Bot","href":"/applications/discord/introduction"}]}]},{"group":"Other","pages":[{"group":"Agent UI","pages":[{"title":"A beautiful UI for your Agents","sidebarTitle":"Getting Started","href":"/agent-ui/introduction"}]},{"group":"Agent API","pages":[{"title":"Agent API","sidebarTitle":"Getting Started","href":"/agent-api/introduction"}]},{"group":"Observability","pages":[{"title":"OpenTelemetry","sidebarTitle":"Overview","href":"/observability/introduction"},{"title":"AgentOps","href":"/observability/agentops"},{"title":"Arize","href":"/observability/arize"},{"title":"Atla","href":"/observability/atla"},{"title":"LangDB","href":"/observability/langdb"},{"title":"Langfuse","href":"/observability/langfuse"},{"title":"MLflow","href":"/observability/mlflow"},{"title":"LangWatch","href":"/observability/langwatch"},{"title":"LangSmith","href":"/observability/langsmith"},{"title":"Langtrace","href":"/observability/langtrace"},{"title":"Weave","href":"/observability/weave"}]},{"group":"Testing","pages":[{"title":"Scenario Testing","href":"/testing/scenario-testing"}]}]},{"group":"How to","pages":[{"title":"Install \u0026 Setup","href":"/how-to/install"},{"title":"Contributing to Agno","href":"/how-to/contribute"},{"title":"Migrate from Phidata to Agno","href":"/how-to/phidata-to-agno"},{"title":"Authenticate with Agno Platform","href":"/how-to/authentication"}]}]},{"tab":"Examples","pages":[{"title":"Examples","href":"/examples/introduction"}]},{"tab":"Workspaces","pages":[{"title":"Workspaces","href":"/workspaces/introduction"}]},{"tab":"FAQs","pages":[{"title":"FAQs","href":"/faq/environment-variables"}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/reference/agents/agent"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]}]},"basePath":"","title":"Workflow State - Agno","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["10e4515597"],"chunks":["BannerMarkdown-CXEEkV6J.js","dist-lvhuD9Du.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-D1Z-ELXV.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}