Blades

A Go framework for composing multimodal agents from models, tools, memory, middleware, and workflows.

Source repo
go-kratos/blades
Stars
★ 815
Last updated
4mo ago
License
MIT
Primary language
Go

At a glance

Works with
Universal · cross-platformOpenAI API
You'll need
GoOpenAI API keyNetwork accessLocal filesystem
Typical use
A Go backend team embedding an OpenAI-backed, multi-turn question-answering agent in an existing service.
Main limitation
The README lacks installation commands, a Go version, module-version guidance, and a standalone deployment path, leaving initial project setup to adopters.

What does this agent do, and when should you use it?

Blades is a multimodal AI Agent framework for Go, not a separately hosted chat application. Its common Agent execution contract is Run(context.Context, *Invocation), which returns Generator[*Message, error], and Agent, Chain, and ModelProvider can be composed around that model. The framework exposes pluggable ModelProvider, Tool, Memory, and Middleware components, while flow coordinates multi-step reasoning and transfers data and control between Agents. Model output can be collected in full with Generate or consumed incrementally through NewStreaming; the supplied example runs an OpenAI-backed agent through Runner in application code. It fits teams building agent behavior inside Go services, but the README does not document a standalone deployment, CLI, or installation command.

An application creates a ModelProvider, such as openai.NewModel("gpt-5", openai.Config{APIKey: os.Getenv("OPENAI_API_KEY")}), then creates an agent with blades.NewAgent plus WithModel and WithInstruction. The caller builds a blades.UserMessage, invokes blades.NewRunner(agent).Run(context.Background(), input), and reads Text() from the returned message. For extensions, Tool uses InputSchema and Handle to represent callable external capabilities; Memory saves and searches messages by session; Middleware adds behavior around Runner execution. Skills can be loaded with skills.NewFromDir("./skills") or skills.NewFromEmbed(embed.FS) and passed through WithSkills(...).

  1. A Go backend team embedding an OpenAI-backed, multi-turn question-answering agent in an existing service.
  2. A developer connecting several Agents or Chains into a multi-step reasoning workflow in a Go application.
  3. A team exposing database queries or API calls as model-callable functions with an InputSchema for invocation parameters.
  4. An application that needs session-scoped conversation memory so later turns can retain context.
  5. An engineering team adding logging, monitoring, authentication, or rate limiting around agent execution without changing Runner core logic.

How do you install or deploy this agent?

The README does not provide a copyable installation command, a required Go version, or module setup instructions, so an exact dependency-installation procedure is undocumented. The explicit prerequisites are a Go environment and, for the OpenAI example, OPENAI_API_KEY; the application must also be able to import github.com/go-kratos/blades and github.com/go-kratos/blades/contrib/openai.

How do you use this agent?

In a Go program, read OPENAI_API_KEY and create openai.NewModel("gpt-5", openai.Config{APIKey: os.Getenv("OPENAI_API_KEY")}). Create an agent with blades.NewAgent("Blades Agent", blades.WithModel(model), blades.WithInstruction("You are a helpful assistant that provides detailed and accurate information.")). Build input with blades.UserMessage("What is the capital of France?"), then run runner := blades.NewRunner(agent) followed by runner.Run(context.Background(), input). After checking err, call output.Text() to obtain the text response.

What are this agent's strengths and limitations?

Pros
  • A shared Agent interface and Generator-based output model connect Agent, Chain, and ModelProvider as composable execution units.
  • The ModelProvider abstraction is explicitly pluggable, with OpenAI, DeepSeek, and Gemini named as services it can integrate.
  • It combines tools, session memory, streaming generation, and middleware for Go applications that need agent capabilities.
  • Skills can be loaded from a directory or packaged into the binary with embed.FS.
Limitations
  • The README lacks installation commands, a Go version, module-version guidance, and a standalone deployment path, leaving initial project setup to adopters.
  • The OpenAI example requires network access and OPENAI_API_KEY; cost and availability depend on the chosen model provider.
  • Persistent and more advanced memory strategies are left to extensions; the README explicitly identifies only an InMemory implementation.
  • No CLI, HTTP service surface, or production operations configuration is shown, so adopters must define the application boundary themselves.

How does this agent compare with similar options?

Key facts side by side with the most closely related agents.

