From 416a48eb73946366f1c0136d42886d4c14721b72 Mon Sep 17 00:00:00 2001
From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com>
Date: Fri, 31 Jul 2026 13:36:44 +0200
Subject: [PATCH 1/4] Switch from sandbox to develop wording in code
---
Editor/TokenSourceComponentConfigEditor.cs | 8 ++++----
Runtime/Scripts/TokenSource/TokenSource.cs | 13 ++++++++++---
.../Scripts/TokenSource/TokenSourceComponent.cs | 6 +++---
.../TokenSource/TokenSourceComponentConfig.cs | 14 +++++++-------
4 files changed, 24 insertions(+), 17 deletions(-)
diff --git a/Editor/TokenSourceComponentConfigEditor.cs b/Editor/TokenSourceComponentConfigEditor.cs
index 03650d98..ed234714 100644
--- a/Editor/TokenSourceComponentConfigEditor.cs
+++ b/Editor/TokenSourceComponentConfigEditor.cs
@@ -25,12 +25,12 @@ public override void OnInspectorGUI()
EditorGUILayout.PropertyField(serializedObject.FindProperty("_token"));
break;
- case TokenSourceType.Sandbox:
+ case TokenSourceType.Develop:
EditorGUILayout.HelpBox(
- "Use this for development to create tokens from a sandbox token server. " +
- "\nWARNING: ONLY USE THIS OPTION FOR LOCAL DEVELOPMENT, SINCE THE SANDBOX TOKEN SERVER NEEDS NO AUTHENTICATION.",
+ "Use this for development to create tokens from a development token server. " +
+ "\nWARNING: ONLY USE THIS OPTION FOR LOCAL DEVELOPMENT, SINCE THE DEVELOPMENT TOKEN SERVER NEEDS NO AUTHENTICATION.",
MessageType.Info);
- EditorGUILayout.PropertyField(serializedObject.FindProperty("_sandboxId"));
+ EditorGUILayout.PropertyField(serializedObject.FindProperty("_tokenServerId"));
DrawConnectionOptions();
break;
diff --git a/Runtime/Scripts/TokenSource/TokenSource.cs b/Runtime/Scripts/TokenSource/TokenSource.cs
index 9c9ba09e..a83d3b76 100644
--- a/Runtime/Scripts/TokenSource/TokenSource.cs
+++ b/Runtime/Scripts/TokenSource/TokenSource.cs
@@ -184,13 +184,20 @@ private static string NullIfEmpty(string value) =>
string.IsNullOrEmpty(value) ? null : value;
}
+
+ [Obsolete("Use TokenSourceDevelop instead")]
+ public class TokenSourceSandbox : TokenSourceDevelop
+ {
+ public TokenSourceSandbox(string sandboxId) : base(sandboxId) {}
+ }
+
///
- /// Convenience preconfigured for LiveKit Cloud sandbox token servers.
+ /// Convenience preconfigured for LiveKit Cloud development token servers.
/// Intended for development and testing only — see
/// https://docs.livekit.io/frontends/build/authentication/sandbox-token-server/.
///
- public class TokenSourceSandbox : TokenSourceEndpoint
+ public class TokenSourceDevelop : TokenSourceEndpoint
{
- public TokenSourceSandbox(string sandboxId) : base("https://cloud-api.livekit.io/api/v2/sandbox/connection-details", new[] { new StringPair { key = "X-Sandbox-ID", value = sandboxId } }) {}
+ public TokenSourceDevelop(string tokenServerId) : base("https://cloud-api.livekit.io/api/v2/sandbox/connection-details", new[] { new StringPair { key = "X-Sandbox-ID", value = tokenServerId } }) {}
}
}
\ No newline at end of file
diff --git a/Runtime/Scripts/TokenSource/TokenSourceComponent.cs b/Runtime/Scripts/TokenSource/TokenSourceComponent.cs
index ebd104d6..b64342bc 100644
--- a/Runtime/Scripts/TokenSource/TokenSourceComponent.cs
+++ b/Runtime/Scripts/TokenSource/TokenSourceComponent.cs
@@ -10,7 +10,7 @@ namespace LiveKit
///
/// MonoBehaviour wrapper that builds an from an inspector-assigned
/// ScriptableObject. To skip the asset entirely, instantiate
- /// , , ,
+ /// , , ,
/// or directly at runtime.
///
public class TokenSourceComponent : MonoBehaviour
@@ -34,8 +34,8 @@ public void Awake()
switch (_config.TokenSourceType)
{
- case TokenSourceType.Sandbox:
- _tokenSource = new TokenSourceSandbox(_config.SandboxId);
+ case TokenSourceType.Develop:
+ _tokenSource = new TokenSourceDevelop(_config.TokenServerId);
break;
case TokenSourceType.Endpoint:
diff --git a/Runtime/Scripts/TokenSource/TokenSourceComponentConfig.cs b/Runtime/Scripts/TokenSource/TokenSourceComponentConfig.cs
index 28f20a5d..3a3054e0 100644
--- a/Runtime/Scripts/TokenSource/TokenSourceComponentConfig.cs
+++ b/Runtime/Scripts/TokenSource/TokenSourceComponentConfig.cs
@@ -7,7 +7,7 @@ namespace LiveKit
public enum TokenSourceType
{
Literal,
- Sandbox,
+ Develop,
Endpoint
}
@@ -27,14 +27,14 @@ public class TokenSourceComponentConfig : ScriptableObject
[SerializeField] private string _serverUrl;
[SerializeField] private string _token;
- // Sandbox fields
- [SerializeField] private string _sandboxId;
+ // Develop fields
+ [SerializeField] private string _tokenServerId;
// Endpoint fields
[SerializeField] private string _endpointUrl;
[SerializeField] private List _endpointHeaders;
- // Shared connection options (Sandbox + Endpoint)
+ // Shared connection options (Develop + Endpoint)
[SerializeField] private string _roomName;
[SerializeField] private string _participantName;
[SerializeField] private string _participantIdentity;
@@ -50,8 +50,8 @@ public class TokenSourceComponentConfig : ScriptableObject
public string ServerUrl => _serverUrl;
public string Token => _token;
- // Sandbox
- public string SandboxId => _sandboxId?.Trim('"');
+ // Develop
+ public string TokenServerId => _tokenServerId?.Trim('"');
// Endpoint
public string EndpointUrl => _endpointUrl;
@@ -70,7 +70,7 @@ public class TokenSourceComponentConfig : ScriptableObject
public bool IsValid => _tokenSourceType switch
{
TokenSourceType.Literal => !string.IsNullOrEmpty(ServerUrl) && ServerUrl.StartsWith("ws") && !string.IsNullOrEmpty(Token),
- TokenSourceType.Sandbox => !string.IsNullOrEmpty(SandboxId),
+ TokenSourceType.Develop => !string.IsNullOrEmpty(TokenServerId),
TokenSourceType.Endpoint => !string.IsNullOrEmpty(EndpointUrl),
_ => false
};
From 1c15ebe878f9b9775cf81fb51e8f06edad380aeb Mon Sep 17 00:00:00 2001
From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com>
Date: Fri, 31 Jul 2026 13:44:53 +0200
Subject: [PATCH 2/4] Rename sandbox to development token server in READMEs
Co-Authored-By: Claude Fable 5
---
README.md | 8 ++++----
Samples~/Agents/README.md | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 81af3049..1a57c6c2 100644
--- a/README.md
+++ b/README.md
@@ -137,11 +137,11 @@ To help getting started with tokens, use `TokenSourceComponent.cs` with a `Token
#### 1. Literal
Use this to pass a pregenerated server URL and token. Generate tokens via the [LiveKit CLI](https://docs.livekit.io/frontends/build/authentication/custom/#manual-token-creation) or from your [LiveKit Cloud](https://cloud.livekit.io/) project's API key page.
-#### 2. Sandbox
-For development and testing. Follow the [sandbox token server guide](https://docs.livekit.io/frontends/build/authentication/sandbox-token-server/) to enable your project's sandbox and get the sandbox ID. Optional connection fields (room name, participant name, agent name, etc.) can be configured in the inspector — leave blank for server defaults.
+#### 2. Develop
+For development and testing. Follow the [development token server guide](https://docs.livekit.io/frontends/build/authentication/sandbox-token-server/) to enable your project's development token server and get the token server ID. Optional connection fields (room name, participant name, agent name, etc.) can be configured in the inspector — leave blank for server defaults.
#### 3. Endpoint
-For production. Point to your own token endpoint URL and add any required authentication headers. Uses the same connection options as Sandbox. See the [endpoint token generation guide](https://docs.livekit.io/frontends/build/authentication/endpoint/).
+For production. Point to your own token endpoint URL and add any required authentication headers. Uses the same connection options as Develop. See the [endpoint token generation guide](https://docs.livekit.io/frontends/build/authentication/endpoint/).
#### Usage
@@ -186,7 +186,7 @@ yield return fetch;
var details = fetch.Result;
// Configurable sources accept TokenSourceFetchOptions per call:
-ITokenSourceConfigurable configurable = new TokenSourceSandbox("");
+ITokenSourceConfigurable configurable = new TokenSourceDevelop("");
// or: new TokenSourceEndpoint("https://your.token-server/api/token", headers);
var configurableFetch = configurable.FetchConnectionDetails(new TokenSourceFetchOptions { RoomName = "lobby" });
diff --git a/Samples~/Agents/README.md b/Samples~/Agents/README.md
index a7cf76eb..c7ab9bbe 100644
--- a/Samples~/Agents/README.md
+++ b/Samples~/Agents/README.md
@@ -20,9 +20,9 @@ The app is configured to connect to the LiveKit homepage agent by default, which
To switch from the default agent to your own, you first need a LiveKit agent to speak with. For a no-code setup, use the [Agent Builder](https://docs.livekit.io/agents/start/builder/). For more customization, try our starter agent for [Python](https://github.com/livekit-examples/agent-starter-python), [Node.js](https://github.com/livekit-examples/agent-starter-node), or [create your own from scratch](https://docs.livekit.io/agents/start/voice-ai/).
-Second, you need a token server. For development, the easiest option is the sandbox token server: enable it from your project's Options on the Settings page in LiveKit Cloud and copy the sandboxId.
+Second, you need a token server. For development, the easiest option is the development token server: enable it from your project's Options on the Settings page in LiveKit Cloud and copy the token server ID.
-Then create a new TokenSoureComponentConfig asset for your sandbox and reference it in the scene on the `TokenSourceComponent` script instead of the `HomepageAgent.asset`:
+Then create a new TokenSoureComponentConfig asset for your development token server and reference it in the scene on the `TokenSourceComponent` script instead of the `HomepageAgent.asset`:
### Common sample package
From da06aa74d7a3dce8cf02692c80b0ba88bccb1e8e Mon Sep 17 00:00:00 2001
From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com>
Date: Fri, 31 Jul 2026 14:02:59 +0200
Subject: [PATCH 3/4] Rename Develop to Development for token source naming
Co-Authored-By: Claude Fable 5
---
Editor/TokenSourceComponentConfigEditor.cs | 2 +-
README.md | 6 +++---
Runtime/Scripts/TokenSource/TokenSource.cs | 8 ++++----
Runtime/Scripts/TokenSource/TokenSourceComponent.cs | 6 +++---
.../Scripts/TokenSource/TokenSourceComponentConfig.cs | 10 +++++-----
5 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/Editor/TokenSourceComponentConfigEditor.cs b/Editor/TokenSourceComponentConfigEditor.cs
index ed234714..581af79c 100644
--- a/Editor/TokenSourceComponentConfigEditor.cs
+++ b/Editor/TokenSourceComponentConfigEditor.cs
@@ -25,7 +25,7 @@ public override void OnInspectorGUI()
EditorGUILayout.PropertyField(serializedObject.FindProperty("_token"));
break;
- case TokenSourceType.Develop:
+ case TokenSourceType.Development:
EditorGUILayout.HelpBox(
"Use this for development to create tokens from a development token server. " +
"\nWARNING: ONLY USE THIS OPTION FOR LOCAL DEVELOPMENT, SINCE THE DEVELOPMENT TOKEN SERVER NEEDS NO AUTHENTICATION.",
diff --git a/README.md b/README.md
index 1a57c6c2..005cf88c 100644
--- a/README.md
+++ b/README.md
@@ -137,11 +137,11 @@ To help getting started with tokens, use `TokenSourceComponent.cs` with a `Token
#### 1. Literal
Use this to pass a pregenerated server URL and token. Generate tokens via the [LiveKit CLI](https://docs.livekit.io/frontends/build/authentication/custom/#manual-token-creation) or from your [LiveKit Cloud](https://cloud.livekit.io/) project's API key page.
-#### 2. Develop
+#### 2. Development
For development and testing. Follow the [development token server guide](https://docs.livekit.io/frontends/build/authentication/sandbox-token-server/) to enable your project's development token server and get the token server ID. Optional connection fields (room name, participant name, agent name, etc.) can be configured in the inspector — leave blank for server defaults.
#### 3. Endpoint
-For production. Point to your own token endpoint URL and add any required authentication headers. Uses the same connection options as Develop. See the [endpoint token generation guide](https://docs.livekit.io/frontends/build/authentication/endpoint/).
+For production. Point to your own token endpoint URL and add any required authentication headers. Uses the same connection options as Development. See the [endpoint token generation guide](https://docs.livekit.io/frontends/build/authentication/endpoint/).
#### Usage
@@ -186,7 +186,7 @@ yield return fetch;
var details = fetch.Result;
// Configurable sources accept TokenSourceFetchOptions per call:
-ITokenSourceConfigurable configurable = new TokenSourceDevelop("");
+ITokenSourceConfigurable configurable = new TokenSourceDevelopment("");
// or: new TokenSourceEndpoint("https://your.token-server/api/token", headers);
var configurableFetch = configurable.FetchConnectionDetails(new TokenSourceFetchOptions { RoomName = "lobby" });
diff --git a/Runtime/Scripts/TokenSource/TokenSource.cs b/Runtime/Scripts/TokenSource/TokenSource.cs
index a83d3b76..91ab2e56 100644
--- a/Runtime/Scripts/TokenSource/TokenSource.cs
+++ b/Runtime/Scripts/TokenSource/TokenSource.cs
@@ -185,8 +185,8 @@ private static string NullIfEmpty(string value) =>
}
- [Obsolete("Use TokenSourceDevelop instead")]
- public class TokenSourceSandbox : TokenSourceDevelop
+ [Obsolete("Use TokenSourceDevelopment instead")]
+ public class TokenSourceSandbox : TokenSourceDevelopment
{
public TokenSourceSandbox(string sandboxId) : base(sandboxId) {}
}
@@ -196,8 +196,8 @@ public TokenSourceSandbox(string sandboxId) : base(sandboxId) {}
/// Intended for development and testing only — see
/// https://docs.livekit.io/frontends/build/authentication/sandbox-token-server/.
///
- public class TokenSourceDevelop : TokenSourceEndpoint
+ public class TokenSourceDevelopment : TokenSourceEndpoint
{
- public TokenSourceDevelop(string tokenServerId) : base("https://cloud-api.livekit.io/api/v2/sandbox/connection-details", new[] { new StringPair { key = "X-Sandbox-ID", value = tokenServerId } }) {}
+ public TokenSourceDevelopment(string tokenServerId) : base("https://cloud-api.livekit.io/api/v2/sandbox/connection-details", new[] { new StringPair { key = "X-Sandbox-ID", value = tokenServerId } }) {}
}
}
\ No newline at end of file
diff --git a/Runtime/Scripts/TokenSource/TokenSourceComponent.cs b/Runtime/Scripts/TokenSource/TokenSourceComponent.cs
index b64342bc..31f630db 100644
--- a/Runtime/Scripts/TokenSource/TokenSourceComponent.cs
+++ b/Runtime/Scripts/TokenSource/TokenSourceComponent.cs
@@ -10,7 +10,7 @@ namespace LiveKit
///
/// MonoBehaviour wrapper that builds an from an inspector-assigned
/// ScriptableObject. To skip the asset entirely, instantiate
- /// , , ,
+ /// , , ,
/// or directly at runtime.
///
public class TokenSourceComponent : MonoBehaviour
@@ -34,8 +34,8 @@ public void Awake()
switch (_config.TokenSourceType)
{
- case TokenSourceType.Develop:
- _tokenSource = new TokenSourceDevelop(_config.TokenServerId);
+ case TokenSourceType.Development:
+ _tokenSource = new TokenSourceDevelopment(_config.TokenServerId);
break;
case TokenSourceType.Endpoint:
diff --git a/Runtime/Scripts/TokenSource/TokenSourceComponentConfig.cs b/Runtime/Scripts/TokenSource/TokenSourceComponentConfig.cs
index 3a3054e0..89f2d199 100644
--- a/Runtime/Scripts/TokenSource/TokenSourceComponentConfig.cs
+++ b/Runtime/Scripts/TokenSource/TokenSourceComponentConfig.cs
@@ -7,7 +7,7 @@ namespace LiveKit
public enum TokenSourceType
{
Literal,
- Develop,
+ Development,
Endpoint
}
@@ -27,14 +27,14 @@ public class TokenSourceComponentConfig : ScriptableObject
[SerializeField] private string _serverUrl;
[SerializeField] private string _token;
- // Develop fields
+ // Development fields
[SerializeField] private string _tokenServerId;
// Endpoint fields
[SerializeField] private string _endpointUrl;
[SerializeField] private List _endpointHeaders;
- // Shared connection options (Develop + Endpoint)
+ // Shared connection options (Development + Endpoint)
[SerializeField] private string _roomName;
[SerializeField] private string _participantName;
[SerializeField] private string _participantIdentity;
@@ -50,7 +50,7 @@ public class TokenSourceComponentConfig : ScriptableObject
public string ServerUrl => _serverUrl;
public string Token => _token;
- // Develop
+ // Development
public string TokenServerId => _tokenServerId?.Trim('"');
// Endpoint
@@ -70,7 +70,7 @@ public class TokenSourceComponentConfig : ScriptableObject
public bool IsValid => _tokenSourceType switch
{
TokenSourceType.Literal => !string.IsNullOrEmpty(ServerUrl) && ServerUrl.StartsWith("ws") && !string.IsNullOrEmpty(Token),
- TokenSourceType.Develop => !string.IsNullOrEmpty(TokenServerId),
+ TokenSourceType.Development => !string.IsNullOrEmpty(TokenServerId),
TokenSourceType.Endpoint => !string.IsNullOrEmpty(EndpointUrl),
_ => false
};
From f03bcd8451a1fdc7e00a5b03d5d55be5b4f2fc4e Mon Sep 17 00:00:00 2001
From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com>
Date: Fri, 31 Jul 2026 14:24:34 +0200
Subject: [PATCH 4/4] Formerly serialized as to make alias for old assets work
---
Runtime/Scripts/TokenSource/TokenSourceComponentConfig.cs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Runtime/Scripts/TokenSource/TokenSourceComponentConfig.cs b/Runtime/Scripts/TokenSource/TokenSourceComponentConfig.cs
index 89f2d199..896e1030 100644
--- a/Runtime/Scripts/TokenSource/TokenSourceComponentConfig.cs
+++ b/Runtime/Scripts/TokenSource/TokenSourceComponentConfig.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using UnityEngine;
+using UnityEngine.Serialization;
namespace LiveKit
{
@@ -28,6 +29,7 @@ public class TokenSourceComponentConfig : ScriptableObject
[SerializeField] private string _token;
// Development fields
+ [FormerlySerializedAs("_sandboxId")]
[SerializeField] private string _tokenServerId;
// Endpoint fields