<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Eino vs Google ADK Go vs Gogent on RockB</title><link>https://baeseokjae.github.io/tags/eino-vs-google-adk-go-vs-gogent/</link><description>Recent content in Eino vs Google ADK Go vs Gogent on RockB</description><image><title>RockB</title><url>https://baeseokjae.github.io/images/og-default.png</url><link>https://baeseokjae.github.io/images/og-default.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 01 Oct 2026 09:48:45 +0000</lastBuildDate><atom:link href="https://baeseokjae.github.io/tags/eino-vs-google-adk-go-vs-gogent/index.xml" rel="self" type="application/rss+xml"/><item><title>gogent Review: The Go Agent Framework That Ships Infrastructure, Not Agent Logic</title><link>https://baeseokjae.github.io/posts/gogent-go-agent-infrastructure/</link><pubDate>Thu, 01 Oct 2026 09:48:45 +0000</pubDate><guid>https://baeseokjae.github.io/posts/gogent-go-agent-infrastructure/</guid><description>gogent is a Go agent framework that ships a daemon, tool registry, sandbox and OTel instead of agent logic. An honest review of a 3-star, pre-1.0 repo.</description><content:encoded><![CDATA[<p>gogent (github.com/tltre/gogent) is an MIT-licensed Go agent framework that deliberately does not write your agent&rsquo;s logic. It ships the operational layer instead: a daemon that forks each agent as its own OS process, a centralized tool registry with manifest-based authorization, MCP and sandbox routing, credential isolation, and OpenTelemetry spans. It is pre-1.0, single-author, and has 3 stars.</p>
<p>That is the whole verdict in one paragraph. The interesting question is not &ldquo;is gogent popular&rdquo; — it is not, and the numbers are unambiguous — but whether the layer it occupies is a real gap in the Go ecosystem. Eino, Google&rsquo;s ADK for Go, Genkit and tRPC-Agent-Go are all in-process libraries that own your agent loop. gogent refuses to, and instead owns the process model around it. That distinction is worth understanding even if you never install it.</p>
<h2 id="what-is-gogent-and-what-does-it-actually-do">What Is gogent and What Does It Actually Do?</h2>
<p>The repository&rsquo;s own tagline is &ldquo;Gogent — Go agent infrastructure,&rdquo; and the README opens by calling it &ldquo;a Go-based agent application harness.&rdquo; Concretely, the project is a management CLI (<code>gogent run</code>, <code>serve</code>, <code>stop</code>, <code>list</code>, <code>status</code>, <code>doctor</code>, <code>logs</code>, <code>tool</code>, <code>sandbox</code>) plus a component framework, wired together by a daemon that runs on localhost and speaks HTTP on port 9090.</p>
<p>A gogent application is declared in YAML rather than assembled in Go code. Nine component types ship in the box — channel, agentcore, provider, hook, eventbus, contextmanager, memory, sandbox and logger — and each is pluggable, replaceable and multi-instance capable. The Registry initializes them in topological order, and configuration resolves through a three-step priority chain: <code>With*</code> code injection beats YAML, which beats built-in defaults.</p>
<p>The ReAct loop itself is conventional: reason, call a tool, observe the result, iterate, with a hard iteration cap of 10, automatic tool-declaration injection, error self-correction, and tool interactions archived to memory. If you have read Anthropic&rsquo;s &ldquo;Building Effective Agents,&rdquo; nothing in that loop will surprise you. What is unusual is everything wrapped around it.</p>
<h2 id="which-gogent-is-this-the-name-collision-you-must-clear-first">Which gogent Is This? The Name Collision You Must Clear First</h2>
<p>Search &ldquo;gogent&rdquo; on GitHub and you get roughly 50 repositories. The top result by stars is not this project. It is <a href="https://github.com/tobalo/gogent">tobalo/gogent</a> — 15 stars, &ldquo;Agentic AI workers explicitly in Go&rdquo; — which is a distributed log-analysis worker built on embedded NATS, JetStream, SQLite and LLM agents for manufacturing and edge error logs, with a documented nil-pointer crash when the agent is pushed past about 20 messages. There is also <a href="https://github.com/ssubedir/gogent">ssubedir/gogent</a>, a 0-star self-hosted ReAct CLI agent with a <code>SKILL.md</code>-style skills system, and <a href="https://github.com/effective-security/gogentic">effective-security/gogentic</a> at 4 stars, forked from langchaingo.</p>
<p>None of those are this review&rsquo;s subject. The parent issue&rsquo;s title — &ldquo;gogent: Go Agent Infrastructure&rdquo; — matches only <code>tltre/gogent</code>, whose description reads &ldquo;Gogent — Go agent infrastructure: modular components, multi-engine LLM providers, ReAct agent loop, multi-app daemon management, centralized tool registry, MCP ecosystem, sandbox, OTel.&rdquo;</p>
<p>The collision is not trivia; it is a keyword-level problem. A near-identical name spread across dozens of mostly dead repositories is what templated, AI-assisted naming churn looks like, and it means the phrase &ldquo;gogent go framework&rdquo; does not identify one product in 2026. If you found this review by searching that phrase, check the owner name before you <code>go get</code>.</p>
<h2 id="what-does-harness-not-library-mean-in-practice">What Does &ldquo;Harness, Not Library&rdquo; Mean in Practice?</h2>
<p>The distinction is not marketing, because it changes what you write. With Eino or Genkit, you import a package, define nodes or flows, and your Go program is the agent application. The framework&rsquo;s code runs inside your process, and the library is on the call path.</p>
<p>With gogent, the framework <em>is</em> the program. You describe the application in YAML, run the shipped CLI, and your code — if any — is injected as a <code>BuildOption</code> that takes precedence over configuration:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span><span style="color:#a6e22e">builder</span>, <span style="color:#a6e22e">err</span> <span style="color:#f92672">:=</span> <span style="color:#a6e22e">app</span>.<span style="color:#a6e22e">NewBuilder</span>(<span style="color:#e6db74">&#34;config/example.yaml&#34;</span>)
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">application</span>, <span style="color:#a6e22e">err</span> <span style="color:#f92672">:=</span> <span style="color:#a6e22e">builder</span>.<span style="color:#a6e22e">Build</span>(
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">app</span>.<span style="color:#a6e22e">WithProvider</span>(<span style="color:#e6db74">&#34;openai&#34;</span>, <span style="color:#a6e22e">provider</span>.<span style="color:#a6e22e">NewOpenAI</span>(<span style="color:#a6e22e">provider</span>.<span style="color:#a6e22e">OpenAIConfig</span>{})),
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">app</span>.<span style="color:#a6e22e">WithAgentCore</span>(<span style="color:#e6db74">&#34;agent-main&#34;</span>, <span style="color:#a6e22e">agentcore</span>.<span style="color:#a6e22e">NewReactAgent</span>()),
</span></span><span style="display:flex;"><span>)
</span></span></code></pre></div><p>There is a second consequence that matters more than the first. Because the daemon owns tools, credentials and sandboxing, those concerns leave the application process entirely. In an in-process library, a tool call is a function call in your binary with your environment variables in scope. In gogent, a tool call is a gRPC hop to <code>ToolService</code> in the daemon, evaluated against a manifest the application had to declare in advance, with the credential resolved daemon-side and the sandbox chosen by policy.</p>
<p>That is a genuine architectural difference, and it is also the source of gogent&rsquo;s largest operational cost — the same decision that buys isolation buys a process topology you now have to debug.</p>
<h2 id="how-does-the-daemon-and-subprocess-model-work">How Does the Daemon and Subprocess Model Work?</h2>
<p>Two startup paths exist, and the difference between them is the most concrete thing to understand about gogent:</p>
<table>
  <thead>
      <tr>
          <th>Dimension</th>
          <th><code>gogent run</code></th>
          <th><code>gogent serve</code></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Where the agent runs</td>
          <td>Inside the <code>gogent run</code> process</td>
          <td>A daemon-forked OS subprocess</td>
      </tr>
      <tr>
          <td>PID recorded by daemon</td>
          <td>0 at registration, rewritten from a port file</td>
          <td>Real PID at registration</td>
      </tr>
      <tr>
          <td>stdin</td>
          <td>Your terminal (interactive REPL)</td>
          <td>NUL, no terminal</td>
      </tr>
      <tr>
          <td>Interface layer</td>
          <td>foreground REPL: chat, <code>/key</code>, <code>/provider</code>, <code>/model</code></td>
          <td><code>SetInterface(nil)</code></td>
      </tr>
      <tr>
          <td>Typical use</td>
          <td>Development and interactive use</td>
          <td>Long-running background agents</td>
      </tr>
  </tbody>
