From 6eabb7efd5bf03ba5658fd4b78d47ed384086a20 Mon Sep 17 00:00:00 2001 From: skulidropek <66840575+skulidropek@users.noreply.github.com> Date: Wed, 3 Jun 2026 15:01:37 +0000 Subject: [PATCH 1/6] fix(api): mount host docker data for skiller --- docker-compose.api.yml | 2 +- docker-compose.yml | 2 +- packages/api/README.md | 18 ++++++++++-------- .../controller-resource-limits.test.ts | 16 ++++++++++++++++ 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/docker-compose.api.yml b/docker-compose.api.yml index ee1c6af6..910129f8 100644 --- a/docker-compose.api.yml +++ b/docker-compose.api.yml @@ -35,7 +35,7 @@ services: - 1.1.1.1 volumes: - docker_git_projects:${DOCKER_GIT_PROJECTS_ROOT:-/home/dev/.docker-git} - - docker_git_docker_data:/var/lib/docker + - /var/lib/docker:/var/lib/docker - /var/run/docker.sock:/var/run/docker.sock privileged: ${DOCKER_GIT_CONTROLLER_PRIVILEGED:-false} cgroup: host diff --git a/docker-compose.yml b/docker-compose.yml index ee1c6af6..910129f8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,7 +35,7 @@ services: - 1.1.1.1 volumes: - docker_git_projects:${DOCKER_GIT_PROJECTS_ROOT:-/home/dev/.docker-git} - - docker_git_docker_data:/var/lib/docker + - /var/lib/docker:/var/lib/docker - /var/run/docker.sock:/var/run/docker.sock privileged: ${DOCKER_GIT_CONTROLLER_PRIVILEGED:-false} cgroup: host diff --git a/packages/api/README.md b/packages/api/README.md index 1b1d6f91..c97ce007 100644 --- a/packages/api/README.md +++ b/packages/api/README.md @@ -12,14 +12,16 @@ This is now the intended controller plane: ## Runtime contract: host-Docker-backed `docker-git` is host-Docker-backed by default. The primary controller -container created from this package binds the host socket -(`/var/run/docker.sock:/var/run/docker.sock`, see `docker-compose.yml`) and -uses it to spawn per-project containers. `DOCKER_GIT_DOCKER_RUNTIME=isolated` -is an opt-in fallback for environments that explicitly require an embedded -controller daemon. In isolated mode, start the controller through the host CLI -or include `docker-compose.isolated.yml`; that overlay removes the host socket -bind and defaults project containers to the embedded daemon endpoint -`tcp://host.docker.internal:2375`. +container created from this package binds the host socket and Docker data root +(`/var/run/docker.sock:/var/run/docker.sock` and +`/var/lib/docker:/var/lib/docker`, see `docker-compose.yml`) and uses them to +spawn per-project containers and access the Docker volume paths reported by +`docker inspect`. `DOCKER_GIT_DOCKER_RUNTIME=isolated` is an opt-in fallback for +environments that explicitly require an embedded controller daemon. In isolated +mode, start the controller through the host CLI or include +`docker-compose.isolated.yml`; that overlay removes the host socket bind, keeps +Docker data inside the controller volume, and defaults project containers to the +embedded daemon endpoint `tcp://host.docker.internal:2375`. Security note: binding `/var/run/docker.sock` gives the controller container root-equivalent control over the host Docker daemon, including the ability to diff --git a/packages/app/tests/docker-git/controller-resource-limits.test.ts b/packages/app/tests/docker-git/controller-resource-limits.test.ts index c5e7bdae..85aec801 100644 --- a/packages/app/tests/docker-git/controller-resource-limits.test.ts +++ b/packages/app/tests/docker-git/controller-resource-limits.test.ts @@ -18,6 +18,8 @@ import { const composeFiles: ReadonlyArray = ["docker-compose.yml", "docker-compose.api.yml"] const isolatedComposeFiles: ReadonlyArray = ["docker-compose.isolated.yml", "docker-compose.api.isolated.yml"] +const hostDockerDataBind = "/var/lib/docker:/var/lib/docker" +const isolatedDockerDataVolume = "docker_git_docker_data:/var/lib/docker" const readComposeFile = (relativePath: string): Effect.Effect => Effect.gen(function*(_) { @@ -50,6 +52,13 @@ describe("controller compose resource limits", () => { const contents = yield* _(readComposeFile(composeFile)) expect(contents).toMatch(/pids_limit: \$\{DOCKER_GIT_CONTROLLER_PIDS:-\d+\}/u) })) + + it.effect("binds host Docker data root for host runtime volume path access", () => + Effect.gen(function*(_) { + const contents = yield* _(readComposeFile(composeFile)) + expect(contents).toContain(`- ${hostDockerDataBind}`) + expect(contents).not.toContain(`- ${isolatedDockerDataVolume}`) + })) }) } @@ -75,6 +84,13 @@ describe("controller compose resource limits", () => { const contents = yield* _(readComposeFile(composeFile)) expect(contents).toContain("privileged: ${DOCKER_GIT_CONTROLLER_PRIVILEGED:-true}") })) + + it.effect("keeps Docker data inside the embedded controller daemon volume", () => + Effect.gen(function*(_) { + const contents = yield* _(readComposeFile(composeFile)) + expect(contents).toContain(`- ${isolatedDockerDataVolume}`) + expect(contents).not.toContain(`- ${hostDockerDataBind}`) + })) }) } }) From b652ffb831fd982fad2f720a15f3862faf92e7fc Mon Sep 17 00:00:00 2001 From: skulidropek <66840575+skulidropek@users.noreply.github.com> Date: Wed, 3 Jun 2026 17:05:24 +0000 Subject: [PATCH 2/6] fix(api): make bundled skiller launch reproducible --- packages/api/Dockerfile | 7 ++++++ packages/api/src/services/skiller.ts | 24 +++++-------------- packages/api/tests/skiller-routes.test.ts | 9 +++++++ .../controller-resource-limits.test.ts | 12 ++++++++++ 4 files changed, 34 insertions(+), 18 deletions(-) diff --git a/packages/api/Dockerfile b/packages/api/Dockerfile index df11fd31..b8d546ab 100644 --- a/packages/api/Dockerfile +++ b/packages/api/Dockerfile @@ -121,6 +121,13 @@ RUN if [ "$DOCKER_GIT_CONTROLLER_BUILD_SKILLER" = "1" ]; then \ rm -rf /root/.bun/install/cache node_modules; \ sleep $((attempt * 2)); \ done \ + && electron_zip="$(find "${electron_config_cache:-/root/.cache/electron}" -name 'electron-v*-linux-*.zip' -print -quit)" \ + && test -n "$electron_zip" \ + && rm -rf node_modules/electron/dist node_modules/electron/path.txt \ + && mkdir -p node_modules/electron/dist \ + && unzip -q "$electron_zip" -d node_modules/electron/dist \ + && printf '%s' electron > node_modules/electron/path.txt \ + && test -x node_modules/electron/dist/electron \ && bun run build \ && touch out/.docker-git-browser-folder-picker.patch \ && mkdir -p out/preload \ diff --git a/packages/api/src/services/skiller.ts b/packages/api/src/services/skiller.ts index eadb7e6b..af2e4a41 100644 --- a/packages/api/src/services/skiller.ts +++ b/packages/api/src/services/skiller.ts @@ -363,22 +363,10 @@ const prepareSkillerScopeHome = (scope: SkillerContainerScope | null): SkillerPr return processUser } -const skillerLaunchCommand = ( - user: SkillerProcessUser | null -): readonly [string, ReadonlyArray] => - user === null - ? ["bash", ["-lc", launchScript]] - : [ - "setpriv", - [ - `--reuid=${user.uid}`, - `--regid=${user.gid}`, - "--clear-groups", - "bash", - "-lc", - launchScript - ] - ] +// Electron aborts under setpriv in the controller image even with --no-sandbox. +// Project scope still comes from explicit host paths and the browser bootstrap. +export const skillerLaunchCommand = (): readonly [string, ReadonlyArray] => + ["bash", ["-lc", launchScript]] const stopSkillerProcess = (process: SkillerProcess): void => { const pid = process.process.pid @@ -422,10 +410,10 @@ const launchSkillerProcess = ( scope: SkillerContainerScope | null ): SkillerLaunch => { mkdirSync(dirname(launchLogPath), { recursive: true }) - const processUser = prepareSkillerScopeHome(scope) + prepareSkillerScopeHome(scope) const logFd = openSync(launchLogPath, "a") try { - const [command, args] = skillerLaunchCommand(processUser) + const [command, args] = skillerLaunchCommand() const child = spawn(command, args, { cwd: skillerDir, detached: true, diff --git a/packages/api/tests/skiller-routes.test.ts b/packages/api/tests/skiller-routes.test.ts index ce58ae1d..3a6512ff 100644 --- a/packages/api/tests/skiller-routes.test.ts +++ b/packages/api/tests/skiller-routes.test.ts @@ -4,6 +4,7 @@ import { parseSkillerRoute, resolveSkillerBrowserScopeSelection, resolveSkillerRouteScopeSelection, + skillerLaunchCommand, type SkillerRoute } from "../src/services/skiller.js" import type { SkillerContainerScope } from "../src/services/skiller-core.js" @@ -31,6 +32,14 @@ const scope = (projectKey: string): SkillerContainerScope => ({ }) describe("skiller routes", () => { + it("launches Electron as the controller process user", () => { + const [command, args] = skillerLaunchCommand() + + expect(command).toBe("bash") + expect(args.join(" ")).not.toContain("setpriv") + expect(args).toContainEqual(expect.stringContaining("node_modules/electron/dist/electron")) + }) + it("keeps the terminal session id on session-scoped app routes", () => { expect(parseSkillerRoute("/api/ssh/session/terminal-proof/skiller/app/")).toEqual({ _tag: "App", diff --git a/packages/app/tests/docker-git/controller-resource-limits.test.ts b/packages/app/tests/docker-git/controller-resource-limits.test.ts index 85aec801..ce2253aa 100644 --- a/packages/app/tests/docker-git/controller-resource-limits.test.ts +++ b/packages/app/tests/docker-git/controller-resource-limits.test.ts @@ -95,6 +95,18 @@ describe("controller compose resource limits", () => { } }) +describe("controller Skiller Dockerfile", () => { + it.effect("materializes Electron binary before bundling Skiller", () => + Effect.gen(function*(_) { + const contents = yield* _(readComposeFile("packages/api/Dockerfile")) + expect(contents).toContain( + `electron_zip="$(find "\${electron_config_cache:-/root/.cache/electron}" -name 'electron-v*-linux-*.zip' -print -quit)"` + ) + expect(contents).toContain("unzip -q \"$electron_zip\" -d node_modules/electron/dist") + expect(contents).toContain("test -x node_modules/electron/dist/electron") + })) +}) + describe("controller resource limit resolution", () => { it.effect("resolves CPU and RAM defaults to 90% of host resources", () => Effect.sync(() => { From 1076ed0b8a19b8b5ec186f72294067e823b2946f Mon Sep 17 00:00:00 2001 From: skulidropek <66840575+skulidropek@users.noreply.github.com> Date: Wed, 3 Jun 2026 17:34:32 +0000 Subject: [PATCH 3/6] fix(api): address skiller review follow-ups --- packages/api/Dockerfile | 5 ++++- packages/api/tests/skiller-routes.test.ts | 7 ++++--- .../docker-git/controller-resource-limits.test.ts | 13 +++++++------ 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/packages/api/Dockerfile b/packages/api/Dockerfile index b8d546ab..726a05ab 100644 --- a/packages/api/Dockerfile +++ b/packages/api/Dockerfile @@ -122,7 +122,10 @@ RUN if [ "$DOCKER_GIT_CONTROLLER_BUILD_SKILLER" = "1" ]; then \ sleep $((attempt * 2)); \ done \ && electron_zip="$(find "${electron_config_cache:-/root/.cache/electron}" -name 'electron-v*-linux-*.zip' -print -quit)" \ - && test -n "$electron_zip" \ + && if [ -z "$electron_zip" ]; then echo "Electron zip not found in cache: ${electron_config_cache:-/root/.cache/electron}" >&2; exit 1; fi \ + && unzip -Z1 "$electron_zip" > /tmp/electron-zip-entries \ + && if grep -Eq '(^/|(^|/)\.\.($|/))' /tmp/electron-zip-entries; then echo "Unsafe paths in Electron zip: $electron_zip" >&2; exit 1; fi \ + && rm -f /tmp/electron-zip-entries \ && rm -rf node_modules/electron/dist node_modules/electron/path.txt \ && mkdir -p node_modules/electron/dist \ && unzip -q "$electron_zip" -d node_modules/electron/dist \ diff --git a/packages/api/tests/skiller-routes.test.ts b/packages/api/tests/skiller-routes.test.ts index 3a6512ff..22aaee19 100644 --- a/packages/api/tests/skiller-routes.test.ts +++ b/packages/api/tests/skiller-routes.test.ts @@ -32,12 +32,13 @@ const scope = (projectKey: string): SkillerContainerScope => ({ }) describe("skiller routes", () => { - it("launches Electron as the controller process user", () => { + it("launches Electron through the Skiller launch script", () => { const [command, args] = skillerLaunchCommand() + const launchCommand = args.join("\n") expect(command).toBe("bash") - expect(args.join(" ")).not.toContain("setpriv") - expect(args).toContainEqual(expect.stringContaining("node_modules/electron/dist/electron")) + expect(launchCommand).toContain("xvfb-run -a ./node_modules/electron/dist/electron") + expect(launchCommand).toContain("exec ./node_modules/electron/dist/electron") }) it("keeps the terminal session id on session-scoped app routes", () => { diff --git a/packages/app/tests/docker-git/controller-resource-limits.test.ts b/packages/app/tests/docker-git/controller-resource-limits.test.ts index ce2253aa..9b03314a 100644 --- a/packages/app/tests/docker-git/controller-resource-limits.test.ts +++ b/packages/app/tests/docker-git/controller-resource-limits.test.ts @@ -95,15 +95,16 @@ describe("controller compose resource limits", () => { } }) -describe("controller Skiller Dockerfile", () => { +describe("API Dockerfile Electron materialization", () => { it.effect("materializes Electron binary before bundling Skiller", () => Effect.gen(function*(_) { const contents = yield* _(readComposeFile("packages/api/Dockerfile")) - expect(contents).toContain( - `electron_zip="$(find "\${electron_config_cache:-/root/.cache/electron}" -name 'electron-v*-linux-*.zip' -print -quit)"` - ) - expect(contents).toContain("unzip -q \"$electron_zip\" -d node_modules/electron/dist") - expect(contents).toContain("test -x node_modules/electron/dist/electron") + expect(contents).toMatch(/electron_zip="\$\(find "\$\{electron_config_cache:-\/root\/\.cache\/electron\}"/u) + expect(contents).toMatch(/Electron zip not found in cache/u) + expect(contents).toMatch(/unzip -Z1 "\$electron_zip"/u) + expect(contents).toMatch(/Unsafe paths in Electron zip/u) + expect(contents).toMatch(/unzip -q "\$electron_zip" -d node_modules\/electron\/dist/u) + expect(contents).toMatch(/test -x node_modules\/electron\/dist\/electron/u) })) }) From 3d4e7d58a56a3d65c44389a743438e5db552e00c Mon Sep 17 00:00:00 2001 From: skulidropek <66840575+skulidropek@users.noreply.github.com> Date: Wed, 3 Jun 2026 19:02:03 +0000 Subject: [PATCH 4/6] fix(api): run scoped skiller as project user --- .../issue-365/skiller-dashboard.png | Bin 0 -> 92432 bytes .../skiller-projects-after-click.json | 11 + .../skiller-projects-after-click.png | Bin 0 -> 92196 bytes packages/api/src/services/skiller.ts | 220 +++++++++++++++--- packages/api/tests/skiller-routes.test.ts | 31 ++- 5 files changed, 232 insertions(+), 30 deletions(-) create mode 100644 docs/pr-screenshots/issue-365/skiller-dashboard.png create mode 100644 docs/pr-screenshots/issue-365/skiller-projects-after-click.json create mode 100644 docs/pr-screenshots/issue-365/skiller-projects-after-click.png diff --git a/docs/pr-screenshots/issue-365/skiller-dashboard.png b/docs/pr-screenshots/issue-365/skiller-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..08ef15570a6691c86c1b2e9712b6bfa480c83d9a GIT binary patch literal 92432 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

