> For the complete documentation index, see [llms.txt](https://jexia.gitbook.io/semaphore/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jexia.gitbook.io/semaphore/cookbook/protocols/go-micro.md).

# Go micro

The Go micro transport implementation could be used to call [go-micro](https://github.com/micro/go-micro/) services. Basic implementations are available inside the [CLI](/semaphore/getting-started/cli.md). It is advised to implement your own custom implementation when wanting to have fine grained control over the go-micro options.

```go
package main

import (
    "github.com/jexia/maestro"
    "github.com/jexia/maestro/codec/json"
    "github.com/jexia/maestro/protocol/micro"
    "github.com/micro/go-micro/service/grpc"
)

func main() {
    // gRPC service constructor
    service := grpc.NewService()

    client, err := maestro.New(
            maestro.WithCodec(json.NewConstructor()),
            maestro.WithCaller(micro.New("micro-grpc", service)),
    )
    
    err = client.Serve()
}
```

{% hint style="info" %}
Check out the [go-micro documentation](https://go-micro.dev/) for more info
{% endhint %}