</table>
<p>The design decision the ADRs are explicit about: an agent is an independent OS subprocess rather than a goroutine, so <strong>the daemon crashing does not kill running agents</strong>. The daemon&rsquo;s health-check goroutine probes the process by PID and flips the app&rsquo;s status to <code>stopped</code> when it disappears — which is how <code>gogent doctor</code> can report on an agent whose parent process is gone.</p>
<p>The bill for this arrives in three places: an HTTP management API on port 9090, port files that carry the real PID when <code>run</code> forks in-process, and a gRPC <code>tool.Service</code> hop for every single tool execution. Debugging moves from &ldquo;read the stack trace&rdquo; to &ldquo;correlate the app log, the daemon log, the port file and the OTel trace.&rdquo; The daemon architecture document itself (written in Chinese, like all seven design ADRs) is candid about the complexity of reconciling the two startup paths.</p>
<h2 id="how-do-tools-mcp-and-least-privilege-work">How Do Tools, MCP, and Least Privilege Work?</h2>
<p>Tools are the part of gogent with the most design work behind them, and the ADRs document the trade-offs including rejected alternatives.</p>
<p>Tools live in a daemon-side <code>ToolRegistry</code> with three stores: a <code>ServerStore</code> holding MCP server metadata (command, environment, status), the registry holding callable entries, and a <code>ManifestStore</code> holding what each application declared. Built-ins are <code>calculator</code>, <code>think</code>, <code>todo</code>, <code>filesystem.read</code> and <code>shell</code>. MCP servers expand into sub-tools using <code>server.tool</code> naming — <code>github-mcp.pull</code>, <code>github-mcp.push</code> — and the daemon runs MCP over either stdio (<code>process</code> driver) or streamable HTTP (<code>http</code> driver) using the <code>mark3labs/mcp-go</code> client.</p>
<p>Three properties are worth calling out because they are the ones an in-process library cannot give you:</p>
<ul>
<li><strong>Declarative authorization.</strong> An application only gets the tools its manifest declares. Undeclared tool execution is rejected, which is the least-privilege story told in the README.</li>
<li><strong>Health checks that act.</strong> MCP servers are Ping-probed every 30 seconds, and the daemon auto-restarts a server after three consecutive failures. <code>gogent tool status &lt;server&gt;</code> shows ACTIVE/UNHEALTHY transitions.</li>
<li><strong>A fixed execution pipeline.</strong> Every tool call runs through Auth → Hook:pre → Sandbox → Hook:post → Result, which is why the tool-execution exchange can be recorded as an audit event.</li>
</ul>
<p>Sandboxing is routed at three levels with a documented fallback chain: per-tool setting, then app default, then daemon default. Backends include E2B MicroVMs, a builtin <code>bwrap</code> provider, and an <code>agent-sandbox</code> provider for Kubernetes. The sandbox design document states the governing decision bluntly: sandbox execution happens <strong>daemon-side</strong>, because the safety boundary must not be administered by the process it constrains.</p>
<h2 id="how-do-providers-credentials-and-runtime-switching-work">How Do Providers, Credentials, and Runtime Switching Work?</h2>
<p>Two native engines ship: <code>openai</code> (full implementation covering Generate, Stream, SSE, tool calling and model listing) and <code>deepseek</code> (a thin wrapper over the shared base URL). Everything else rides an <code>openai-compat</code> base class that gets reused to register compatible vendors — Groq, Mistral, Ollama, vLLM and more. Engines are always registered; the top-level <code>provider:</code> section uses a blacklist (<code>exclude: [&quot;deepseek&quot;]</code>) to remove what you do not want.</p>
<p>Two details are better than what most Go frameworks offer at this stage:</p>
<ol>
<li><strong>Model lists are never hardcoded.</strong> Each engine fetches <code>GET {baseURL}/models</code> and caches for 10 minutes; the resolution chain is config/env, then the first entry from that list, then engine default. In the REPL, <code>/provider</code> lists engines and models and <code>/provider deepseek</code> switches immediately.</li>
<li><strong>Credentials are app-scoped and hot-reloaded.</strong> Keys live in <code>~/.gogent/apps/&lt;name&gt;/credentials.yaml</code>, values can be <code>${VAR}</code> references resolved against the environment, an <code>fsnotify</code> watcher reloads changes without a restart, and <code>/key</code> configures interactively with masked display.</li>
</ol>
<p>External suppliers are supported too: any service exposing <code>gogent.v1.ProviderService</code> can be registered by gRPC endpoint, and a name collision with a built-in engine fails the build with a clear error rather than silently routing <code>/provider openai</code> to a remote.</p>
<h2 id="what-do-observability-and-context-management-look-like">What Do Observability and Context Management Look Like?</h2>
<p>Observability is the most complete subsystem in the repository. Three span levels are emitted — <code>agent.run</code> → <code>agent.llm.generate</code> → <code>tool.exec</code> — with the full tool-execution exchange (auth, hook, result) recorded as span events and exported over OTLP gRPC to Jaeger or Tempo. The <code>otelgrpc</code> and <code>otelhttp</code> contrib instrumentation is wired into the gRPC and HTTP boundaries, so trace context propagates across the process hop that the daemon model creates. On a project with 3 stars, this is more tracing infrastructure than most production Go services have.</p>
<p>Context management is where the unreleased work sits. The v0.15.0 tag is the only public release, published 2026-08-17, but the default branch (<code>master</code>) is 7 commits and 62 changed files ahead of it, and those commits are all labelled v0.16.x: a remote model-spec catalog for context limits, a compression-summary engine added to <code>DefaultContextManager</code>, YAML wiring for the compression config, and tests for the reserved-handling override path. None of that is in a tagged release, and <code>github.com/tltre/gogent</code> returns HTTP 404 on pkg.go.dev, so &ldquo;read the code on master&rdquo; is currently the only way to evaluate it.</p>
<h2 id="how-does-gogent-compare-to-eino-adk-go-genkit-and-trpc-agent-go">How Does gogent Compare to Eino, ADK Go, Genkit, and tRPC-Agent-Go?</h2>
<p>Star counts below are a GitHub API snapshot taken on 2026-10-01, the same day as this review. They are a point-in-time reading, not a trend.</p>
<table>
  <thead>
      <tr>
          <th>Project</th>
          <th>Stars</th>
          <th>Layer it owns</th>
          <th>Process model</th>
          <th>MCP</th>
          <th>Sandbox</th>
          <th>OTel</th>
          <th>Maturity</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>gogent</strong></td>
          <td>3</td>
          <td>Agent application harness: daemon, tool registry, sandbox, credentials</td>
          <td>Agent as OS subprocess, daemon-managed</td>
          <td>process + HTTP drivers, Ping/auto-restart</td>
          <td>E2B / bwrap / K8s, daemon-side</td>
          <td>3-level spans, OTLP gRPC</td>
          <td>Pre-1.0, single author, one tag</td>
      </tr>
      <tr>
          <td><strong>Eino</strong> (ByteDance)</td>
          <td>13,219</td>
          <td>Typed component graph + ReAct/DeepAgent</td>
          <td>In-process library</td>
          <td>via components</td>
          <td>none built in</td>
          <td>via OTel integration</td>
          <td>0.x, frequent alphas, production-hardened at ByteDance</td>
      </tr>
      <tr>
          <td><strong>Google ADK for Go</strong></td>
          <td>8,837</td>
          <td>Agents, workflow agents, tools, A2A, MCP toolsets</td>
          <td>In-process library</td>
          <td>first-party toolsets</td>
          <td>via deployment stack</td>
          <td>built in</td>
          <td>v2.4.0 line, highest commit velocity</td>
      </tr>
      <tr>
          <td><strong>Genkit Go</strong></td>
          <td>6,463</td>
          <td>Model calls, typed flows, experimental agents</td>
          <td>In-process library</td>
          <td>via plugins</td>
          <td>none built in</td>
          <td>pipeline traces + Dev UI</td>
          <td>1.x since Sept 2025</td>
      </tr>
      <tr>
          <td><strong>tRPC-Agent-Go</strong></td>
          <td>1,836</td>
          <td>Graph agents (&ldquo;LangGraph in Go&rdquo;), checkpoints, interrupts</td>
          <td>In-process library</td>
          <td>client + server</td>
          <td>none built in</td>
          <td>OTel out of the box</td>
          <td>Active, large API surface</td>
      </tr>
      <tr>
          <td><strong>MS Agent Framework for Go</strong></td>
          <td>634</td>
          <td>Graph workflows, human-in-the-loop, checkpointing</td>
          <td>In-process library</td>
          <td>supported</td>
          <td>none built in</td>
          <td>opt-in</td>
          <td>Public preview, explicit parity gaps</td>
      </tr>
  </tbody>
