diff --git a/packages/opencode/src/cli/cmd/tui/app.tsx b/packages/opencode/src/cli/cmd/tui/app.tsx
index e939b831d..d5aef34f6 100644
--- a/packages/opencode/src/cli/cmd/tui/app.tsx
+++ b/packages/opencode/src/cli/cmd/tui/app.tsx
@@ -372,7 +372,7 @@ function App() {
dialog.replace(() => )
},
},
- ...(Flag.OPENCODE_EXPERIMENTAL_WORKSPACES_TUI
+ ...(Flag.OPENCODE_EXPERIMENTAL_WORKSPACES
? [
{
title: "Manage workspaces",
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx
index 49b2d6109..f64dbe533 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx
@@ -103,7 +103,7 @@ export function Header() {
- {Flag.OPENCODE_EXPERIMENTAL_WORKSPACES_TUI ? (
+ {Flag.OPENCODE_EXPERIMENTAL_WORKSPACES ? (
Subagent session
@@ -154,7 +154,7 @@ export function Header() {
- {Flag.OPENCODE_EXPERIMENTAL_WORKSPACES_TUI ? (
+ {Flag.OPENCODE_EXPERIMENTAL_WORKSPACES ? (
diff --git a/packages/opencode/src/control-plane/workspace-router-middleware.ts b/packages/opencode/src/control-plane/workspace-router-middleware.ts
index b48f2fd2b..463a95ef2 100644
--- a/packages/opencode/src/control-plane/workspace-router-middleware.ts
+++ b/packages/opencode/src/control-plane/workspace-router-middleware.ts
@@ -1,6 +1,5 @@
-import { Instance } from "@/project/instance"
import type { MiddlewareHandler } from "hono"
-import { Installation } from "../installation"
+import { Flag } from "../flag/flag"
import { getAdaptor } from "./adaptors"
import { Workspace } from "./workspace"
import { WorkspaceContext } from "./workspace-context"
@@ -38,7 +37,7 @@ async function routeRequest(req: Request) {
export const WorkspaceRouterMiddleware: MiddlewareHandler = async (c, next) => {
// Only available in development for now
- if (!Installation.isLocal()) {
+ if (!Flag.OPENCODE_EXPERIMENTAL_WORKSPACES) {
return next()
}
diff --git a/packages/opencode/src/flag/flag.ts b/packages/opencode/src/flag/flag.ts
index 7c48e99f4..2488e7675 100644
--- a/packages/opencode/src/flag/flag.ts
+++ b/packages/opencode/src/flag/flag.ts
@@ -57,8 +57,8 @@ export namespace Flag {
export const OPENCODE_EXPERIMENTAL_LSP_TOOL = OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_LSP_TOOL")
export const OPENCODE_DISABLE_FILETIME_CHECK = truthy("OPENCODE_DISABLE_FILETIME_CHECK")
export const OPENCODE_EXPERIMENTAL_PLAN_MODE = OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_PLAN_MODE")
- export const OPENCODE_EXPERIMENTAL_WORKSPACES_TUI =
- OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_WORKSPACES_TUI")
+ export const OPENCODE_EXPERIMENTAL_WORKSPACES =
+ OPENCODE_EXPERIMENTAL || truthy("OPENCODE_EXPERIMENTAL_WORKSPACES")
export const OPENCODE_EXPERIMENTAL_MARKDOWN = !falsy("OPENCODE_EXPERIMENTAL_MARKDOWN")
export const OPENCODE_MODELS_URL = process.env["OPENCODE_MODELS_URL"]
export const OPENCODE_MODELS_PATH = process.env["OPENCODE_MODELS_PATH"]
diff --git a/packages/opencode/test/control-plane/session-proxy-middleware.test.ts b/packages/opencode/test/control-plane/session-proxy-middleware.test.ts
index 369b9152a..c674d95ec 100644
--- a/packages/opencode/test/control-plane/session-proxy-middleware.test.ts
+++ b/packages/opencode/test/control-plane/session-proxy-middleware.test.ts
@@ -10,12 +10,22 @@ import { Database } from "../../src/storage/db"
import { resetDatabase } from "../fixture/db"
import * as adaptors from "../../src/control-plane/adaptors"
import type { Adaptor } from "../../src/control-plane/types"
+import { Flag } from "../../src/flag/flag"
afterEach(async () => {
mock.restore()
await resetDatabase()
})
+const original = Flag.OPENCODE_EXPERIMENTAL_WORKSPACES
+// @ts-expect-error don't do this normally, but it works
+Flag.OPENCODE_EXPERIMENTAL_WORKSPACES = true
+
+afterEach(() => {
+ // @ts-expect-error don't do this normally, but it works
+ Flag.OPENCODE_EXPERIMENTAL_WORKSPACES = original
+})
+
type State = {
workspace?: "first" | "second"
calls: Array<{ method: string; url: string; body?: string }>