10xGraph vs Google ADK: Open-Source Alternative

In short10xGraph vs Google ADK compared with sources: API server, auth, thread isolation, replay-safe tools, sessions, and where ADK is the better pick.

  • 6 min read
  • 13 sections
  • Updated
  • v0.9.2
  • Markdown

This page is written by the 10xGraph team, so read it with that in mind. Claims about ADK link to its documentation or package metadata, checked on 2026-10-06.

Google Agent Development Kit (ADK) is an Apache-2.0 licensed, code-first framework for building, evaluating and deploying agents (PyPI). It has Python, TypeScript, Java and Go variants, an adk api_server command and several deployment paths (API server docs, deployment docs). 10xGraph is a graph runtime that also generates a secured production server, in the open-source install, under the MIT license.

Production layer compared

The first rows are where the two differ most. Orchestration basics are at the bottom.

Item 10xGraph Google ADK
Production server (REST, SSE, WebSocket) in the open-source install Yes. 10xgraph api generates REST, SSE, WebSocket and realtime-audio endpoints from the compiled graph Yes, REST and SSE. adk api_server exposes session endpoints and /run and /run_sse (API server docs)
Auth (JWT or custom) JWT ("auth": "jwt") or a custom BaseAuth subclass Not documented on the API server page (API server docs)
Authorization Role scopes (such as graph:invoke, checkpointer:read) or a custom AuthorizationBackend Not documented
Thread ownership isolation Built-in "authorization": "ownership" backend, with a two-tier cached owner check Not documented
Rate limiting Memory or Redis sliding-window limits on the API, set in 10xgraph.json Not documented
Replay-safe tool calls after a crash Tool ledger in the checkpointer: a tool that already ran is not executed again on resume. Needs a checkpointer Not documented
Versioned (compare-and-swap) state writes Optimistic version check on durable writes in PgCheckpointer DatabaseSessionService uses in-process locking, and row-level locking on PostgreSQL and MySQL, to prevent races (sessions docs)
Node and tool timeouts node_timeout and tool_timeout, with defaults of 900 s and 300 s Not documented
Docker Compose and Kubernetes manifests 10xgraph build --docker-compose --k8s writes Dockerfile, docker-compose.yml, k8s.yaml Documented deployment targets are Agent Runtime, Cloud Run, GKE and any container host (deployment docs)
License MIT, including API/CLI and client Apache-2.0 (PyPI)
TypeScript Typed 10xgraph-client for the 10xGraph API ADK for TypeScript, an agent framework for Node.js and browsers, Apache-2.0 (adk-js). It is a framework, not a client for a Python server
Model providers OpenAI, Anthropic (direct, Vertex AI, Bedrock), Google (Gemini, Vertex AI), OpenAI-compatible endpoints Gemini first-party, plus OpenAI, Anthropic and others through LiteLLM (LiteLLM docs)
Orchestration Typed StateGraph with conditional edges and sub-graphs SequentialAgent, ParallelAgent and LoopAgent workflow agents (workflow agents docs)
Sessions and persistence InMemoryCheckpointer, PgCheckpointer (Postgres plus Redis), SQLite, keyed by thread_id InMemorySessionService, VertexAiSessionService, DatabaseSessionService for PostgreSQL, MySQL and SQLite (sessions docs)
Python version 3.12 or newer 3.10 or newer (PyPI)

Why teams choose 10xGraph over ADK

  1. Auth and isolation are generated. The adk api_server page documents session and run endpoints but no authentication (API server docs). 10xGraph’s production template turns on JWT auth, owner-only threads and a Redis rate limit in 10xgraph.json.
  2. Side effects survive crashes. 10xGraph’s tool ledger skips tools that already ran when a run resumes. See replay-safe tools.
  3. Compare-and-swap on durable writes. PgCheckpointer checks a state version on write and guards the Redis cache write by version, so a stale run cannot overwrite a newer one.
  4. Deploy files for two targets. 10xgraph build --docker-compose --k8s writes the files you would otherwise write by hand.

A support agent in 10xGraph on Gemini

graph/agent.py
from tenxgraph.prebuilt.agent import ReactAgent
from tenxgraph.storage.checkpointer import InMemoryCheckpointer


def lookup_order(order_id: str) -> dict:
    """Return status and total for an order."""
    return {"order_id": order_id, "status": "delivered", "total": 59.0}


def refund_order(order_id: str, amount: float) -> str:
    """Refund part or all of an order."""
    return f"Refunded {amount} on {order_id}"


agent = ReactAgent(
    model="google/gemini-2.5-flash",  # add use_vertex_ai=True to route through Vertex AI
    provider="google",
    system_prompt=[{"role": "system", "content": "You are a support agent. Confirm the order before refunding."}],
    tools=[lookup_order, refund_order],
)

app = agent.compile(checkpointer=InMemoryCheckpointer())

The model string selects the provider, so the same graph and tools can run on another provider by changing the string and installing its extra. See the Google provider docs for Vertex AI configuration. For the ADK version, see ADK’s documentation.

Workflow patterns