</table>
<p>The pattern is the point. Every serious competitor is a library that owns orchestration and leaves operations to you. gogent owns operations and leaves orchestration as a configuration file. If you want the ecosystem, tooling, provider breadth and community of a first-party SDK, gogent is not a candidate in 2026 in any dimension except process isolation.</p>
<h2 id="what-are-gogents-honest-limitations">What Are gogent&rsquo;s Honest Limitations?</h2>
<p>The adoption metrics are unambiguous, and a review that soft-pedals them is useless: 3 stars, 0 forks, 125 commits, 1 contributor (<code>tltre</code> accounts for all 125), 0 open issues, 0 open PRs, exactly one tagged release. This is a single-author pre-1.0 project published on 2026-08-17, not a production-ready alternative to Eino or ADK Go.</p>
<p>Beyond scale, the concrete friction points:</p>
<ul>
<li><strong>Toolchain floor.</strong> <code>go.mod</code> declares <code>go 1.25.5</code> — a patch-level directive, which is unusual and effectively means &ldquo;latest toolchain only.&rdquo; Eino declares go 1.18; ADK Go&rsquo;s v2 line wants 1.26.6+.</li>
<li><strong>Not indexed on pkg.go.dev.</strong> The module page returns 404. You are vendoring from git, not consuming a documented public API.</li>
<li><strong>Documentation is bilingual but uneven.</strong> The README and <code>docs/en/</code> (quickstart, configuration, providers, agents) are English. The seven architecture ADRs and <code>ARCHITECTURE.md</code> are Chinese-only, and they are the documents that explain the daemon, tool and sandbox decisions.</li>
<li><strong>Operational overhead is real.</strong> HTTP API on :9090, port files, a gRPC hop per tool call, daemon logs plus app logs plus traces. There are Windows/Unix process shims to reason about, and no hosted deployment story — this is a self-hosted single-machine design.</li>
<li><strong>Unreleased context work.</strong> The compression engine and remote model-spec catalog live only on <code>master</code>.</li>
</ul>
<p>The market context is the harder limitation. In the Go Developer Survey 2025 (5,379 responses, fielded September 2025, published January 2026), only 11% of Go developers said they work with ML models, tools or agents, 78% are not building AI-powered features into their Go software, and just 17% primarily use AI tools as unsupervised agents. Satisfaction with AI-powered dev tooling sits at 55% versus 91% for Go itself. Anthropic&rsquo;s own engineering guidance (&ldquo;Building Effective Agents&rdquo;) argues the strongest implementations use simple composable patterns rather than frameworks, and Zep&rsquo;s field report on agentic development in Go puts the core agent loop at roughly 40 lines while observing that most Go teams skip frameworks entirely. Any &ldquo;best Go framework for building AI agents&rdquo; recommendation has to answer &ldquo;why a framework at all&rdquo; first.</p>
<h2 id="who-should-actually-use-gogent-in-2026">Who Should Actually Use gogent in 2026?</h2>
<p>Three profiles, and one that should not:</p>
<p><strong>Self-hosting teams that want multi-agent process isolation on one box.</strong> If you are running several agent applications and want each one crash-isolated, port-allocated, and survivable when the supervisor dies, that is precisely the problem gogent was designed around, and no mainstream Go library addresses it.</p>
<p><strong>Infrastructure engineers who want a tool and MCP gateway with least-privilege manifests.</strong> The daemon-side <code>ToolRegistry</code> plus manifest authorization plus 30-second MCP health probing is a coherent design for &ldquo;agents must not hold the credentials,&rdquo; and it is the fastest path to seeing that pattern implemented.</p>
<p><strong>Architects studying a reference daemon design.</strong> The seven ADRs document rejected alternatives, not just outcomes. Reading how a solo author reasoned about sandbox placement, transport abstraction and the <code>run</code> versus <code>serve</code> split is genuinely useful, and it costs nothing.</p>
<p><strong>The profile that should not:</strong> teams shipping an agent feature this quarter who need provider breadth, ecosystem integrations, stability guarantees and a community to ask. Pick Eino if you want the most-starred option with ByteDance production hardening, Google&rsquo;s ADK for Go if you are on Gemini and Vertex AI, Genkit Go if you want typed flows plus a local trace UI, or tRPC-Agent-Go if you want graph semantics without GCP gravity.</p>
<h2 id="verdict-is-gogent-worth-using">Verdict: Is gogent Worth Using?</h2>
<p><strong>Design: strong. Project: unproven. Use it to learn, not yet to depend on.</strong></p>
<p>As a piece of Go infrastructure, gogent is more thought-through than its star count suggests: process isolation as a first-class concern, a sandbox boundary that is not administered by the process it constrains, a three-level authorization model for tools, OTel spans that actually cross the process hop, and app-scoped credentials with hot reload. The README&rsquo;s comparison to LangGraph — &ldquo;the operating system for running agent applications&rdquo; versus &ldquo;a library for writing agent logic&rdquo; — is a fair description of where it aims.</p>
<p>As a dependency, it is a 3-star repository with one contributor and one release, not indexed for Go modules, with its newest work untagged and its most important design docs in a language most of its potential users do not read. Nothing about the code quality justifies dismissing it; everything about the adoption surface justifies waiting.</p>
<p>What would change this verdict, in order of weight: a second regular contributor, a <code>v1.0.0</code> tag with pkg.go.dev indexing, the v0.16.x context work shipped and documented, English translations of the architecture ADRs, and any production report from someone other than the author. Watch the repository; do not build your roadmap on it yet.</p>
<h2 id="faq">FAQ</h2>
<h3 id="is-gogent-production-ready">Is gogent production-ready?</h3>
<p>No. gogent has one tagged release (v0.15.0, 2026-08-17), one contributor, 125 commits, 3 stars and 0 forks, and is not indexed on pkg.go.dev. The architecture is coherent enough to study and self-host, but there is no production usage evidence, no community support channel, and the context-compression work sits unreleased on <code>master</code>.</p>
<h3 id="what-go-version-does-gogent-require">What Go version does gogent require?</h3>
<p>The <code>go.mod</code> directive is <code>go 1.25.5</code>, a patch-level floor that effectively requires a current toolchain — stricter than Eino&rsquo;s <code>go 1.18</code> and comparable to Google ADK for Go v2&rsquo;s <code>1.26.6+</code>. The English quickstart simply says &ldquo;Go 1.25+&rdquo;. If you are on an older or pinned toolchain, gogent will not build.</p>
<h3 id="does-gogent-support-mcp-servers-and-does-it-sandbox-tool-execution">Does gogent support MCP servers, and does it sandbox tool execution?</h3>
<p>Yes to both, and it is the strongest part of the project. MCP servers connect over stdio (<code>process</code> driver) or streamable HTTP, expand into <code>server.tool</code> sub-tools, and are Ping-probed every 30 seconds with automatic restart after three consecutive failures. Tool execution runs daemon-side through Auth → Hook:pre → Sandbox → Hook:post → Result, with sandbox routing resolved per-tool, then app default, then daemon default, across E2B MicroVM, <code>bwrap</code> and Kubernetes backends.</p>
<h3 id="gogent-vs-langgraph-which-should-a-go-team-pick">gogent vs LangGraph: which should a Go team pick?</h3>
<p>They operate at different layers, so the question is usually a category error. LangGraph is a library for expressing agent logic as state graphs — nodes, edges, checkpoints — inside your process. gogent is a harness for running agent applications: YAML component assembly, a daemon with OS-subprocess isolation, centralized tool authorization, sandboxed execution and OTel export. A Go team that wants graph semantics should look at tRPC-Agent-Go, which is explicitly positioned as &ldquo;LangGraph in Go.&rdquo; A team that wants the operations layer should study gogent, with the caveat above about maturity.</p>
<h3 id="should-i-choose-gogent-over-eino-or-google-adk-go">Should I choose gogent over Eino or Google ADK Go?</h3>
<p>Not for a production feature today. Eino (13,219 stars, Apache-2.0, production-hardened at ByteDance) and Google&rsquo;s ADK for Go (8,837 stars, first-party agents, workflows, A2A and MCP toolsets) both have orders of magnitude more adoption, provider breadth, tooling and support. Choose gogent only if your specific requirement is daemon-managed multi-application process isolation with least-privilege tool manifests on a single machine — and treat it as a self-supported pre-1.0 dependency with one author.</p>
]]></content:encoded></item></channel></rss>