# Goa

A design-first Go framework that generates HTTP, gRPC, and JSON-RPC servers and clients, along with OpenAPI and protobuf specifications, from a single design written in Go.

Goa lets a developer describe a service's types, operations, and validation once, in a Go-based design, and generates the server and client code, CLI clients, and OpenAPI or protobuf specifications from it. A service built this way can expose the same operations over HTTP, gRPC, and JSON-RPC from one design, with routing, serialization, validation, and clients generated rather than hand-written.

Because the design and the generated code stay in sync, a change to a field regenerates the handler, client, validation, and specification together, and the Go compiler flags implementations and callers that still need updating. A companion service designer skill can be installed to guide an AI coding agent through design changes, generation, implementation, and verification.

It is written in Go and released under the MIT license.

Website: https://goa.design
