Repo of the Day
cloudwego/eino
Published: Oct 23, 2026
Open repository ↗The ultimate LLM/AI application development framework in Go
Summary
Eino is an LLM application development framework for Go, inspired by projects such as LangChain and Google ADK. It provides common component interfaces, graph-based orchestration, streaming, observability callbacks, and agent implementations, while concrete model and service integrations live primarily in the separate eino-ext repository.
What it is useful for
-
Build applications around standard interfaces. Eino defines abstractions including
ChatModel,Tool,Retriever,Embedding, andChatTemplate. The companioneino-extrepository provides implementations for services such as OpenAI, Claude, Gemini, Ark, Ollama, and Elasticsearch. -
Add tool-using or multi-agent behavior.
ChatModelAgentcan decide when to call tools and when to return an answer. For larger jobs,DeepAgentcan divide work among specialized sub-agents and track progress. The README’s example assigns research, coding, shell, Python, and web-search capabilities. -
Model repeatable workflows as graphs. The
composepackage supports explicit node-and-edge workflows, including validation, generation, and formatting stages. A compiled graph can run directly or be wrapped as a tool withgraphtool, allowing an agent to invoke a controlled process when needed. -
Handle operational workflows. Eino documents streaming across nodes and callbacks for logging, tracing, and metrics at component, graph, and agent boundaries. Agents and tools can also pause for human input and resume from a checkpoint, although the README does not describe checkpoint-storage configuration.
How engineers can use it
Start with Go 1.18 or newer. The README does not provide a module-install command or a complete import setup, so follow its Quick Start and linked examples rather than guessing package paths.
For a basic agent, configure a chat model, create a ChatModelAgent, pass it to an adk.Runner, and iterate over events from runner.Query. The documented OpenAI example uses openai.NewChatModel, selects gpt-4o, and reads the credential from OPENAI_API_KEY.
Tools are registered through ToolsConfig and ToolsNodeConfig.Tools. For example, an agent can receive weatherTool and calculatorTool; Eino handles the internal ReAct loop around those calls.
When execution order matters, build a graph with compose.NewGraph, add lambda, chat-model, or other supported nodes, connect the edges, call Compile, and execute it with Invoke. A sales-report workflow could delegate exploration to a DeepAgent, while a separately compiled graph handles deterministic validation and formatting.
For real deployments, account for the repository split: core orchestration is here, provider implementations are in eino-ext, and complete applications are in eino-examples. Contributors can also run the documented golangci-lint run ./... check locally.