Go is a good fit for agents

Go’s perceived strengths for agents

  • Many see agents as orchestration-heavy: coordinating HTTP calls, streams, timeouts, retries, backpressure, and cancellation. This is described as “bread and butter” for Go’s goroutines, channels, context.Context, and strong standard library.
  • Static binaries and simple deployment are cited as advantages over Python’s virtualenv/pip complexity for production agents.
  • Some report good experience building real agentic tools/CLIs in Go, and say LLMs generate Go code reliably because the language is small, consistent, and has high‑quality training data.

Elixir/Erlang and the BEAM alternative

  • Several argue that, by the same concurrency logic, Elixir/Erlang (BEAM) are even better for agents: lightweight isolated processes, built‑in distribution, fault tolerance, hot code upgrades.
  • BEAM + durable storage (SQLite/Postgres/S3/DuckDB or mnesia) is proposed as an ideal combo for stateful agents and orchestrators, with examples of job/workflow systems and IoT‑style networks.
  • Some note BEAM’s VM and performance ceiling as drawbacks versus a compiled language like Go.

JavaScript/TypeScript and Python ecosystems

  • There’s strong defense of JS/TS for agents: native JSON handling, event-driven style, npm ecosystem, browser + Node deployment, sandboxing in the browser, and mature MCP tooling.
  • Python is defended as the de facto ML/AI language with unmatched libraries, tooling, and community; many agent frameworks, observability tools, and SDKs appear there first.
  • Others dislike JS/TS or Python on language-design grounds but concede that ecosystem gravity matters in AI more than runtime performance.

Durable execution, task queues, and state

  • Long‑running agents raise concerns about losing in‑memory state on process death. Multiple comments argue you must break work into resumable chunks and persist state in a DB or durable log.
  • Temporal, Hatchet, task queues, and similar durable-execution systems are discussed as language-agnostic solutions that replay workflows from event history.
  • Some Go users are hand‑rolling checkpointed agents using logs, context trees, and databases, but note the complexity overhead.

Performance and bottlenecks

  • Many point out agents spend most of their time waiting on LLM calls and external I/O; runtime speed rarely dominates.
  • JSON (de)serialization and conflict‑resolution (diff/patch/merge on shared state) are mentioned as the main non‑LLM hotspots; language choice only marginally affects these.

Go’s language and ecosystem criticisms

  • Critics argue Go’s type system (enums, generics ergonomics), error handling verbosity, and channel footguns hurt general productivity, not just for agents.
  • Others counter that the simplicity, interfaces, and tooling outweigh these issues and reduce long‑term maintenance risk.
  • Several note that Go’s ML and agent‑orchestration library ecosystem lags far behind Python and TS; you often end up writing your own middleware (logging, tracing, retries, DSLs, SDKs).

“Agents are just software” / language neutrality

  • A recurring view: everything described as “an agent” is standard async/distributed programming—loops, branching, queues, workflows.
  • From that perspective, “best language for agents” largely reflects developer preference; any language with decent async and libraries can work, and language choice rarely determines success.