internal/website/docs/quickstart.md
Get up and running with go-micro in under 5 minutes.
The recommended way is the precompiled binary — no Go toolchain required:
curl -fsSL https://go-micro.dev/install.sh | sh
Or, if you have Go and prefer to build from source:
go install go-micro.dev/v6/cmd/micro@latest
If the installer finishes but your shell cannot find micro, open Install troubleshooting before creating your first service.
# Create a new service
micro new helloworld
cd helloworld
# Review the generated code
ls -la
# Run locally with hot reload
micro run
# Test it
curl -X POST http://localhost:8080/api/helloworld/Helloworld.Call \
-H "Content-Type: application/json" \
-d '{"name": "World"}'
You now have the service half of the services → agents → workflows lifecycle running locally. Keep the on-ramp going in this order:
go install, PATH, micro --version, and the no-secret smoke path.micro agent demo - print the provider-free first-agent demo command and the next docs steps from the installed CLI.micro agent preflight → micro run → micro chat loop.After that first-agent path, branch out to:
package main
import (
"context"
"go-micro.dev/v6"
)
type Greeter struct{}
func (g *Greeter) Hello(ctx context.Context, req *Request, rsp *Response) error {
rsp.Message = "Hello " + req.Name
return nil
}
func main() {
service := micro.NewService("greeter")
service.Handle(new(Greeter))
service.Run()
}
import (
"context"
"go-micro.dev/v6"
)
func main() {
service := micro.NewService("subscriber")
// Subscribe to events
micro.RegisterSubscriber("user.created", service.Server(),
func(ctx context.Context, event *UserCreatedEvent) error {
// Handle the event here.
return nil
},
)
service.Run()
}
publisher := micro.NewEvent("user.created", client)
publisher.Publish(ctx, &UserCreatedEvent{
Email: "[email protected]",
})