ADK’s workflow agents run sub-agents in sequence, in parallel or in a loop (docs). The 10xGraph equivalents use graph primitives:

ADK pattern 10xGraph equivalent
SequentialAgent add_edge("A", "B"); add_edge("B", "C")
ParallelAgent Two nodes that both write to state, joined by a fan-in node
LoopAgent A self-looping node plus recursion_limit in the invoke config
Sub-agents and transfer Router node plus create_handoff_tool

Sessions and threads

ADK keys conversations by session. 10xGraph keys them by thread_id with a checkpointer:

Python
from tenxgraph.core.state import Message
from tenxgraph.storage.checkpointer import PgCheckpointer

checkpointer = PgCheckpointer(
    postgres_dsn="postgresql://user:password@localhost:5432/agents",
    redis_url="redis://localhost:6379/0",
)
checkpointer.setup()

app = agent.compile(checkpointer=checkpointer)
app.invoke(
    {"messages": [Message.text_message("Where is my refund for order A-1042?")]},
    config={"thread_id": "user-42"},
)

Serving as an API

Terminal
pip install 10xgraph 10xgraph-api google-genai
10xgraph init --yes --template production --auth jwt --rate-limit redis
10xgraph api --host 0.0.0.0 --port 8000
10xgraph build --docker-compose --k8s

Endpoints include POST /v1/graph/invoke, POST /v1/graph/stream (SSE), a WebSocket endpoint and thread state endpoints. The server is a container you can run on Cloud Run, GKE or any other host.

TypeScript client

TypeScript
import { AgentFlowClient, Message, StreamEventType, bearerAuth } from "10xgraph-client";

const client = new AgentFlowClient({
  baseUrl: "http://127.0.0.1:8000",
  auth: bearerAuth(token),
});

for await (const chunk of client.stream(
  [Message.text_message("Where is order A-1042?")],
  { config: { thread_id: "ts-stream-1" } },
)) {
  if (chunk.event === StreamEventType.MESSAGE && chunk.message) {
    process.stdout.write(chunk.message.text());
  }
}

Migrating from Google ADK

  1. LlmAgent(model=..., instruction=..., tools=[...]) becomes Agent(model="google/gemini-2.5-flash", system_prompt=[{"role": "system", "content": ...}], tool_node="TOOL"), or ReactAgent for a tool-calling loop.
  2. Tool functions go into ToolNode([fn]).
  3. SequentialAgent becomes a chain of add_edge calls, ParallelAgent becomes fan-out and fan-in nodes, and LoopAgent becomes a self-loop with recursion_limit.
  4. A session service becomes a checkpointer (PgCheckpointer, or InMemoryCheckpointer for development) plus thread_id in the config.
  5. Deployment becomes 10xgraph api or the generated container files. Keep the Google provider configuration and route it through Vertex AI with use_vertex_ai=True.

Where Google ADK is the better choice

  • You are invested in Google Cloud. ADK documents Agent Runtime, Cloud Run and GKE deployment, and a Vertex AI session service (deployment docs, sessions docs). 10xGraph has no managed Google runtime.
  • You want a managed agent runtime. Agent Runtime is a managed, auto-scaling service for ADK agents (deployment docs).
  • You want the same framework in several languages. ADK documents Python, TypeScript, Java and Go variants (API server docs). 10xGraph’s core is Python only.
  • You need Python 3.10 or 3.11. 10xGraph requires 3.12 or newer.

Weak spots of 10xGraph

  • Smaller community and fewer integrations.
  • Pre-1.0: pin versions and read changelogs before upgrading.
  • Renamed from Agentflow, so the 10xGraph name has little search history yet.
  • No Google-managed runtime or visual tooling. The playground is a test chat.
  • Code-first only, and Python 3.12 or newer.

Sources

Verified on 2026-10-06.

Next steps

Frequently asked questions

Does 10xGraph support Vertex AI as well as Google AI Studio?
Yes. The 10xGraph Google provider supports both the Gemini API and Vertex AI. Switch with use_vertex_ai=True on the Agent or the GOOGLE_GENAI_USE_VERTEXAI environment variable. See the providers/google docs for the configuration.
Can I run 10xGraph on Google Cloud Run or GKE?
Yes. The API server is a standard Python ASGI app, and 10xGraph build generates a Dockerfile, a Docker Compose file and a Kubernetes manifest. Package it and deploy it on Cloud Run, GKE or any Kubernetes cluster.
Does 10xGraph have anything like ADK's SequentialAgent, ParallelAgent and LoopAgent?
These patterns are graph primitives in 10xGraph. Sequential is a chain of edges, parallel is a fan-out and fan-in, and a loop is a self-edge capped by recursion_limit.
Is ADK limited to Gemini?
No. ADK documents LiteLLM integration for models from other providers such as OpenAI and Anthropic, alongside first-party Gemini support. 10xGraph also supports several providers behind one model string.
Is 10xGraph free for commercial use?
Yes. 10xGraph, including the API server, CLI and TypeScript client, is MIT-licensed. ADK is Apache-2.0 licensed per its PyPI metadata.
Last updated for v0.9.2Edit this page on GitHubReport an issue