Google released the Genkit Agents API in public preview for TypeScript and Go, packaging message history, tool execution loops, streaming, and state persistence behind a single chat() interface, InfoQ reported. Python and Dart support is planned. The framework is fully open-source and supports deployment to Firebase, Cloud Run, or any Node.js/Go environment.
One Abstraction, Multiple Modes
Genkit’s design principle is a single abstraction that scales without swapping primitives. The same agent object handles a one-shot reply, a streamed multi-turn conversation, a paused tool call waiting for human approval, and a detached long-running task. Teams do not need to reach for a different framework component as a feature grows from a chatbot to a multi-agent workflow.
The framework separates two kinds of agent data that most frameworks conflate: custom state (typed application data like workflow status, task lists, or selected entities) and artifacts (generated outputs like reports, code patches, or travel itineraries that users can inspect, download, or version independently). Tools update either one through the active session, and Genkit streams changes to the client as they happen.
Detached Turns
The standout production feature is detached turns. A client can start an agent task, disconnect entirely, and poll for results later. The agent continues working server-side, writing progress to snapshots that any client can read:
const chat = reportAgent.chat({ sessionId: 'report-123' });
const task = await chat.detach('Write the quarterly market report.');
for await (const snapshot of task.poll({ intervalMs: 1000 })) {
renderStatus(snapshot.status);
if (snapshot.status === 'completed') renderMessages(snapshot.state.messages);
}
This solves a persistent production problem: long research jobs, multi-step planning, and tool-heavy workflows that previously required WebSockets, separate job queues, or held-open connections. The agent keeps running regardless of client state.
Human-in-the-Loop with Anti-Forgery
Interruptible tools provide human-in-the-loop control with anti-forgery protection, according to InfoQ. When a tool is marked as interruptible, the agent pauses mid-execution, returns the pending action to the client, and resumes only after the user approves or rejects. The runtime validates the resume payload against session history, preventing a tool from being tricked into running with forged input.
State Persistence
State persistence follows two paths. With a session store configured (Firestore for production, in-memory for development, file-based for local testing, or custom implementations via a pluggable interface), the agent is server-managed: messages, custom state, and artifacts persist as snapshots, and clients reconnect by session ID. Without a store, the agent is client-managed: the server returns full state and the client sends it back on each turn.
AI engineer Ebenezer Don highlighted the data residency angle of client-managed state: “This approach is ideal for ephemeral sessions or applications with strict data residency constraints where the server should not persist user data,” according to InfoQ. “The tradeoff is increased network payload size as the conversation grows.”
Framework Consolidation
Genkit enters a crowded field alongside LangChain, CrewAI, Mastra, Semantic Kernel, and AutoGen. Its differentiator is tight Firebase and Cloud Run integration, plus the full-stack approach that contrasts with the modular, stitched-together architectures of open-source alternatives. Google is betting that the future of agent development is full-stack platforms, not framework assembly.