About this project
Goa is a design-first framework for building Go services. Instead of writing handlers, clients, and specifications separately, you describe types, methods, validation, and errors once in a Go-based DSL, and the generator produces the rest.
What the generator produces from a single design:
- Typed service interfaces, endpoints, clients, and boundary validation
- HTTP server handlers, encoders/decoders, Go clients, CLI commands, and OpenAPI specifications
- gRPC Protocol Buffer definitions, server/client adapters, serialization, and CLI commands
- JSON-RPC server/client code, request dispatch, batches, and notifications
- Streaming support: WebSocket and SSE for HTTP, SSE for JSON-RPC, and gRPC streams
- Named result views with code to select and serialize response shapes
A single service definition can expose the same operation over HTTP, gRPC, and JSON-RPC. The generated transports share one service interface, so business logic is implemented once in ordinary Go outside the generated tree. Changing the design and regenerating updates handlers, clients, validation, and specifications together, which reduces drift between code and documentation.
The README also highlights a coding-agent workflow: a "Goa service designer" skill can be installed into an application repository to guide design changes, generation, implementation, and verification. The project points to Goa-AI for building AI agents and MCP servers that reuse Goa types and bind tools to service methods, with in-memory or Temporal execution engines.
Getting started requires Go 1.26 or later (1.27.1 recommended). A quickstart walks through initializing a module, writing a design, running the generator and example commands, and calling the resulting service. For all three transports, the Protocol Buffer compiler and Go protobuf generators are needed; an HTTP-only first run can omit the gRPC and JSON-RPC blocks.
Documentation covers the DSL reference, code generation, transport-specific guides, production topics such as security schemes and interceptors, and a set of example applications. The project is MIT licensed and accepts community contributions.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.