Agent Source review Stars Updated Language Full support on
Blades This agent 23 · Major gaps ★ 815 4mo ago Go OpenAI API
Agently AI Application Runtime 63 · Some gaps ★ 1.7k 11d ago Python OpenAI API · Claude API
Dynamiq Agent Orchestration 61 · Some gaps ★ 1.1k 1d ago Python OpenAI API
DSPy-Go 49 · Major gaps ★ 196 5d ago Go OpenAI API · Claude API

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
23/ 100 5-point scale 1.2 / 5
Trust 0/29
Reliability 3/14
Adaptability 6/18
Convention 8/18
Effectiveness 4/13
Verifiability 2/8
Why each dimension lost points
Trust0 / 29 · 0.0/5

Evidence shows the repository provides no mechanisms for permission management, user confirmation, data flow transparency, sensitive data handling, dependency security, external effects, rollback, or source attribution. All related criteria are absent from the files, hence score 0.

Reliability3 / 14 · 1.1/5

Self-consistency: README concepts align with code interfaces, but full code verification is not possible, score 1. Dependency availability: Dependencies are listed in go.mod, but availability not verified, score 1. Failure messages: No documentation on error handling or failure messages, score 0.

Adaptability6 / 18 · 1.7/5

Audience and scenarios: README clearly targets Go developers and lists use cases like multi-turn conversation and chain-of-thought, score 2. Capability boundaries: Core components described but boundaries not explicit, score 1. Trigger precision: No trigger mechanisms provided, score 0. Environment fit: Environment variable configuration example given, but not comprehensive, score 1.

Convention8 / 18 · 2.2/5

Information architecture: README well-structured with architecture diagram, score 2. Install notes: Quick start example provided, but no detailed installation steps, score 1. Naming stability: Interface names stable, but no version history, score 1. Examples and FAQ: Example code provided, but no FAQ, score 2. Known limitations: Not explicitly listed, score 1. License: MIT license file present, score 2. Versioning and changelog: No version or changelog, score 0. Maintenance responsibility: Maintainers not specified, score 1.

Effectiveness4 / 13 · 1.5/5

Output usability: Example shows output, but format not specified, score 1. Marginal value: Framework offers multimodal support, but no comparison with alternatives, score 1. Cost-benefit: No performance or cost data, score 1.

Verifiability2 / 8 · 1.3/5

Claim traceability: Claims in README lack specific evidence, score 1. Cross-source corroboration: No external verification, score 0. Fact-inference separation: Some descriptions are inferential without clear distinction, score 1.

Risks and how to mitigate them
  • Not found in source: least-privilege scopingGrant only what the task needs: a dedicated account or read-only token, scoped to specific directories and repos.
  • Not found in source: confirmation before actingTurn on (or add) a confirmation step before it acts, and try it in a sandbox or test environment before real data.
  • Not found in source: data-flow disclosureWatch which external services it contacts (proxy or firewall logs) and keep sensitive data out until you know where it goes.
  • Not found in source: sensitive-data handlingUse dedicated, low-privilege, revocable API keys — never production credentials — and keep secrets out of logs.
  • Not found in source: dependency securityPin versions and run a dependency audit (npm audit, pip-audit) before installing; prefer running it in a container.
  • Not found in source: disclosed external effectsEstablish which external systems it writes to, sends to or changes, and verify with test accounts or repos before production.
  • Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
  • Not found in source: verifiable attributionInstall from the official repo or registry and check the publisher and URL to avoid look-alike packages.
  • The repository provides no security mechanisms such as permission control, user confirmation, or data flow transparency; assess risks before use.
  • Dependencies are not security-verified and lack version pinning, posing supply chain risks.
  • No version numbers or changelog, making it difficult to track updates and compatibility.
  • Maintenance responsibility is unclear, raising concerns about long-term maintenance.
Evidence confidence: Low Reviewed Aug 09, 2026 Reviewed revision b78fec59029d
See the full review method →

FAQ

Can I deploy it directly as a chat service?
The README presents it as a Go framework and shows Agent and Runner created in a Go program; it does not provide a standalone chat-service deployment or command.
Is it limited to OpenAI?
No. ModelProvider is presented as a pluggable interface, and the README names OpenAI, DeepSeek, and Gemini as model services that can be integrated, although application code supplies the integration.
What credential does the OpenAI example require?
The example reads its API key from the OPENAI_API_KEY environment variable.
How is conversation context retained?
The Memory interface stores and retrieves messages and supports session management. The README identifies an InMemory implementation; persistent storage must be extended by the adopter.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents