Back to Go Micro

Quick Start

internal/website/docs/quickstart.md

6.3.132.8 KB
Original Source

Quick Start

Get up and running with go-micro in under 5 minutes.

Install

The recommended way is the precompiled binary — no Go toolchain required:

bash
curl -fsSL https://go-micro.dev/install.sh | sh

Or, if you have Go and prefer to build from source:

bash
go install go-micro.dev/v6/cmd/micro@latest

Create Your First Service

bash
# 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"}'

Next Steps

You now have the service half of the services → agents → workflows lifecycle running locally. Keep the on-ramp going in this order:

  1. Your First Agent - turn this service into an agent-callable tool, chat with it, and learn the micro agent preflightmicro runmicro chat loop.
  2. Debugging your agent - inspect service registration, tool calls, run history, memory, provider failures, and flow handoffs when the agent does something surprising.
  3. 0→hero Reference - walk the maintained scaffold → run → chat → inspect → deploy dry-run path that proves services, agents, and workflows together.

After that first-agent path, branch out to:

Common Patterns

RPC Service

go
package main

import "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()
}

Pub/Sub Event Handler

go
import "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 {
            log.Infof("User created: %s", event.Email)
            return nil
        },
    )
    
    service.Run()
}

Publishing Events

go
publisher := micro.NewEvent("user.created", client)
publisher.Publish(ctx, &UserCreatedEvent{
    Email: "[email protected]",
})

Get Help