diff --git a/go/src/mojom/vanadium/discovery/discovery.mojom.go b/go/src/mojom/vanadium/discovery/discovery.mojom.go
index 81f1fc8..0c0393f 100644
--- a/go/src/mojom/vanadium/discovery/discovery.mojom.go
+++ b/go/src/mojom/vanadium/discovery/discovery.mojom.go
@@ -1,6 +1,6 @@
-// Copyright 2015 The Vanadium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
 
 // This file is autogenerated by:
 //     mojo/public/tools/bindings/mojom_bindings_generator.py
@@ -1123,13 +1123,14 @@
 
 type Service struct {
 	InstanceUuid  []uint8
+	InstanceName  string
 	InterfaceName string
 	Attrs         map[string]string
 	Addrs         []string
 }
 
 func (s *Service) Encode(encoder *bindings.Encoder) error {
-	encoder.StartStruct(32, 0)
+	encoder.StartStruct(40, 0)
 	if err := encoder.WritePointer(); err != nil {
 		return err
 	}
@@ -1145,6 +1146,12 @@
 	if err := encoder.WritePointer(); err != nil {
 		return err
 	}
+	if err := encoder.WriteString(s.InstanceName); err != nil {
+		return err
+	}
+	if err := encoder.WritePointer(); err != nil {
+		return err
+	}
 	if err := encoder.WriteString(s.InterfaceName); err != nil {
 		return err
 	}
@@ -1215,7 +1222,7 @@
 }
 
 var service_Versions []bindings.DataHeader = []bindings.DataHeader{
-	bindings.DataHeader{40, 0},
+	bindings.DataHeader{48, 0},
 }
 
 func (s *Service) Decode(decoder *bindings.Decoder) error {
@@ -1274,6 +1281,21 @@
 			if err != nil {
 				return err
 			}
+			s.InstanceName = value0
+		}
+	}
+	if header.ElementsOrVersion >= 0 {
+		pointer0, err := decoder.ReadPointer()
+		if err != nil {
+			return err
+		}
+		if pointer0 == 0 {
+			return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"}
+		} else {
+			value0, err := decoder.ReadString()
+			if err != nil {
+				return err
+			}
 			s.InterfaceName = value0
 		}
 	}
diff --git a/go/src/vanadium/discovery/internal/discovery.go b/go/src/vanadium/discovery/internal/discovery.go
index 59da5fa..b5a3d58 100644
--- a/go/src/vanadium/discovery/internal/discovery.go
+++ b/go/src/vanadium/discovery/internal/discovery.go
@@ -63,6 +63,7 @@
 	vService := discovery.Service{
 		InstanceUuid:  s.InstanceUuid,
 		InterfaceName: s.InterfaceName,
+		InstanceName:  s.InstanceName,
 		Attrs:         discovery.Attributes(s.Attrs),
 		Addrs:         s.Addrs,
 	}
@@ -101,6 +102,7 @@
 	return mojom.Service{
 		InstanceUuid:  s.InstanceUuid,
 		InterfaceName: s.InterfaceName,
+		InstanceName:  s.InstanceName,
 		Attrs:         s.Attrs,
 		Addrs:         s.Addrs,
 	}
@@ -137,7 +139,7 @@
 
 // Stop stops the scan.
 func (d *DiscoveryService) Stop(handle uint32) error {
-	if handle % 2 == 0 {
+	if handle%2 == 0 {
 		return d.stopScan(handle)
 	}
 	return d.stopAdvertising(handle)
diff --git a/go/src/vanadium/discovery/internal/discovery_test.go b/go/src/vanadium/discovery/internal/discovery_test.go
index 585eb48..7cc2dd2 100644
--- a/go/src/vanadium/discovery/internal/discovery_test.go
+++ b/go/src/vanadium/discovery/internal/discovery_test.go
@@ -79,7 +79,8 @@
 			"key1": "value1",
 			"key2": "value2",
 		},
-		Addrs: []string{"addr1", "addr2"},
+		InstanceName: "service1",
+		Addrs:        []string{"addr1", "addr2"},
 	}
 	id, e1, e2 := s.Advertise(testService, nil)
 
@@ -103,7 +104,8 @@
 			"key1": "value1",
 			"key2": "value2",
 		},
-		Addrs: []string{"addr1", "addr2"},
+		InstanceName: "service2",
+		Addrs:        []string{"addr1", "addr2"},
 	}
 
 	_, e1, e2 = s.Advertise(testService2, nil)
diff --git a/mojom/vanadium/discovery.mojom b/mojom/vanadium/discovery.mojom
index 1114bfe..884d129 100644
--- a/mojom/vanadium/discovery.mojom
+++ b/mojom/vanadium/discovery.mojom
@@ -9,6 +9,8 @@
     // The 128 bit (16 byte) universal unique identifier of a service instance.
 	// If this is not specified, a random UUID will be used.
 	array<uint8> InstanceUuid;
+	// Optional name of the service instance.
+	string InstanceName;
 	// The interface that the service implements.
 	// E.g., 'v.io/v23/services/vtrace.Store'.
 	string InterfaceName;
