A generic Go library for SOME/IP (Scalable service-Oriented MiddlewarE over IP). Works in automotive Ethernet stacks, zonal architectures, simulation, and testing.
The API is a stable Go interface. Implementations are swappable without changing application code.
| Package | Description | Requires |
|---|---|---|
mock |
In-process transport. Zero dependencies. Default for development and testing. | Nothing |
codec |
SOME/IP wire-frame serialization and deserialization. | Nothing |
sd |
SOME/IP Service Discovery (SOME/IP-SD). | Nothing |
udp |
Pure-Go UDP transport — unreliable unicast and multicast. | Nothing |
tcp |
Pure-Go TCP transport — reliable unicast with session management. | Nothing |
go get github.com/SoundMatt/go-SOMEIPimport (
someip "github.com/SoundMatt/go-SOMEIP"
"github.com/SoundMatt/go-SOMEIP/mock"
)
// Server side
srv, _ := mock.NewServer(someip.ServiceID(0x1234), someip.InstanceID(0x0001))
srv.RegisterMethod(someip.MethodID(0x0001), func(ctx context.Context, req someip.Message) ([]byte, error) {
return []byte("pong"), nil
})
// Client side
svc, _ := mock.NewService(someip.ServiceID(0x1234), someip.InstanceID(0x0001))
resp, _ := svc.Call(context.Background(), someip.MethodID(0x0001), []byte("ping"))
fmt.Println(string(resp.Payload)) // pongdocker compose -f docker/docker-compose.yml upSee docker/ for the full quickstart configuration.
// Development / tests — no network needed:
import "github.com/SoundMatt/go-SOMEIP/mock"
srv, _ := mock.NewServer(serviceID, instanceID)
svc, _ := mock.NewService(serviceID, instanceID)
// Production — pure-Go UDP:
import "github.com/SoundMatt/go-SOMEIP/udp"
srv, _ := udp.NewServer(someip.ServerConfig{...})
svc, _ := udp.NewService(someip.ServiceConfig{...})
// Production — pure-Go TCP (reliable):
import "github.com/SoundMatt/go-SOMEIP/tcp"
srv, _ := tcp.NewServer(someip.ServerConfig{...})
svc, _ := tcp.NewService(someip.ServiceConfig{...})| Project | Role |
|---|---|
| go-DDS | Data-centric pub/sub (DDSI-RTPS) |
| go-mqtt | IoT pub/sub (MQTT v3.1.1) |
| go-FuSa | Functional safety toolkit (ISO 26262, IEC 61508) |
| go-RCP | Remote control plane for zonal Ethernet |
Mozilla Public License v2.0 © 2026 Matt Jones