`S`dOO30gHP3Qmk>r_U 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 literal 0 HcmV?d00001 diff --git a/packages/api/src/services/skiller.ts b/packages/api/src/services/skiller.ts index af2e4a41..0158f50a 100644 --- a/packages/api/src/services/skiller.ts +++ b/packages/api/src/services/skiller.ts @@ -1,5 +1,5 @@ -import { spawn, type ChildProcess } from "node:child_process" -import { chownSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, statSync } from "node:fs" +import { spawn, spawnSync, type ChildProcess } from "node:child_process" +import { chmodSync, chownSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, statSync } from "node:fs" import { createServer } from "node:net" import { homedir } from "node:os" import { dirname, join, resolve } from "node:path" @@ -49,11 +49,25 @@ type SkillerProcess = { readonly trpcPort: number } -type SkillerProcessUser = { +export type SkillerProcessUser = { readonly gid: number readonly uid: number } +export type SkillerLaunchCommand = { + readonly args: ReadonlyArray + readonly command: string + readonly groupName?: string + readonly gid?: number + readonly uid?: number + readonly userName?: string +} + +type SkillerProcessAccount = SkillerProcessUser & { + readonly groupName: string + readonly userName: string +} + export type SkillerRoute = | { readonly _tag: "App"; readonly relativePath: string; readonly sessionId: string | null } | { readonly _tag: "Trpc"; readonly sessionId: string | null; readonly upstreamPath: string } @@ -285,7 +299,7 @@ const waitForSkillerReady = (trpcPort: number): Effect.Effect/dev/null 2>&1; then", - " exec xvfb-run -a ./node_modules/electron/dist/electron --no-sandbox out/main/index.js", + ` exec xvfb-run -a ./node_modules/electron/dist/electron ${electronLaunchFlags} out/main/index.js`, "fi", - "exec ./node_modules/electron/dist/electron --no-sandbox out/main/index.js" + `exec ./node_modules/electron/dist/electron ${electronLaunchFlags} out/main/index.js` ].join("\n") +const skillerXdgRoot = (scope: SkillerContainerScope): string => + join(scope.hostHomePath, ".docker-git", "skiller") + +const safeRuntimeKey = (value: string): string => + value.replace(/[^A-Za-z0-9._-]/gu, "_") + +const skillerRuntimeBase = "/tmp/docker-git-skiller" + +const skillerRuntimeRoot = (scope: SkillerContainerScope): string => + join(skillerRuntimeBase, safeRuntimeKey(scope.projectKey)) + +const dockerVolumeRoot = "/var/lib/docker/volumes" + const skillerHomeEnv = ( - scope: SkillerContainerScope | null + scope: SkillerContainerScope | null, + processUserName?: string ): Record => scope === null ? {} - : { - DOCKER_GIT_SKILLER_CONTAINER_HOME_PATH: scope.containerHomePath, - DOCKER_GIT_SKILLER_HOST_ENV_GLOBAL_PATH: scope.hostEnvGlobalPath, - HOME: scope.hostHomePath, - USER: scope.sshUser, - XDG_CACHE_HOME: join(scope.hostHomePath, ".cache"), - XDG_CONFIG_HOME: join(scope.hostHomePath, ".config"), - XDG_DATA_HOME: join(scope.hostHomePath, ".local", "share") - } + : (() => { + const runtimeRoot = skillerRuntimeRoot(scope) + const userName = processUserName ?? scope.sshUser + return { + DOCKER_GIT_SKILLER_CONTAINER_HOME_PATH: scope.containerHomePath, + DOCKER_GIT_SKILLER_HOST_ENV_GLOBAL_PATH: scope.hostEnvGlobalPath, + HOME: join(runtimeRoot, "home"), + LOGNAME: userName, + USER: userName, + XDG_CACHE_HOME: join(runtimeRoot, "cache"), + XDG_CONFIG_HOME: join(runtimeRoot, "config"), + XDG_DATA_HOME: join(runtimeRoot, "data"), + XDG_RUNTIME_DIR: join(runtimeRoot, "runtime") + } + })() const scopedProcessUser = ( scope: SkillerContainerScope | null @@ -328,12 +373,45 @@ const scopedProcessUser = ( return { gid: stats.gid, uid: stats.uid } } -const ensureOwnedDirectory = (path: string, user: SkillerProcessUser): void => { - mkdirSync(path, { recursive: true }) +const ensureOwnedDirectory = (path: string, user: SkillerProcessUser, mode?: number): void => { + mkdirSync(path, { mode, recursive: true }) const stats = statSync(path) if (stats.uid !== user.uid || stats.gid !== user.gid) { chownSync(path, user.uid, user.gid) } + if (mode !== undefined) { + chmodSync(path, mode) + } +} + +const ensureDirectoryMode = (path: string, mode: number): void => { + mkdirSync(path, { mode, recursive: true }) + chmodSync(path, mode) +} + +const ensureOtherExecute = (path: string): void => { + const stats = statSync(path) + const mode = stats.mode & 0o7777 + if (stats.isDirectory() && (mode & 0o001) === 0) { + chmodSync(path, mode | 0o001) + } +} + +const ensureKnownDockerVolumeTraverse = (path: string): void => { + const normalizedRoot = `${dockerVolumeRoot}/` + if (!path.startsWith(normalizedRoot)) { + return + } + // Docker data dirs are often 0710 root:root; non-root Skiller only needs + // execute on known ancestors to stat an already-selected project path. + let current = "/var/lib/docker" + ensureOtherExecute(current) + for (const part of path.slice(current.length + 1).split("/").slice(0, -1)) { + current = join(current, part) + if (existsSync(current)) { + ensureOtherExecute(current) + } + } } const chownIfExists = (path: string, user: SkillerProcessUser): void => { @@ -358,15 +436,102 @@ const prepareSkillerScopeHome = (scope: SkillerContainerScope | null): SkillerPr ensureOwnedDirectory(join(scope.hostHomePath, ".cache"), processUser) ensureOwnedDirectory(join(scope.hostHomePath, ".local", "share"), processUser) ensureOwnedDirectory(join(scope.hostHomePath, ".skiller"), processUser) + ensureOwnedDirectory(join(scope.hostHomePath, ".docker-git"), processUser) + ensureOwnedDirectory(skillerXdgRoot(scope), processUser) + ensureOwnedDirectory(join(skillerXdgRoot(scope), "cache"), processUser) + ensureOwnedDirectory(join(skillerXdgRoot(scope), "config"), processUser) + ensureOwnedDirectory(join(skillerXdgRoot(scope), "data"), processUser) + ensureOwnedDirectory(join(skillerXdgRoot(scope), "runtime"), processUser, 0o700) + ensureDirectoryMode(skillerRuntimeBase, 0o711) + ensureOwnedDirectory(skillerRuntimeRoot(scope), processUser, 0o700) + ensureOwnedDirectory(join(skillerRuntimeRoot(scope), "home"), processUser, 0o700) + ensureOwnedDirectory(join(skillerRuntimeRoot(scope), "cache"), processUser, 0o700) + ensureOwnedDirectory(join(skillerRuntimeRoot(scope), "config"), processUser, 0o700) + ensureOwnedDirectory(join(skillerRuntimeRoot(scope), "data"), processUser, 0o700) + ensureOwnedDirectory(join(skillerRuntimeRoot(scope), "runtime"), processUser, 0o700) + ensureKnownDockerVolumeTraverse(scope.hostHomePath) + ensureKnownDockerVolumeTraverse(scope.hostCodexSkillsPath) + ensureKnownDockerVolumeTraverse(scope.hostProjectPath) chownIfExists(join(scope.hostHomePath, ".codex", "config.toml"), processUser) chownIfExists(join(scope.hostHomePath, ".skiller", "config.toml"), processUser) return processUser } -// Electron aborts under setpriv in the controller image even with --no-sandbox. -// Project scope still comes from explicit host paths and the browser bootstrap. -export const skillerLaunchCommand = (): readonly [string, ReadonlyArray] => - ["bash", ["-lc", launchScript]] +const nameForId = ( + contents: string, + id: number, + idFieldIndex: number +): string | null => { + for (const line of contents.split(/\r?\n/u)) { + const fields = line.split(":") + const name = fields[0] + const rawId = fields[idFieldIndex] + if (name === undefined || rawId === undefined) { + continue + } + if (Number.parseInt(rawId, 10) === id) { + return name + } + } + return null +} + +const resolveSkillerProcessAccount = (user: SkillerProcessUser): SkillerProcessAccount => { + if (user.uid === 0 || user.gid === 0) { + throw new Error("Refusing to launch scoped Skiller as root; selected container home is root-owned.") + } + const userName = nameForId(readFileSync("/etc/passwd", "utf8"), user.uid, 2) + if (userName === null) { + throw new Error(`Cannot launch scoped Skiller: no local passwd entry for UID ${user.uid}.`) + } + const groupName = nameForId(readFileSync("/etc/group", "utf8"), user.gid, 2) + if (groupName === null) { + throw new Error(`Cannot launch scoped Skiller: no local group entry for GID ${user.gid}.`) + } + return { ...user, groupName, userName } +} + +export const skillerLaunchCommand = ( + user: SkillerProcessUser | null, + resolveAccount: (user: SkillerProcessUser) => SkillerProcessAccount = resolveSkillerProcessAccount +): SkillerLaunchCommand => { + if (user === null) { + return { args: ["-c", electronLaunchScript], command: "bash" } + } + const account = resolveAccount(user) + return { + args: [ + "--preserve-environment", + "-u", + account.userName, + "-g", + account.groupName, + "--", + "bash", + "-c", + electronLaunchScript + ], + command: "runuser", + gid: account.gid, + groupName: account.groupName, + uid: account.uid, + userName: account.userName + } +} + +const prepareSkillerRuntime = (skillerDir: string, logFd: number): void => { + const result = spawnSync("bash", ["-c", prepareLaunchScript], { + cwd: skillerDir, + env: process.env, + stdio: ["ignore", logFd, logFd] + }) + if (result.error !== undefined) { + throw result.error + } + if (result.status !== 0) { + throw new Error(`Skiller runtime preparation failed with exit code ${result.status ?? `signal ${result.signal}`}.`) + } +} const stopSkillerProcess = (process: SkillerProcess): void => { const pid = process.process.pid @@ -410,18 +575,19 @@ const launchSkillerProcess = ( scope: SkillerContainerScope | null ): SkillerLaunch => { mkdirSync(dirname(launchLogPath), { recursive: true }) - prepareSkillerScopeHome(scope) + const processUser = prepareSkillerScopeHome(scope) const logFd = openSync(launchLogPath, "a") try { - const [command, args] = skillerLaunchCommand() - const child = spawn(command, args, { + prepareSkillerRuntime(skillerDir, logFd) + const launchCommand = skillerLaunchCommand(processUser) + const child = spawn(launchCommand.command, launchCommand.args, { cwd: skillerDir, detached: true, env: { ...process.env, AGENTSKILLS_TRPC_PORT: String(trpcPort), ELECTRON_ENABLE_LOGGING: "1", - ...skillerHomeEnv(scope) + ...skillerHomeEnv(scope, launchCommand.userName) }, stdio: ["ignore", logFd, logFd] }) diff --git a/packages/api/tests/skiller-routes.test.ts b/packages/api/tests/skiller-routes.test.ts index 22aaee19..c08a3a1d 100644 --- a/packages/api/tests/skiller-routes.test.ts +++ b/packages/api/tests/skiller-routes.test.ts @@ -33,12 +33,37 @@ const scope = (projectKey: string): SkillerContainerScope => ({ describe("skiller routes", () => { it("launches Electron through the Skiller launch script", () => { - const [command, args] = skillerLaunchCommand() - const launchCommand = args.join("\n") + const launch = skillerLaunchCommand(null) + const launchCommand = launch.args.join("\n") - expect(command).toBe("bash") + expect(launch.command).toBe("bash") + expect(launch.args).toContain("-c") expect(launchCommand).toContain("xvfb-run -a ./node_modules/electron/dist/electron") expect(launchCommand).toContain("exec ./node_modules/electron/dist/electron") + expect(launchCommand).toContain("--disable-dev-shm-usage") + }) + + it("launches scoped Skiller with the selected home owner credentials", () => { + const launch = skillerLaunchCommand( + { gid: 1000, uid: 1000 }, + (user) => ({ ...user, groupName: "ubuntu", userName: "ubuntu" }) + ) + + expect(launch.command).toBe("runuser") + expect(launch.args).toEqual(expect.arrayContaining([ + "--preserve-environment", + "-u", + "ubuntu", + "-g", + "ubuntu", + "--", + "bash", + "-c" + ])) + expect(launch.gid).toBe(1000) + expect(launch.groupName).toBe("ubuntu") + expect(launch.uid).toBe(1000) + expect(launch.userName).toBe("ubuntu") }) it("keeps the terminal session id on session-scoped app routes", () => { From f5cdf39ebd5d3c5f76d5e3ce786bbec3048cb25c Mon Sep 17 00:00:00 2001 From: skulidropek <66840575+skulidropek@users.noreply.github.com> Date: Wed, 3 Jun 2026 19:59:10 +0000 Subject: [PATCH 5/6] fix skiller launch review issues --- packages/api/src/services/skiller.ts | 128 ++++++++++++++++++---- packages/api/tests/skiller-routes.test.ts | 8 ++ 2 files changed, 113 insertions(+), 23 deletions(-) diff --git a/packages/api/src/services/skiller.ts b/packages/api/src/services/skiller.ts index 0158f50a..c0168f44 100644 --- a/packages/api/src/services/skiller.ts +++ b/packages/api/src/services/skiller.ts @@ -1,4 +1,4 @@ -import { spawn, spawnSync, type ChildProcess } from "node:child_process" +import { spawn, type ChildProcess, type SpawnOptions } from "node:child_process" import { chmodSync, chownSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, statSync } from "node:fs" import { createServer } from "node:net" import { homedir } from "node:os" @@ -188,6 +188,24 @@ const sleep = (durationMs: number): Promise => setTimeout(resolve, durationMs) }) +const runProcess = ( + command: string, + args: ReadonlyArray, + options: SpawnOptions = {} +): Promise => + new Promise((resolve, reject) => { + const child = spawn(command, [...args], options) + child.once("error", reject) + child.once("exit", (exitCode, signal) => { + if (exitCode === 0) { + resolve() + return + } + const reason = exitCode === null ? `signal ${signal}` : `exit code ${exitCode}` + reject(new Error(`${command} ${args.join(" ")} failed with ${reason}.`)) + }) + }) + const containerHomePath = (sshUser: string): string => `/home/${sshUser}` const inspectContainerMounts = ( @@ -310,7 +328,10 @@ const prepareLaunchScript = [ " mkdir -p out", " touch \"$DOCKER_GIT_SKILLER_PATCH_MARKER\"", "fi", - "if [ ! -e out/preload/index.js ]; then ln -sf index.mjs out/preload/index.js; fi" + "if [ ! -e out/preload/index.js ]; then", + " mkdir -p out/preload", + " ln -sf index.mjs out/preload/index.js", + "fi" ].join("\n") const electronLaunchFlags = [ @@ -476,19 +497,84 @@ const nameForId = ( return null } +const localUserNameForUid = (uid: number): string | null => + nameForId(readFileSync("/etc/passwd", "utf8"), uid, 2) + +const localGroupNameForGid = (gid: number): string | null => + nameForId(readFileSync("/etc/group", "utf8"), gid, 2) + +const skillerUserNameForUid = (uid: number): string => `dg-skiller-u${uid}` + +const skillerGroupNameForGid = (gid: number): string => `dg-skiller-g${gid}` + const resolveSkillerProcessAccount = (user: SkillerProcessUser): SkillerProcessAccount => { if (user.uid === 0 || user.gid === 0) { throw new Error("Refusing to launch scoped Skiller as root; selected container home is root-owned.") } - const userName = nameForId(readFileSync("/etc/passwd", "utf8"), user.uid, 2) - if (userName === null) { - throw new Error(`Cannot launch scoped Skiller: no local passwd entry for UID ${user.uid}.`) + const userName = localUserNameForUid(user.uid) ?? skillerUserNameForUid(user.uid) + const groupName = localGroupNameForGid(user.gid) ?? skillerGroupNameForGid(user.gid) + return { ...user, groupName, userName } +} + +const ensureLocalGroup = async (gid: number, groupName: string): Promise => { + if (localGroupNameForGid(gid) !== null) { + return } - const groupName = nameForId(readFileSync("/etc/group", "utf8"), user.gid, 2) - if (groupName === null) { - throw new Error(`Cannot launch scoped Skiller: no local group entry for GID ${user.gid}.`) + try { + await runProcess("groupadd", ["--gid", String(gid), groupName]) + } catch (error) { + if (localGroupNameForGid(gid) !== null) { + return + } + throw error + } + if (localGroupNameForGid(gid) === null) { + throw new Error(`Cannot launch scoped Skiller: failed to create local group entry for GID ${gid}.`) } - return { ...user, groupName, userName } +} + +const ensureLocalUser = async ( + user: SkillerProcessUser, + userName: string, + groupName: string +): Promise => { + if (localUserNameForUid(user.uid) !== null) { + return + } + try { + await runProcess("useradd", [ + "--uid", + String(user.uid), + "--gid", + groupName, + "--no-create-home", + "--home-dir", + "/nonexistent", + "--shell", + "/bin/false", + userName + ]) + } catch (error) { + if (localUserNameForUid(user.uid) !== null) { + return + } + throw error + } + if (localUserNameForUid(user.uid) === null) { + throw new Error(`Cannot launch scoped Skiller: failed to create local passwd entry for UID ${user.uid}.`) + } +} + +const ensureSkillerProcessAccount = async ( + user: SkillerProcessUser | null +): Promise => { + if (user === null) { + return null + } + const account = resolveSkillerProcessAccount(user) + await ensureLocalGroup(account.gid, account.groupName) + await ensureLocalUser(account, account.userName, account.groupName) + return resolveSkillerProcessAccount(user) } export const skillerLaunchCommand = ( @@ -519,19 +605,12 @@ export const skillerLaunchCommand = ( } } -const prepareSkillerRuntime = (skillerDir: string, logFd: number): void => { - const result = spawnSync("bash", ["-c", prepareLaunchScript], { +const prepareSkillerRuntime = (skillerDir: string, logFd: number): Promise => + runProcess("bash", ["-c", prepareLaunchScript], { cwd: skillerDir, env: process.env, stdio: ["ignore", logFd, logFd] }) - if (result.error !== undefined) { - throw result.error - } - if (result.status !== 0) { - throw new Error(`Skiller runtime preparation failed with exit code ${result.status ?? `signal ${result.signal}`}.`) - } -} const stopSkillerProcess = (process: SkillerProcess): void => { const pid = process.process.pid @@ -569,17 +648,20 @@ const registerSkillerProject = ( } }) -const launchSkillerProcess = ( +const launchSkillerProcess = async ( skillerDir: string, trpcPort: number, scope: SkillerContainerScope | null -): SkillerLaunch => { +): Promise => { mkdirSync(dirname(launchLogPath), { recursive: true }) const processUser = prepareSkillerScopeHome(scope) const logFd = openSync(launchLogPath, "a") try { - prepareSkillerRuntime(skillerDir, logFd) - const launchCommand = skillerLaunchCommand(processUser) + const processAccount = await ensureSkillerProcessAccount(processUser) + await prepareSkillerRuntime(skillerDir, logFd) + const launchCommand = processAccount === null + ? skillerLaunchCommand(null) + : skillerLaunchCommand(processAccount, () => processAccount) const child = spawn(launchCommand.command, launchCommand.args, { cwd: skillerDir, detached: true, @@ -673,7 +755,7 @@ export const openSkiller = ( }), try: () => findAvailablePort(skillerPreferredTrpcPort) })) - const launch = yield* _(Effect.try({ + const launch = yield* _(Effect.tryPromise({ catch: (cause) => new ApiInternalError({ message: "Failed to launch Skiller.", cause diff --git a/packages/api/tests/skiller-routes.test.ts b/packages/api/tests/skiller-routes.test.ts index c08a3a1d..dbe95bb2 100644 --- a/packages/api/tests/skiller-routes.test.ts +++ b/packages/api/tests/skiller-routes.test.ts @@ -66,6 +66,14 @@ describe("skiller routes", () => { expect(launch.userName).toBe("ubuntu") }) + it("uses deterministic scoped account names for missing local UID and GID entries", () => { + const launch = skillerLaunchCommand({ gid: 2_147_483_002, uid: 2_147_483_001 }) + + expect(launch.command).toBe("runuser") + expect(launch.groupName).toBe("dg-skiller-g2147483002") + expect(launch.userName).toBe("dg-skiller-u2147483001") + }) + it("keeps the terminal session id on session-scoped app routes", () => { expect(parseSkillerRoute("/api/ssh/session/terminal-proof/skiller/app/")).toEqual({ _tag: "App", From 61ec4a9f8d04c3268b3ea2679bb06555c4640f96 Mon Sep 17 00:00:00 2001 From: skulidropek <66840575+skulidropek@users.noreply.github.com> Date: Wed, 3 Jun 2026 20:22:18 +0000 Subject: [PATCH 6/6] add skiller process timeout --- packages/api/src/services/skiller.ts | 93 +++++++++++++++++++++-- packages/api/tests/skiller-routes.test.ts | 10 +++ 2 files changed, 95 insertions(+), 8 deletions(-) diff --git a/packages/api/src/services/skiller.ts b/packages/api/src/services/skiller.ts index c0168f44..a8b49450 100644 --- a/packages/api/src/services/skiller.ts +++ b/packages/api/src/services/skiller.ts @@ -188,22 +188,99 @@ const sleep = (durationMs: number): Promise => setTimeout(resolve, durationMs) }) -const runProcess = ( +const defaultRunProcessTimeoutMs = 300_000 + +export class SkillerProcessTimeoutError extends Error { + readonly args: ReadonlyArray + readonly command: string + override readonly name = "SkillerProcessTimeoutError" + readonly timeoutMs: number + + constructor( + command: string, + args: ReadonlyArray, + timeoutMs: number, + cause?: Error + ) { + super( + `${command} ${args.join(" ")} timed out after ${timeoutMs}ms.`, + cause === undefined ? undefined : { cause } + ) + this.args = args + this.command = command + this.timeoutMs = timeoutMs + } +} + +export const runProcess = ( command: string, args: ReadonlyArray, - options: SpawnOptions = {} + options: SpawnOptions = {}, + timeoutMs: number = defaultRunProcessTimeoutMs ): Promise => new Promise((resolve, reject) => { - const child = spawn(command, [...args], options) - child.once("error", reject) - child.once("exit", (exitCode, signal) => { + const timeoutController = new AbortController() + let settled = false + let timer: ReturnType | null = null + let timeoutError: SkillerProcessTimeoutError | null = null + + const child = spawn(command, [...args], { ...options, signal: timeoutController.signal }) + + const cleanup = (): void => { + if (timer !== null) { + clearTimeout(timer) + timer = null + } + child.off("error", onError) + child.off("exit", onExit) + } + + const resolveOnce = (): void => { + if (settled) { + return + } + settled = true + cleanup() + resolve() + } + + const rejectOnce = (error: Error): void => { + if (settled) { + return + } + settled = true + cleanup() + reject(error) + } + + const onError = (error: Error): void => { + rejectOnce( + timeoutError === null + ? error + : new SkillerProcessTimeoutError(command, args, timeoutMs, error) + ) + } + + const onExit = (exitCode: number | null, signal: string | null): void => { + if (timeoutError !== null) { + rejectOnce(timeoutError) + return + } if (exitCode === 0) { - resolve() + resolveOnce() return } const reason = exitCode === null ? `signal ${signal}` : `exit code ${exitCode}` - reject(new Error(`${command} ${args.join(" ")} failed with ${reason}.`)) - }) + rejectOnce(new Error(`${command} ${args.join(" ")} failed with ${reason}.`)) + } + + child.once("error", onError) + child.once("exit", onExit) + timer = setTimeout(() => { + timeoutError = new SkillerProcessTimeoutError(command, args, timeoutMs) + timeoutController.abort(timeoutError) + child.kill("SIGTERM") + }, timeoutMs) }) const containerHomePath = (sshUser: string): string => `/home/${sshUser}` diff --git a/packages/api/tests/skiller-routes.test.ts b/packages/api/tests/skiller-routes.test.ts index dbe95bb2..da7ec13d 100644 --- a/packages/api/tests/skiller-routes.test.ts +++ b/packages/api/tests/skiller-routes.test.ts @@ -4,6 +4,8 @@ import { parseSkillerRoute, resolveSkillerBrowserScopeSelection, resolveSkillerRouteScopeSelection, + runProcess, + SkillerProcessTimeoutError, skillerLaunchCommand, type SkillerRoute } from "../src/services/skiller.js" @@ -74,6 +76,14 @@ describe("skiller routes", () => { expect(launch.userName).toBe("dg-skiller-u2147483001") }) + it("fails stalled child processes with a distinct timeout error", () => + expect(runProcess( + process.execPath, + ["-e", "setTimeout(() => undefined, 1_000)"], + {}, + 25 + )).rejects.toBeInstanceOf(SkillerProcessTimeoutError)) + it("keeps the terminal session id on session-scoped app routes", () => { expect(parseSkillerRoute("/api/ssh/session/terminal-proof/skiller/app/")).toEqual({ _tag: "App",