---
layout: default
---
# Transport
The transport layer is responsible for communication between services.
## Features
- Pluggable transport implementations
- Secure and efficient communication
## Implementations
Supported transports include:
- HTTP (default)
- NATS (`go-micro.dev/v6/transport/nats`)
- gRPC (`go-micro.dev/v6/transport/grpc`)
- Memory (`go-micro.dev/v6/transport/memory`)
## Important: Transport vs Native gRPC
The gRPC **transport** uses gRPC as an underlying communication protocol, similar to how NATS or RabbitMQ might be used. It does **not** provide native gRPC compatibility with tools like `grpcurl` or standard gRPC clients generated by `protoc`.
If you need native gRPC compatibility (to use `grpcurl`, polyglot gRPC clients, etc.), you must use the gRPC **server** and **client** packages instead:
```go
import (
grpcServer "go-micro.dev/v6/server/grpc"
grpcClient "go-micro.dev/v6/client/grpc"
)
service := micro.NewService("myservice",
micro.Server(grpcServer.NewServer()),
micro.Client(grpcClient.NewClient()),
)
```
See [Native gRPC Compatibility](guides/grpc-compatibility.html) for a complete guide.
Plugins are scoped under `go-micro.dev/v6/transport/`.
You can specify the transport when initializing your service or via env vars.
## Example Usage
Here's how to use a custom transport (e.g., gRPC) in your Go Micro service:
```go
package main
import (
"go-micro.dev/v6"
"go-micro.dev/v6/transport/grpc"
)
func main() {
t := grpc.NewTransport()
service := micro.NewService("transport-example",
micro.Transport(t),
)
service.Init()
service.Run()
}
```
NATS transport:
```go
import (
"go-micro.dev/v6"
tnats "go-micro.dev/v6/transport/nats"
)
func main() {
t := tnats.NewTransport()
service := micro.NewService("transport-example", micro.Transport(t))
service.Init()
service.Run()
}
```
## Configure via environment
```bash
MICRO_TRANSPORT=nats MICRO_TRANSPORT_ADDRESS=nats://127.0.0.1:4222 go run main.go
```
Common variables:
- `MICRO_TRANSPORT`: selects the transport implementation (`http`, `nats`, `grpc`, `memory`).
- `MICRO_TRANSPORT_ADDRESS`: comma-separated list of transport addresses.