Repository navigation
Project Think roadmap: durable agent platform preview to stable developer experience #1439
Description
Project Think shipped the first preview of the next-generation Agents SDK harness: durable chat execution, Session-backed memory, sub-agent orchestration, workspace tools, codemode execution, extensions, and the beginnings of a full execution ladder.
The initial Think parity roadmap is mostly complete. This umbrella tracks the next phase: turning the preview into a coherent, stable developer experience, with clear docs, examples, integration stories, and focused hardening.
This issue is intentionally a hub. Child issues should be small and independently reviewable.
Product goal
Make Think the default path for building durable, serverless agents that can think, act, persist, fork, and hand work off across Cloudflare infrastructure.
Success means a new contributor can answer, from this issue and its children:
- What has already shipped?
- What blocks a stable preview / eventual 1.0-quality experience?
- Which issue or PR owns each remaining piece of work?
Track 1: Core Think reliability and turn semantics
- apply recovery to Think.chat() #1429: Apply recovery to
Think.chat()so sub-agent/RPC chat turns get the same durable recovery story as normal chat turns. - Chained turns: pattern + helper for multi-phase auto-continuation #1386: Design chained turns / multi-phase continuation for long coding and research tasks without persisting synthetic user messages.
- Think + external LLM providers broken: Zod v4 tool schemas produce empty JSON Schema #1322: Re-triage external provider + Zod schema compatibility against current dependency versions.
- think: lifecycle hook follow-ups (from #1340) — remaining items #1343: Finish lifecycle hook polish/tests. Treat as hardening, not a launch blocker.
- Document
chatRecovery/onChatRecoveryconsistently across Think docs, durable execution docs, and server-driven message docs.
Track 2: Multi-session and app/product shape
Current direction: one Think child Durable Object per conversation, with a parent Durable Object owning directory/sidebar state and shared user-level resources. This matches the examples/assistant direction and answers most of #1349.
- Write
docs/think/multi-chat.mdfor the parent/child multi-chat pattern. (docs(think): multi-chat guide and refresh Think design docs #2409) - Decide whether
useChats()should move from example-local code intoagents/agents/react. - Decide whether a
Chatsbase class is worth promoting, or whether the pattern should stay documented with examples for now. - Document the shared-resource boundary from
examples/assistant: shared workspace + shared MCP, but per-chat messages, memory, extensions, and branch history. - Measure / document parent DO scale limits for shared workspace and shared MCP fan-out.
- Decide whether Think: Is "one agent, many concurrent chat sessions" supposed to work as a product model in Think? #1349 can be closed after the docs and example guidance are clear.
Track 3: React/client package boundary
Think currently relies on @cloudflare/ai-chat/react for shared chat UI behavior, even though much of the protocol/runtime substrate has moved into agents/chat.
- Hoist shared React chat primitives from
@cloudflare/ai-chat/reactintoagentsoragents/react, with compatibility re-exports. - Address Think-native initial message behavior so Think can avoid the redundant HTTP
get-messagesfetch / Suspense flash when WebSocket history is already authoritative. - Link and triage related client backlog: Support non-suspending hook + exportable fetch function for framework loaders #1011, Support fallbackMessages for instant conversation switching #1045, useAgentChat can throw "Maximum update depth exceeded" during dense streamed tool-input-delta bursts #1361, Replace client-defined tool round-trips with server-side RPC delegation #1414, Support client-side tools in headless AIChatAgent agent-tool runs #1420.
- Keep Replace client-defined tool round-trips with server-side RPC delegation #1414 as discussion for now. Client-tool RPC delegation is interesting but likely too invasive for the immediate roadmap.
Track 4: Execution ladder and tools
Think should remain useful at Tier 0 with only the workspace tools. Each higher tier should be additive and explicitly configured.
- Land/review Add multimodal workspace read support #1435 as the concrete fix for Think: workspace read should support multimodal file/image content #1403 multimodal workspace reads.
- Decide whether Memory: support multimodal content (files, images, audio, artifacts) #1392 multimodal memory is a separate Session/memory track after Add multimodal workspace read support #1435 lands.
- think: make createSandboxTools actually work #1319: Make
createSandboxToolsactually work, or clearly mark the export as a placeholder until Sandbox integration is ready. - think: add a fetch tool with whitelisted domains #1344: Design a whitelisted fetch tool that fits Think's capability model.
- Track browser/tooling follow-ups such as browser: allow for tool executions on a single instance #1398 and browser side rpc #1401.
- Track MCP ergonomics and compact-tool-surface work: addMcpServer({ autoRegister: false }) — let consumers suppress MCP tool auto-merge to enable compact / search+execute patterns #1336, addMcpServer: default callback URL silently breaks when callers don't set
callbackPath+sendIdentityOnConnect: true#1378, MCP streamable-HTTP transport: large JSON-RPC payloads (>16 KB) fail with TLS record_overflow due to header-encoding #1433, Fix large MCP streamable HTTP payloads #1434.
Track 4a: Think + Artifacts integration
Artifacts looks like the missing versioned handoff layer for Think workspaces and sessions: one repo per agent/session/task, forkable history, Git-compatible tooling, and short-lived repo-scoped tokens.
Start with focused child issue #1440: Think + Artifacts: versioned workspaces, forks, and handoff.
Track 5: Examples, apps, and docs polish
Think needs one clear reference path for developers, plus smaller docs/examples that explain each capability without requiring readers to reverse-engineer the kitchen-sink app.
- Use
examples/assistantas the primary Think reference app and document which pieces are canonical versus app-specific. - Decide what to do with draft PR feat: think-cli + think-server — remote coding agent #1135 (
think-cli/think-server): revive as an app track, split into smaller issues, or close/supersede. - Add / update Think docs for missing multi-chat guidance, peer dependency wording, Think vs
AIChatAgent, hooks, client tools, recovery, and execution-ladder limitations. - Keep
examples/multi-ai-chatpositioned as a lower-level Agents/chat example unless it is intentionally upgraded to Think.
Track 6: Documentation and design hygiene
Several design and WIP docs still describe pre-Session or pre-shared-chat-layer assumptions. This is not all launch-blocking, but stale docs make it hard for humans and agents to pick up roadmap work safely.
- Refresh canonical Think design docs:
design/think.md,design/think-roadmap.md, anddesign/think-sessions.md. (think.mdandthink-roadmap.mddone in docs(think): multi-chat guide and refresh Think design docs #2409;think-sessions.mdstill to do) - Update shared chat design docs whose status now conflicts with shipped code:
design/chat-shared-layer.md,design/chat-improvements.md, anddesign/think-vs-aichat.md. - Add Think cross-links from adjacent docs:
sessions.md,durable-execution.md,long-running-agents.md,server-driven-messages.md,workspace.md,codemode.md,browse-the-web.md,mcp-client.md,client-sdk.md,workflows.md, andobservability.md. - Fold still-relevant WIP notes into permanent docs/design, especially
wip/think-multi-session-assistant-plan.mdandwip/inline-sub-agent-events.md; mark the rest historical or remove when safe.
Track 7: Experimental learnings and promotion candidates
The experimental folder has useful prior art, but it should inform Think deliberately instead of becoming hidden roadmap scope.
- Evaluate
experimental/session-skillsas a possible Think + Session skills reference app. - Decide whether Session experiments (
session-memory,session-search,session-multichat) need Think-first variants or should remain lower-level Agent + Session examples. - Pull durability lessons from
forever-chat,forever-fibers, andinference-bufferinto the Think recovery track without making AI Gateway buffering a Think blocker. - Use
gadgets-*experiments as background for facets/sub-agent safety, without blocking Think’s stable preview on experimental loader/gatekeeper work. - Update
experimental/README.mdso useful prior art is discoverable.
Flagship Project Ideas
These are aspirational apps that should guide Think’s product direction. They are not stability blockers, but they should pressure-test the SDK, docs, examples, and integration story.
- Personal assistant / life OS: A long-lived assistant modeled after OpenClaw, with memory, calendar/email/tasks, browser use, documents, reminders, and human approval for sensitive actions.
- Coding agent: A durable coding agent with workspace, Artifacts/Git, Sandbox, Browser Run, tests, PR creation, code review, and recoverable long-running tasks.
- SMB operating hub: A hub for managing a small business: inbox triage, customer follow-up, invoices, bookings, inventory, support, website updates, marketing drafts, and analytics.
- Research analyst: A research workspace with browser crawling, citations, source snapshots, knowledge base, report generation, and follow-up monitoring.
- Customer support copilot: A persistent assistant per customer/account that knows past tickets, product usage, docs, changelogs, and can draft responses or run diagnostic workflows.
- Agentic browser QA lab: A Browser Run powered QA agent that explores app flows, records sessions, finds regressions, captures screenshots, and files issues.
Stable preview hardening batch (Sep 2026)
Landing these, then cutting a release, is the bar for calling Think a stable preview.
Existing fix PRs (being updated with main):
- fix(agents): initialize cold native RPC calls #2005: run lifecycle startup before native RPC on a cold instance (Agent/Think: an RPC-triggered cold start serves calls against uninitialised state, causing errors and incorrect responses #1990)
- fix(chat): reconcile reused tool-call IDs one-to-one #2040: reconcile reused tool-call IDs one-to-one (Reused tool-call IDs can overwrite assistant messages during reconciliation #1992)
- Fix/1984 synthetic compaction #2036: never persist synthetic compaction messages (bug: synthetic compaction messages are persisted as real rows, duplicating the summary in every later read #1984)
- fix(think): arm declared scheduled tasks on the root agent only #2056: arm declared scheduled tasks on the root agent only (Declared
scheduledTasksare armed on every sub-agent/facet, not just the root — N× duplicate execution #1877) - fix: #2013 - correctly invoke controller.error during mid-stream closure and update tests accordingly #2019: a socket close mid-stream is an error, not a completed answer (Socket close mid-stream is treated as a completed response #2013)
- fix(agents): preserve optimistic send dropped on reconnect (#1983) #2039: keep an optimistic send across a reconnect snapshot (useAgentChat: cf_agent_chat_messages handler replaces the message array wholesale, dropping client-buffered sends on reconnect #1983)
- fix(agents): stop deleteSubAgent from being reversed by a stale sub-agent socket #2024:
deleteSubAgentsticks while a client is still connected (deleteSubAgent doesn't stick while a client is still connected #2003) - test(agents): regression tests for nested sub-agent WebSockets (#2026) #2096: nested facet WebSockets route without recursing (Nested facet WebSocket routes recurse until the facet depth limit is exceeded #2026)
New fixes:
- Think regeneration includes the previous response in the model prompt #2028: regenerate from the parent user message instead of continuing (fix(think): regenerate answers the parent user message instead of continuing (#2028) #2413)
- think: telegramMessenger can't enable native draft streaming (@chat-adapter/telegram >= 4.38 made it opt-in) #2397:
telegramMessengernativeStreamingoption (fix(think): telegramMessenger nativeStreaming option (#2397) #2414)
Docs:
- docs(think): multi-chat guide and refresh Think design docs #2409:
docs/think/multi-chat.mdand a refresh of the Think design docs (Track 2 / Track 6)
Release:
- Version Packages (Version Packages #2335): not merging yet (held by maintainer)

Activity
threepointone commentedon May 1, 2026
Opened the Artifacts child issue: #1440
This covers the versioned workspace/session handoff story: one repo per Think session/task, forkable chat state, Git notes/metadata, and Sandbox/ArtifactFS handoff. It should start as an additive integration around Think's DO-local Workspace rather than replacing Workspace itself.
docs(think): multi-chat guide and refresh Think design docs (#2409)