readme.md
go-zero is a web and rpc framework with lots of builtin engineering practices. It’s born to ensure the stability of the busy services with resilience design and has been serving sites with tens of millions of users for years.
<div align=center> </div>English | 简体中文
<a href="https://trendshift.io/repositories/3263" target="_blank"></a> <a href="https://www.producthunt.com/posts/go-zero?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-go-zero" target="_blank"></a>
go-zero (listed in CNCF Landscape: https://landscape.cncf.io/?selected=go-zero) is a web and rpc framework with lots of builtin engineering practices. It’s born to ensure the stability of the busy services with resilience design and has been serving sites with tens of millions of users for years.
go-zero contains simple API description syntax and code generation tool called goctl. You can generate Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript from .api files with goctl.
In early 2018, we transitioned from a Java+MongoDB monolithic architecture to microservices, choosing:
go-zero follows these core design principles:
go-zero integrates engineering best practices:
Run the following command under your project:
go get -u github.com/zeromicro/go-zero
The go-zero team provides AI tooling for Claude, GitHub Copilot, Cursor to generate framework-compliant code.
ai-context - Workflow guide for AI assistants
zero-skills - Pattern library with examples
mcp-zero - Code generation tools via Model Context Protocol
git submodule add https://github.com/zeromicro/ai-context.git .github/ai-context
ln -s ai-context/00-instructions.md .github/copilot-instructions.md # macOS/Linux
# Windows: mklink .github\copilot-instructions.md .github\ai-context\00-instructions.md
git submodule update --remote .github/ai-context # Update
git submodule add https://github.com/zeromicro/ai-context.git .cursorrules
git submodule update --remote .cursorrules # Update
git submodule add https://github.com/zeromicro/ai-context.git .windsurfrules
git submodule update --remote .windsurfrules # Update
git clone https://github.com/zeromicro/mcp-zero.git && cd mcp-zero && go build
# Configure: ~/Library/Application Support/Claude/claude_desktop_config.json
# Or: claude mcp add --transport stdio mcp-zero --env GOCTL_PATH=/path/to/goctl -- /path/to/mcp-zero
AI assistants use these tools together:
Example: Creating a REST API → AI reads ai-context for workflow → calls mcp-zero to generate code → references zero-skills for patterns → produces production-ready code ✅
Full examples:
Install goctl
# for Go
go install github.com/zeromicro/go-zero/tools/goctl@latest
# For Mac
brew install goctl
# docker for all platforms
docker pull kevinwan/goctl
# run goctl
docker run --rm -it -v `pwd`:/app kevinwan/goctl --help
Ensure goctl is executable and in your $PATH.
Create the API file (greet.api):
type (
Request {
Name string `path:"name,options=[you,me]"` // parameters are auto validated
}
Response {
Message string `json:"message"`
}
)
service greet-api {
@handler GreetHandler
get /greet/from/:name(Request) returns (Response)
}
Generate .api template:
goctl api -o greet.api
Generate Go server code
goctl api go -api greet.api -dir greet
Generated structure:
├── greet
│ ├── etc
│ │ └── greet-api.yaml // configuration file
│ ├── greet.go // main file
│ └── internal
│ ├── config
│ │ └── config.go // configuration definition
│ ├── handler
│ │ ├── greethandler.go // get/put/post/delete routes are defined here
│ │ └── routes.go // routes list
│ ├── logic
│ │ └── greetlogic.go // request logic can be written here
│ ├── svc
│ │ └── servicecontext.go // service context, mysql/redis can be passed in here
│ └── types
│ └── types.go // request/response defined here
└── greet.api // api description file
Run the service:
cd greet
go mod tidy
go run greet.go -f etc/greet-api.yaml
Default port: 8888 (configurable in etc/greet-api.yaml)
Test with curl:
curl -i http://localhost:8888/greet/from/you
Response:
HTTP/1.1 200 OK
Date: Sun, 30 Aug 2020 15:32:35 GMT
Content-Length: 0
Write business logic
Generate client code for multiple languages
goctl api java -api greet.api -dir greet
goctl api dart -api greet.api -dir greet
...
Join the chat via https://discord.gg/4JQvC5A4Fe
go-zero enlisted in the CNCF Cloud Native Landscape.
If you like this project or are using it to learn or start your own solution, give it a star to get updates on new releases. Your support matters!