humanish 0.98.0 → 0.99.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -41,7 +41,7 @@ Choose how the participant runs:
41
41
  | Route | Participant authentication | Desktop | Automatic findings |
42
42
  | --- | --- | --- | --- |
43
43
  | `first-run` preview | None; synthetic evidence only | None | No model analysis |
44
- | [Local browser study](docs/architecture/local-browser-runtime.md) | Codex ChatGPT login; remote inference | Linux x64 + Docker + KVM; no E2B key | Separate Codex account analyst by default |
44
+ | [Local browser study](docs/architecture/local-browser-runtime.md) | Codex ChatGPT login; remote inference | Linux x64 + Docker/KVM or M3+ Mac + Lima; no E2B key | Separate Codex account analyst by default |
45
45
  | `openai-computer-use` | `OPENAI_API_KEY` | `E2B_API_KEY` + desktop SDK | Separate OpenAI request |
46
46
  | [`local-agent`](https://humanish.dev/docs/local-agents) | Codex or Claude Code's own login | `E2B_API_KEY` + desktop SDK | Still needs `OPENAI_API_KEY`; skipped without it |
47
47
 
@@ -52,7 +52,8 @@ your lab; installing Codex does not change an `openai-computer-use` lab.
52
52
  For local browsers, install only `humanish` and follow the
53
53
  [local study setup](docs/architecture/local-browser-runtime.md). The first live
54
54
  run downloads a verified runtime image; `npx humanish runtime setup` prepares it
55
- ahead of time. Mac/Lima, local inboxes and local media are not integrated yet.
55
+ ahead of time. Supported Macs use Lima instead of Docker Desktop. Local inboxes
56
+ and local camera/microphone support remain follow-ups.
56
57
 
57
58
  **Run a live study with the API route.** Set the desktop and model keys with hidden prompts, then
58
59
  send one synthetic participant into the included drawDB study:
@@ -67,7 +67,7 @@ export async function labSetupChecks(args) {
67
67
  if (analysis?.provider === "codex") {
68
68
  const readiness = await checkAccount();
69
69
  const recovery = readiness.errorCode === "codex_unsupported_platform"
70
- ? "Use a Linux x64 host for this qualified account route, or explicitly select provider: openai with an API key."
70
+ ? "Use Linux x64 or the Apple Silicon Mac with a supported Codex CLI, or explicitly select provider: openai with an API key."
71
71
  : readiness.errorCode === "codex_busy"
72
72
  ? "Another restricted Codex analyst or setup check is active in this process. Wait for it to finish, then retry."
73
73
  : "Install the qualified CLI and sign in with a ChatGPT account.";
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-lab.js","sourceRoot":"","sources":["../src/doctor-lab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAA2B,MAAM,oBAAoB,CAAC;AAKjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAIxD,sGAAsG;AACtG,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAMpC;IACC,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IAC7H,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;IAClE,MAAM,MAAM,GAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI;YACpD,OAAO,EAAE,GAAG,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,WAAW,MAAM,OAAO,MAAM,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3I,IAAI,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IACxD,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzD,IAAI,WAAW;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IACnI,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACtF,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,gBAAmF,CAAC;IACxF,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,KAAK,EAAE,GAAsB,EAAE,EAAE,CAChH,CAAC,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC,qCAAqC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC/H,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACnE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjF,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,EAAE,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,KAAK,IAAI;gBAC7G,CAAC,CAAC,mFAAmF;gBACrF,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACxB,CAAC,CAAC,WAAW,IAAI,wHAAwH;oBACzI,CAAC,CAAC,yKAAyK,EAAE,CAAC,CAAC;IACnL,CAAC;IACD,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,aAAa,CAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EACpF,mKAAmK,EAAE,CAAC,CAAC;IAC3K,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,aAAa,EAAE,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,OAAO,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QAC7D,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kCAAkC,EAAE,EAAE,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK;oBACnG,CAAC,CAAC,gLAAgL;oBAClL,CAAC,CAAC,iDAAiD,SAAS,CAAC,SAAS,4HAA4H,EAAE,CAAC,CAAC;QAC1M,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kCAAkC,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,KAAK,eAAe,EAAE,OAAO,EACxG,KAAK,EAAE,UAAU,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,mHAAmH;oBACvK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,iBAAiB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,qCAAqC,WAAW,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,+CAA+C;wBAC5P,CAAC,CAAC,GAAG,MAAM,qHAAqH,EAAE,CAAC,CAAC;QAC5I,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAC9E,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,qBAAqB,EAAE,EAAE,OAAO,EAClF,wKAAwK,EAAE,CAAC,CAAC;IAChL,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EACvG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,2EAA2E,EAAE,CAAC,CAAC;IAClK,CAAC;IACD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3E,IAAI,QAAQ,EAAE,QAAQ,KAAK,OAAO,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,KAAK,4BAA4B;YACnE,CAAC,CAAC,+GAA+G;YACjH,CAAC,CAAC,SAAS,CAAC,SAAS,KAAK,YAAY;gBACtC,CAAC,CAAC,+GAA+G;gBACjH,CAAC,CAAC,+DAA+D,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK;gBACpF,CAAC,CAAC,6PAA6P;gBAC/P,CAAC,CAAC,0CAA0C,SAAS,CAAC,SAAS,IAAI,mBAAmB,MAAM,QAAQ,iEAAiE,EAAE,CAAC,CAAC;IAC7K,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBAC3F,CAAC,CAAC,sHAAsH,QAAQ,CAAC,UAAU,+IAA+I;gBAC1R,CAAC,CAAC,wLAAwL,EAAE,CAAC,CAAC;IAClM,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO;YAClF,CAAC,CAAC,oOAAoO;YACtO,CAAC,CAAC,wJAAwJ,EAAE,CAAC,CAAC;IAChK,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACnC,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,kBAAkB,CAChC,MAAiB,EACjB,OAAmB,EACnB,MAAe,EACf,UAAqC;IAErC,IAAI,MAAM,IAAI,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACxF,0EAA0E;IAC1E,MAAM,OAAO,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;WACzH,OAAO,KAAK,UAAU,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,IAAI,OAAO,KAAK,UAAU;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;SACnG,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,aAAa,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1I,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAiB,EAAE,OAAmB;IACjE,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,+GAA+G,CAAC;IAClK,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,kIAAkI,CAAC;IAClK,IAAI,OAAO,KAAK,WAAW;QAAE,OAAO,oGAAoG,CAAC;IACzI,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,qBAAqB;QAAE,OAAO,iIAAiI,CAAC;IACnO,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"doctor-lab.js","sourceRoot":"","sources":["../src/doctor-lab.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,15 @@
1
- import { execFile } from "node:child_process";
2
1
  import { randomUUID } from "node:crypto";
3
2
  import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
4
3
  import { connect, createServer } from "node:net";
5
- import { tmpdir } from "node:os";
6
4
  import path from "node:path";
7
5
  import { setTimeout as delay } from "node:timers/promises";
8
- import { promisify } from "node:util";
9
6
  import { connectGuestBootstrap } from "./guest-bootstrap.js";
10
7
  import { ownDesktopAllocation } from "./desktop-session.js";
11
- const exec = promisify(execFile);
12
- const docker = async (args) => (await exec("docker", args, {
13
- timeout: 60_000, maxBuffer: 1024 * 1024
14
- })).stdout.trim();
8
+ import { runtimeDocker, runtimeExec, usesLima } from "./local-runtime-host.js";
9
+ import { openLimaTunnel } from "./local-runtime-ssh.js";
10
+ const docker = async (args) => (await runtimeDocker(args, {}, 60_000)).stdout.trim();
15
11
  const readLogs = async (id) => {
16
- const result = await exec("docker", ["logs", "--tail", "100", id], { timeout: 10_000, maxBuffer: 1024 * 1024 });
12
+ const result = await runtimeDocker(["logs", "--tail", "100", id], {}, 10_000);
17
13
  return result.stdout + result.stderr;
18
14
  };
19
15
  /** One VM and an opaque TCP forward to the explicitly selected loopback app. */
@@ -26,15 +22,17 @@ export async function createLocalFirecrackerDesktop(options) {
26
22
  options.signal?.throwIfAborted();
27
23
  await mkdir(options.outputRoot, { recursive: true, mode: 0o700 });
28
24
  // Unix socket paths have a small fixed limit; project paths may be much longer.
29
- const work = await mkdtemp(path.join(tmpdir(), "humanish-fc-"));
25
+ const work = await mkdtemp("/tmp/humanish-fc-");
26
+ const lima = usesLima();
30
27
  const sockets = new Set();
31
28
  let container;
32
29
  let client;
33
30
  const stop = new AbortController();
34
31
  const signal = options.signal ? AbortSignal.any([options.signal, stop.signal]) : stop.signal;
35
- const socketRoot = path.join(work, "vm");
36
- const cidfile = path.join(work, "container-id");
37
- await mkdir(socketRoot, { mode: 0o700 });
32
+ let remoteWork;
33
+ let tunnel;
34
+ let socketRoot = path.join(work, "vm"), cidfile = path.join(work, "container-id");
35
+ let controlSocket = path.join(socketRoot, "vsock.sock");
38
36
  const forward = createServer(incoming => {
39
37
  if (signal.aborted) {
40
38
  incoming.destroy();
@@ -62,7 +60,7 @@ export async function createLocalFirecrackerDesktop(options) {
62
60
  options.signal?.removeEventListener("abort", aborted);
63
61
  // Docker can create the container before its command's reply is interrupted.
64
62
  // Only this invocation's private cidfile is cleanup authority.
65
- container ??= await readFile(cidfile, "utf8").then(value => /^[a-f0-9]{64}$/.test(value.trim()) ? value.trim() : undefined, () => undefined);
63
+ container ??= await (lima ? runtimeExec("cat", [cidfile]).then(result => result.stdout) : readFile(cidfile, "utf8")).then(value => /^[a-f0-9]{64}$/.test(value.trim()) ? value.trim() : undefined, () => undefined);
66
64
  if (container) {
67
65
  try {
68
66
  await docker(["rm", "--force", "--volumes", container]);
@@ -73,7 +71,11 @@ export async function createLocalFirecrackerDesktop(options) {
73
71
  return { status: "unconfirmed", reason: "release_failed" };
74
72
  }
75
73
  }
74
+ if (tunnel && !await tunnel.close())
75
+ return { status: "unconfirmed", reason: "release_failed" };
76
76
  try {
77
+ if (remoteWork)
78
+ await runtimeExec("rm", ["-rf", "--", remoteWork]);
77
79
  await rm(work, { recursive: true, force: true });
78
80
  }
79
81
  catch {
@@ -83,10 +85,24 @@ export async function createLocalFirecrackerDesktop(options) {
83
85
  })();
84
86
  const aborted = () => { void close(); };
85
87
  try {
86
- await new Promise((resolve, reject) => {
87
- forward.once("error", reject);
88
- forward.listen(path.join(socketRoot, "vsock.sock_8000"), () => { forward.off("error", reject); resolve(); });
89
- });
88
+ let uid = process.getuid?.() || 1000, gid = process.getgid?.() || 1000;
89
+ if (lima) {
90
+ remoteWork = (await runtimeExec("mktemp", ["-d", "/tmp/humanish-fc-XXXXXX"])).stdout.trim();
91
+ socketRoot = remoteWork;
92
+ cidfile = `${remoteWork}/container-id`;
93
+ controlSocket = path.join(work, "vsock.sock");
94
+ uid = Number((await runtimeExec("id", ["-u"])).stdout.trim());
95
+ gid = Number((await runtimeExec("id", ["-g"])).stdout.trim());
96
+ tunnel = await openLimaTunnel({ work, socketRoot, appUrl: url, signal });
97
+ }
98
+ else {
99
+ await mkdir(socketRoot, { mode: 0o700 });
100
+ }
101
+ if (!lima)
102
+ await new Promise((resolve, reject) => {
103
+ forward.once("error", reject);
104
+ forward.listen(path.join(socketRoot, "vsock.sock_8000"), () => { forward.off("error", reject); resolve(); });
105
+ });
90
106
  const created = await docker(["create", "--rm", "--cidfile", cidfile, "--init", "--user", "0:0", "--read-only", "--cap-drop", "ALL",
91
107
  "--cap-add", "NET_ADMIN", "--cap-add", "SETUID", "--cap-add", "SETGID", "--cap-add", "CHOWN",
92
108
  "--device", "/dev/kvm", "--device", "/dev/net/tun", "--security-opt", "no-new-privileges",
@@ -94,7 +110,7 @@ export async function createLocalFirecrackerDesktop(options) {
94
110
  "--tmpfs", "/tmp:rw,nosuid,nodev,size=16m", "--stop-timeout", "5",
95
111
  "--mount", `type=bind,src=${socketRoot},dst=/run/vm`,
96
112
  "--mount", "type=volume,dst=/run/state,volume-nocopy",
97
- options.assets.image, url.port, String(process.getuid?.() || 1000), String(process.getgid?.() || 1000)]);
113
+ options.assets.image, url.port, String(uid), String(gid)]);
98
114
  if (!/^[a-f0-9]{64}$/.test(created))
99
115
  throw new Error("Docker did not return a container ID.");
100
116
  container = created;
@@ -115,7 +131,7 @@ export async function createLocalFirecrackerDesktop(options) {
115
131
  if (performance.now() >= deadline)
116
132
  throw new Error("Firecracker browser startup timed out.");
117
133
  stream = await new Promise(resolve => {
118
- const socket = connect(path.join(socketRoot, "vsock.sock"));
134
+ const socket = connect(controlSocket);
119
135
  socket.once("connect", () => resolve(socket));
120
136
  socket.once("error", () => { socket.destroy(); resolve(undefined); });
121
137
  });
@@ -1 +1 @@
1
- {"version":3,"file":"local-firecracker-desktop.js","sourceRoot":"","sources":["../src/local-firecracker-desktop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-firecracker-desktop.js","sourceRoot":"","sources":["../src/local-firecracker-desktop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export declare const LIMA_INSTANCE = "humanish-runtime";
2
+ export interface RuntimeHostOptions {
3
+ env?: NodeJS.ProcessEnv;
4
+ signal?: AbortSignal;
5
+ platform?: NodeJS.Platform;
6
+ arch?: string;
7
+ }
8
+ export declare const usesLima: (options?: RuntimeHostOptions) => boolean;
9
+ export declare function runtimeArchitecture(options?: RuntimeHostOptions): "amd64" | "arm64" | undefined;
10
+ export declare function hostExec(file: string, args: string[], options?: RuntimeHostOptions, timeout?: number): Promise<{
11
+ stdout: string;
12
+ stderr: string;
13
+ }>;
14
+ /** Commands inside the Linux host. Lima carries argv; no shell interpolation. */
15
+ export declare function runtimeExec(file: string, args: string[], options?: RuntimeHostOptions, timeout?: number): Promise<{
16
+ stdout: string;
17
+ stderr: string;
18
+ }>;
19
+ export declare function runtimeDocker(args: string[], options?: RuntimeHostOptions, timeout?: number): Promise<{
20
+ stdout: string;
21
+ stderr: string;
22
+ }>;
23
+ export declare const LIMA_TEMPLATE = "minimumLimaVersion: 2.2.0\nvmType: vz\narch: aarch64\nnestedVirtualization: true\ncpus: 6\nmemory: 8GiB\ndisk: 80GiB\nimages:\n - location: https://cloud.debian.org/images/cloud/trixie/20260712-2537/debian-13-genericcloud-arm64-20260712-2537.qcow2\n arch: aarch64\n digest: sha512:8543d795f2fde630eb66c492f245a8c1da19dedc636e0a8e7b3d0f95920e1a05aa911ef2d82d177d41cc53ced5fccbd2a3945d07fa5e15018914c4d864bb07ed\nmounts: []\ncontainerd:\n system: false\n user: false\nssh:\n forwardAgent: false\nportForwards:\n - guestIP: 0.0.0.0\n guestIPMustBeZero: false\n guestPortRange: [1, 65535]\n proto: any\n ignore: true\nprovision:\n - mode: system\n script: |\n #!/bin/sh\n set -eu\n export DEBIAN_FRONTEND=noninteractive\n apt-get update\n apt-get install -y --no-install-recommends docker.io docker-cli ca-certificates\n systemctl enable --now docker\n";
24
+ export declare function limaStatus(options?: RuntimeHostOptions): Promise<{
25
+ ready: boolean;
26
+ exists: boolean;
27
+ message: string;
28
+ }>;
29
+ export declare function prepareLima(options?: RuntimeHostOptions, progress?: (message: string) => void): Promise<void>;
30
+ /** Copy across the OS boundary explicitly; shared folders cannot carry sockets. */
31
+ export declare function loadRuntimeArchive(archive: string, options: RuntimeHostOptions): Promise<void>;
@@ -0,0 +1,128 @@
1
+ import { execFile } from "node:child_process";
2
+ import { mkdtemp, rm, writeFile } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import path from "node:path";
5
+ import { promisify } from "node:util";
6
+ const exec = promisify(execFile);
7
+ export const LIMA_INSTANCE = "humanish-runtime";
8
+ export const usesLima = (options = {}) => (options.platform ?? process.platform) === "darwin";
9
+ export function runtimeArchitecture(options = {}) {
10
+ const platform = options.platform ?? process.platform, arch = options.arch ?? process.arch;
11
+ if (platform === "linux" && arch === "x64")
12
+ return "amd64";
13
+ if ((platform === "linux" || platform === "darwin") && arch === "arm64")
14
+ return "arm64";
15
+ return undefined;
16
+ }
17
+ export async function hostExec(file, args, options = {}, timeout = 15_000) {
18
+ return exec(file, args, { env: options.env ?? process.env, timeout, maxBuffer: 1024 * 1024,
19
+ ...(options.signal ? { signal: options.signal } : {}) });
20
+ }
21
+ /** Commands inside the Linux host. Lima carries argv; no shell interpolation. */
22
+ export async function runtimeExec(file, args, options = {}, timeout = 15_000) {
23
+ return usesLima(options)
24
+ ? hostExec("limactl", ["shell", "--workdir", "/", LIMA_INSTANCE, "--", file, ...args], options, timeout)
25
+ : hostExec(file, args, options, timeout);
26
+ }
27
+ export async function runtimeDocker(args, options = {}, timeout = 15_000) {
28
+ return usesLima(options)
29
+ ? runtimeExec("sudo", ["-n", "docker", "--host", "unix:///var/run/docker.sock", ...args], options, timeout)
30
+ : runtimeExec("docker", args, options, timeout);
31
+ }
32
+ // No host mounts, agent forwarding or automatic app-port discovery. Per-study
33
+ // OpenSSH forwards grant just the selected app and browser-control sockets.
34
+ export const LIMA_TEMPLATE = `minimumLimaVersion: 2.2.0
35
+ vmType: vz
36
+ arch: aarch64
37
+ nestedVirtualization: true
38
+ cpus: 6
39
+ memory: 8GiB
40
+ disk: 80GiB
41
+ images:
42
+ - location: https://cloud.debian.org/images/cloud/trixie/20260712-2537/debian-13-genericcloud-arm64-20260712-2537.qcow2
43
+ arch: aarch64
44
+ digest: sha512:8543d795f2fde630eb66c492f245a8c1da19dedc636e0a8e7b3d0f95920e1a05aa911ef2d82d177d41cc53ced5fccbd2a3945d07fa5e15018914c4d864bb07ed
45
+ mounts: []
46
+ containerd:
47
+ system: false
48
+ user: false
49
+ ssh:
50
+ forwardAgent: false
51
+ portForwards:
52
+ - guestIP: 0.0.0.0
53
+ guestIPMustBeZero: false
54
+ guestPortRange: [1, 65535]
55
+ proto: any
56
+ ignore: true
57
+ provision:
58
+ - mode: system
59
+ script: |
60
+ #!/bin/sh
61
+ set -eu
62
+ export DEBIAN_FRONTEND=noninteractive
63
+ apt-get update
64
+ apt-get install -y --no-install-recommends docker.io docker-cli ca-certificates
65
+ systemctl enable --now docker
66
+ `;
67
+ export async function limaStatus(options = {}) {
68
+ const chip = (await hostExec("sysctl", ["-n", "machdep.cpu.brand_string"], options)).stdout.trim();
69
+ const generation = /^Apple M(\d+)/.exec(chip);
70
+ if (!generation || Number(generation[1]) < 3)
71
+ throw new Error("Local Firecracker on Mac requires an M3 or newer Apple Silicon Mac with nested virtualization.");
72
+ let version;
73
+ try {
74
+ version = (await hostExec("limactl", ["--version"], options)).stdout;
75
+ }
76
+ catch {
77
+ throw new Error("Install Lima 2.2 or newer (brew install lima), then run humanish runtime setup. Docker Desktop is not required.");
78
+ }
79
+ const match = /\b(\d+)\.(\d+)\.\d+/.exec(version);
80
+ if (!match || Number(match[1]) < 2 || (Number(match[1]) === 2 && Number(match[2]) < 2))
81
+ throw new Error("Update Lima to 2.2 or newer (brew upgrade lima), then run humanish runtime setup.");
82
+ const output = (await hostExec("limactl", ["list", "--json"], options)).stdout.trim();
83
+ const instance = output.split("\n").filter(Boolean).map(line => JSON.parse(line))
84
+ .find(value => value.name === LIMA_INSTANCE);
85
+ if (instance && (instance.name !== LIMA_INSTANCE || instance.vmType !== "vz" || instance.arch !== "aarch64"))
86
+ throw new Error(`The existing ${LIMA_INSTANCE} Lima instance is incompatible. Humanish will not replace it.`);
87
+ return { ready: instance?.status === "Running", exists: !!instance,
88
+ message: instance ? "The Humanish Lima host is stopped. Run humanish runtime setup to start it."
89
+ : "Run humanish runtime setup to create the Humanish Lima host and install the browser runtime." };
90
+ }
91
+ export async function prepareLima(options = {}, progress) {
92
+ const status = await limaStatus(options);
93
+ if (status.ready)
94
+ return;
95
+ progress?.(status.exists ? "Starting the Humanish Lima host…" : "Preparing the Humanish Lima host (first setup downloads Linux and Docker)…");
96
+ if (status.exists) {
97
+ await hostExec("limactl", ["start", "--tty=false", LIMA_INSTANCE], options, 15 * 60_000);
98
+ }
99
+ else {
100
+ const work = await mkdtemp(path.join(tmpdir(), "humanish-lima-"));
101
+ try {
102
+ const file = path.join(work, "host.yaml");
103
+ await writeFile(file, LIMA_TEMPLATE, { mode: 0o600 });
104
+ await hostExec("limactl", ["start", "--tty=false", "--name", LIMA_INSTANCE, file], options, 15 * 60_000);
105
+ }
106
+ finally {
107
+ await rm(work, { recursive: true, force: true });
108
+ }
109
+ }
110
+ }
111
+ /** Copy across the OS boundary explicitly; shared folders cannot carry sockets. */
112
+ export async function loadRuntimeArchive(archive, options) {
113
+ if (!usesLima(options)) {
114
+ await runtimeDocker(["load", "--input", archive], options, 10 * 60_000);
115
+ return;
116
+ }
117
+ const work = (await runtimeExec("mktemp", ["-d", "/tmp/humanish-image-XXXXXX"], options)).stdout.trim();
118
+ try {
119
+ await hostExec("limactl", ["copy", archive, `${LIMA_INSTANCE}:${work}/runtime.tar.gz`], options, 10 * 60_000);
120
+ await runtimeDocker(["load", "--input", `${work}/runtime.tar.gz`], options, 10 * 60_000);
121
+ }
122
+ finally {
123
+ // Cancellation must not skip removal of this invocation's copied archive.
124
+ const { signal: _signal, ...cleanup } = options;
125
+ await runtimeExec("rm", ["-rf", "--", work], cleanup);
126
+ }
127
+ }
128
+ //# sourceMappingURL=local-runtime-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-runtime-host.js","sourceRoot":"","sources":["../src/local-runtime-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAOhD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,UAA8B,EAAE,EAAW,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC;AAC3H,MAAM,UAAU,mBAAmB,CAAC,UAA8B,EAAE;IAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC3F,IAAI,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC;IAC3D,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACxF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAc,EAAE,UAA8B,EAAE,EAAE,OAAO,GAAG,MAAM;IAC7G,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI;QACxF,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,IAAc,EAAE,UAA8B,EAAE,EAAE,OAAO,GAAG,MAAM;IAChH,OAAO,QAAQ,CAAC,OAAO,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;QACxG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc,EAAE,UAA8B,EAAE,EAAE,OAAO,GAAG,MAAM;IACpG,OAAO,QAAQ,CAAC,OAAO,CAAC;QACtB,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,6BAA6B,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;QAC3G,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC5B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAA8B,EAAE;IAC/D,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,0BAA0B,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACnG,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gGAAgG,CAAC,CAAC;IAChK,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QAAC,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAAC,CAAC;IAC7E,MAAM,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,iHAAiH,CAAC,CAAC;IAAC,CAAC;IAC7I,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;IACvG,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACtF,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC9E,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IAC/C,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,aAAa,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC;QAC1G,MAAM,IAAI,KAAK,CAAC,gBAAgB,aAAa,+DAA+D,CAAC,CAAC;IAChH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ;QAChE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,4EAA4E;YAC9F,CAAC,CAAC,8FAA8F,EAAE,CAAC;AACzG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAA8B,EAAE,EAAE,QAAoC;IACtG,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO;IACzB,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,4EAA4E,CAAC,CAAC;IAC9I,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;IAC3F,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAC1C,MAAM,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;QAC3G,CAAC;gBAAS,CAAC;YAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,OAA2B;IACnF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAAC,MAAM,aAAa,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC5G,MAAM,IAAI,GAAG,CAAC,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,4BAA4B,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACxG,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,IAAI,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;QAC9G,MAAM,aAAa,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;IAC3F,CAAC;YAAS,CAAC;QACT,0EAA0E;QAC1E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;QAChD,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;AACH,CAAC"}
@@ -1,3 +1,5 @@
1
1
  import type { LocalRuntimeRelease } from "./local-runtime.js";
2
2
  /** Updated with the verified, public runtime artifact before release. */
3
3
  export declare const LOCAL_RUNTIME_RELEASE: LocalRuntimeRelease;
4
+ /** Architecture-specific artifacts; each retains matching sources and notices. */
5
+ export declare const LOCAL_RUNTIME_RELEASES: Partial<Record<"amd64" | "arm64", LocalRuntimeRelease>>;
@@ -5,4 +5,14 @@ export const LOCAL_RUNTIME_RELEASE = {
5
5
  bytes: 596136865,
6
6
  image: "sha256:9597abdb46255190640443ea485010d2a45f51699e7cb47372d6ee895d280f5c"
7
7
  };
8
+ /** Architecture-specific artifacts; each retains matching sources and notices. */
9
+ export const LOCAL_RUNTIME_RELEASES = {
10
+ amd64: LOCAL_RUNTIME_RELEASE,
11
+ arm64: {
12
+ url: "https://github.com/danielgwilson/humanish/releases/download/runtime-2026.09.24.2/runtime-linux-arm64.tar.gz",
13
+ sha256: "16f10b21f6436ef39f18fb9615cae7045d3fc2a20798c1e42122d574f58c759b",
14
+ bytes: 582695626,
15
+ image: "sha256:52cd53169236cd70a445938bda008987f18a97303794ae0ff75cc15bbbd26671"
16
+ }
17
+ };
8
18
  //# sourceMappingURL=local-runtime-release.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-runtime-release.js","sourceRoot":"","sources":["../src/local-runtime-release.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,MAAM,CAAC,MAAM,qBAAqB,GAAwB;IACxD,GAAG,EAAE,6GAA6G;IAClH,MAAM,EAAE,kEAAkE;IAC1E,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,yEAAyE;CACjF,CAAC"}
1
+ {"version":3,"file":"local-runtime-release.js","sourceRoot":"","sources":["../src/local-runtime-release.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,MAAM,CAAC,MAAM,qBAAqB,GAAwB;IACxD,GAAG,EAAE,6GAA6G;IAClH,MAAM,EAAE,kEAAkE;IAC1E,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,yEAAyE;CACjF,CAAC;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,sBAAsB,GAA4D;IAC7F,KAAK,EAAE,qBAAqB;IAC5B,KAAK,EAAE;QACL,GAAG,EAAE,6GAA6G;QAClH,MAAM,EAAE,kEAAkE;QAC1E,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,yEAAyE;KACjF;CACF,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** Standard OpenSSH streamlocal forwarding; no browser-control protocol here. */
2
+ export declare function openRuntimeSshTunnel(options: {
3
+ config: string;
4
+ destination: string;
5
+ localSocket: string;
6
+ remoteSocket: string;
7
+ appSocket: string;
8
+ appHost: string;
9
+ appPort: number;
10
+ signal: AbortSignal;
11
+ }): Promise<{
12
+ close(): Promise<boolean>;
13
+ }>;
14
+ export declare function openLimaTunnel(options: {
15
+ work: string;
16
+ socketRoot: string;
17
+ appUrl: URL;
18
+ signal: AbortSignal;
19
+ }): Promise<{
20
+ close(): Promise<boolean>;
21
+ }>;
@@ -0,0 +1,89 @@
1
+ import { spawn } from "node:child_process";
2
+ import path from "node:path";
3
+ import { setTimeout as delay } from "node:timers/promises";
4
+ import { hostExec, LIMA_INSTANCE } from "./local-runtime-host.js";
5
+ /** Standard OpenSSH streamlocal forwarding; no browser-control protocol here. */
6
+ export async function openRuntimeSshTunnel(options) {
7
+ options.signal.throwIfAborted();
8
+ const child = spawn("ssh", ["-F", options.config, "-T", "-a", "-o", "BatchMode=yes",
9
+ "-o", "ControlMaster=no", "-o", "ControlPath=none", "-o", "ExitOnForwardFailure=yes",
10
+ "-o", "ConnectTimeout=15", "-o", "StreamLocalBindMask=0177",
11
+ "-L", `${options.localSocket}:${options.remoteSocket}`,
12
+ "-R", `${options.appSocket}:${options.appHost}:${options.appPort}`,
13
+ options.destination, "sh -c 'printf \"HUMANISH_SSH_READY\\n\"; exec cat'"], { stdio: ["pipe", "pipe", "pipe"] });
14
+ let exited = false;
15
+ const closed = new Promise(resolve => child.once("close", () => { exited = true; resolve(); }));
16
+ child.stdin.on("error", () => { });
17
+ let closing;
18
+ const close = () => closing ??= (async () => {
19
+ options.signal.removeEventListener("abort", aborted);
20
+ // EOF also closes the remote cat if the parent dies unexpectedly. Do not
21
+ // detach/multiplex this SSH child into Lima's persistent control connection.
22
+ child.stdin.end();
23
+ await Promise.race([closed, delay(1000)]);
24
+ if (!exited)
25
+ child.kill("SIGTERM");
26
+ await Promise.race([closed, delay(1000)]);
27
+ if (!exited)
28
+ child.kill("SIGKILL");
29
+ await Promise.race([closed, delay(1000)]);
30
+ return exited;
31
+ })();
32
+ const aborted = () => { void close(); };
33
+ options.signal.addEventListener("abort", aborted, { once: true });
34
+ try {
35
+ await new Promise((resolve, reject) => {
36
+ const timer = setTimeout(() => finish(new Error("Lima SSH forwarding timed out.")), 20_000);
37
+ let bytes = 0, output = "", ready = false;
38
+ const finish = (error) => {
39
+ if (ready)
40
+ return;
41
+ ready = true;
42
+ clearTimeout(timer);
43
+ if (error)
44
+ reject(error);
45
+ else
46
+ resolve();
47
+ };
48
+ child.once("error", () => finish(new Error("Could not start SSH for the Lima browser.")));
49
+ child.once("close", () => finish(new Error("Lima SSH forwarding closed before it was ready.")));
50
+ child.stderr.on("data", (data) => {
51
+ bytes += data.length;
52
+ if (bytes > 64 * 1024) {
53
+ finish(new Error("Lima SSH forwarding failed."));
54
+ void close();
55
+ }
56
+ });
57
+ child.stdout.on("data", (data) => {
58
+ bytes += data.length;
59
+ if (bytes > 64 * 1024) {
60
+ finish(new Error("Lima SSH forwarding failed."));
61
+ void close();
62
+ return;
63
+ }
64
+ if (!ready) {
65
+ output += data.toString();
66
+ if (output === "HUMANISH_SSH_READY\n")
67
+ finish();
68
+ }
69
+ });
70
+ });
71
+ options.signal.throwIfAborted();
72
+ return { close };
73
+ }
74
+ catch (error) {
75
+ await close();
76
+ throw error;
77
+ }
78
+ }
79
+ export async function openLimaTunnel(options) {
80
+ const settings = await hostExec("limactl", ["list", "--format={{.SSHConfigFile}}", LIMA_INSTANCE], { signal: options.signal });
81
+ const config = settings.stdout.trim();
82
+ if (!path.isAbsolute(config))
83
+ throw new Error("Lima did not return its SSH configuration path.");
84
+ return openRuntimeSshTunnel({ config, destination: `lima-${LIMA_INSTANCE}`,
85
+ localSocket: path.join(options.work, "vsock.sock"), remoteSocket: `${options.socketRoot}/vsock.sock`,
86
+ appSocket: `${options.socketRoot}/vsock.sock_8000`, appHost: options.appUrl.hostname,
87
+ appPort: Number(options.appUrl.port), signal: options.signal });
88
+ }
89
+ //# sourceMappingURL=local-runtime-ssh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-runtime-ssh.js","sourceRoot":"","sources":["../src/local-runtime-ssh.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { LocalFirecrackerAssets } from "./local-firecracker-desktop.js";
2
+ import { type RuntimeHostOptions } from "./local-runtime-host.js";
2
3
  export interface LocalRuntimeRelease {
3
4
  url: string;
4
5
  sha256: string;
@@ -11,9 +12,7 @@ export interface LocalRuntimeStatus {
11
12
  message: string;
12
13
  assets?: LocalFirecrackerAssets;
13
14
  }
14
- interface RuntimeOptions {
15
- env?: NodeJS.ProcessEnv;
16
- signal?: AbortSignal;
15
+ interface RuntimeOptions extends RuntimeHostOptions {
17
16
  progress?: (message: string) => void;
18
17
  /** Explicit source-build/test override; never provided by a participant. */
19
18
  release?: LocalRuntimeRelease;
@@ -1,4 +1,3 @@
1
- import { execFile } from "node:child_process";
2
1
  import { createHash } from "node:crypto";
3
2
  import { createWriteStream } from "node:fs";
4
3
  import { access, mkdtemp, rm } from "node:fs/promises";
@@ -6,44 +5,59 @@ import { tmpdir } from "node:os";
6
5
  import path from "node:path";
7
6
  import { Readable, Transform } from "node:stream";
8
7
  import { pipeline } from "node:stream/promises";
9
- import { promisify } from "node:util";
10
- import { LOCAL_RUNTIME_RELEASE } from "./local-runtime-release.js";
11
- const exec = promisify(execFile);
12
- const docker = async (args, options, timeout = 15_000) => (await exec("docker", args, { env: options.env ?? process.env, timeout, maxBuffer: 1024 * 1024,
13
- ...(options.signal ? { signal: options.signal } : {}) })).stdout.trim();
8
+ import { LOCAL_RUNTIME_RELEASES } from "./local-runtime-release.js";
9
+ import { limaStatus, loadRuntimeArchive, prepareLima, runtimeArchitecture, runtimeDocker, runtimeExec, usesLima } from "./local-runtime-host.js";
10
+ const docker = async (args, options) => (await runtimeDocker(args, options)).stdout.trim();
11
+ const runtimeRelease = (options) => options.release ?? LOCAL_RUNTIME_RELEASES[runtimeArchitecture(options) ?? "amd64"];
14
12
  /** Read-only host and cache inspection. Never pulls an image or starts a container. */
15
13
  export async function localRuntimeStatus(options = {}) {
16
- if (process.platform !== "linux" || process.arch !== "x64") {
17
- return { ok: false, installed: false, message: "Local browsers currently support Linux x64. Mac/Lima integration is not available yet." };
14
+ const architecture = runtimeArchitecture(options), lima = usesLima(options);
15
+ if (!architecture)
16
+ return { ok: false, installed: false, message: "Local browsers need Linux x64/ARM64 or an M3-or-newer Mac with Lima." };
17
+ if (lima) {
18
+ try {
19
+ const status = await limaStatus(options);
20
+ if (!status.ready)
21
+ return { ok: true, installed: false, message: status.message };
22
+ }
23
+ catch (error) {
24
+ return { ok: false, installed: false, message: error.message };
25
+ }
18
26
  }
19
27
  const env = options.env ?? process.env;
20
- if (env.DOCKER_HOST && !env.DOCKER_HOST.startsWith("unix://")) {
28
+ if (!lima && env.DOCKER_HOST && !env.DOCKER_HOST.startsWith("unix://")) {
21
29
  return { ok: false, installed: false, message: "Local browsers need Docker on this machine; a remote DOCKER_HOST cannot reach the local app and control socket." };
22
30
  }
23
31
  try {
24
- await access("/dev/kvm");
25
- await access("/dev/net/tun");
32
+ if (lima)
33
+ await runtimeExec("sh", ["-c", "test -c /dev/kvm && test -c /dev/net/tun"], options);
34
+ else {
35
+ await access("/dev/kvm");
36
+ await access("/dev/net/tun");
37
+ }
26
38
  }
27
39
  catch {
28
40
  return { ok: false, installed: false, message: "Local browsers need Linux KVM (/dev/kvm) and TUN (/dev/net/tun). Enable virtualization on this host." };
29
41
  }
30
42
  try {
31
- if (env.DOCKER_CONTEXT || !env.DOCKER_HOST) {
43
+ if (!lima && (env.DOCKER_CONTEXT || !env.DOCKER_HOST)) {
32
44
  const endpoint = JSON.parse(await docker(["context", "inspect", "--format", "{{json .Endpoints.docker.Host}}"], options));
33
45
  if (typeof endpoint !== "string" || !endpoint.startsWith("unix://")) {
34
46
  return { ok: false, installed: false, message: "Select a local Docker context. Remote Docker cannot reach the local app and control socket." };
35
47
  }
36
48
  }
37
49
  const info = JSON.parse(await docker(["info", "--format", "{{json .}}"], options));
38
- if (info.OSType !== "linux" || !["x86_64", "amd64"].includes(info.Architecture) ||
50
+ if (info.OSType !== "linux" || !(architecture === "amd64" ? ["x86_64", "amd64"] : ["aarch64", "arm64"]).includes(info.Architecture) ||
39
51
  info.SecurityOptions?.some((value) => value.includes("rootless"))) {
40
- return { ok: false, installed: false, message: "Local browsers need a local, rootful Linux x64 Docker engine with KVM access." };
52
+ return { ok: false, installed: false, message: "Local browsers need a local, rootful Linux Docker engine of the matching architecture with KVM access." };
41
53
  }
42
54
  }
43
55
  catch {
44
- return { ok: false, installed: false, message: "Docker is unavailable. Install/start Docker Engine and give your account access, then run humanish runtime setup." };
56
+ return { ok: false, installed: false, message: lima
57
+ ? "Docker is unavailable inside the Humanish Lima host. Check limactl shell humanish-runtime -- sudo systemctl status docker; Docker Desktop is not used."
58
+ : "Docker is unavailable. Install/start Docker Engine and give your account access, then run humanish runtime setup." };
45
59
  }
46
- const release = options.release ?? LOCAL_RUNTIME_RELEASE;
60
+ const release = runtimeRelease(options);
47
61
  const reference = env.HUMANISH_LOCAL_RUNTIME_IMAGE?.trim() || release?.image;
48
62
  if (!reference)
49
63
  return { ok: false, installed: false, message: "This build does not include a published local runtime. Source builds can set HUMANISH_LOCAL_RUNTIME_IMAGE." };
@@ -59,7 +73,7 @@ export async function localRuntimeStatus(options = {}) {
59
73
  const image = images[0];
60
74
  const labels = image?.Config?.Labels ?? {};
61
75
  const revision = labels["to.humanish.runtime.revision"];
62
- if (image?.Os !== "linux" || image.Architecture !== "amd64" || labels["to.humanish.runtime.api"] !== "1" ||
76
+ if (image?.Os !== "linux" || image.Architecture !== architecture || labels["to.humanish.runtime.api"] !== "1" ||
63
77
  typeof revision !== "string" || !/^guest-api1-[a-f0-9]{64}$/.test(revision)) {
64
78
  return { ok: false, installed: false, message: "The cached image is not a compatible Humanish local browser runtime." };
65
79
  }
@@ -68,12 +82,16 @@ export async function localRuntimeStatus(options = {}) {
68
82
  }
69
83
  /** Docker owns the installed image/cache. The archive is verified before docker load. */
70
84
  export async function prepareLocalRuntime(options = {}) {
85
+ if (!runtimeArchitecture(options))
86
+ throw new Error((await localRuntimeStatus(options)).message);
87
+ if (usesLima(options))
88
+ await prepareLima(options, options.progress);
71
89
  const before = await localRuntimeStatus(options);
72
90
  if (!before.ok)
73
91
  throw new Error(before.message);
74
92
  if (before.assets)
75
93
  return before.assets;
76
- const release = options.release ?? LOCAL_RUNTIME_RELEASE;
94
+ const release = runtimeRelease(options);
77
95
  if (!release)
78
96
  throw new Error(before.message);
79
97
  options.progress?.(`Downloading local browser runtime (${Math.ceil(release.bytes / 1024 / 1024)} MiB)…`);
@@ -100,7 +118,7 @@ export async function prepareLocalRuntime(options = {}) {
100
118
  if (bytes !== release.bytes || hash.digest("hex") !== release.sha256)
101
119
  throw new Error("Runtime archive integrity check failed; it was not installed.");
102
120
  options.progress?.("Installing the local browser image…");
103
- await docker(["load", "--input", archive], { ...options, signal }, 10 * 60_000);
121
+ await loadRuntimeArchive(archive, { ...options, signal });
104
122
  const after = await localRuntimeStatus(options);
105
123
  if (!after.assets)
106
124
  throw new Error("Downloaded runtime did not provide the expected image. Run humanish runtime setup to retry.");
@@ -1 +1 @@
1
- {"version":3,"file":"local-runtime.js","sourceRoot":"","sources":["../src/local-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-runtime.js","sourceRoot":"","sources":["../src/local-runtime.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { spawn } from "node:child_process";
2
2
  import { constants } from "node:fs";
3
3
  import { access, chmod, lstat, mkdir, mkdtemp, open, readdir, realpath, rm, stat, symlink, unlink, writeFile } from "node:fs/promises";
4
4
  import { homedir, tmpdir } from "node:os";
5
+ import { createRequire } from "node:module";
5
6
  import path from "node:path";
6
7
  import { CODEX_IMAGE, CODEX_MAX_OUTPUT_BYTES, RESTRICTED_CODEX_ANALYSIS_IDENTITY, RESTRICTED_CODEX_ANALYSIS_MODELS, admitsRestrictedCodexConfig, admitsRestrictedCodexThread, codexRecord, restrictedCodexConfig, restrictedCodexFailure, restrictedCodexRequestError, restrictedCodexUsage } from "./restricted-codex-policy.js";
7
8
  import { RestrictedCodexDeadline, RestrictedCodexStop, RestrictedCodexTransport, closeOwnedCodexProcess, ownCodexProcess } from "./restricted-codex-transport.js";
@@ -12,14 +13,16 @@ function childEnvironment(source, home, scratch) {
12
13
  result[key] = source[key];
13
14
  return result;
14
15
  }
15
- async function isNativeExecutable(file) {
16
+ async function isNativeExecutable(file, platform) {
16
17
  try {
17
18
  await access(file, constants.X_OK);
18
19
  const handle = await open(file, "r");
19
20
  try {
20
21
  const buffer = Buffer.alloc(4);
21
22
  const read = await handle.read(buffer, 0, 4, 0);
22
- return read.bytesRead === 4 && buffer.equals(Buffer.from([0x7f, 0x45, 0x4c, 0x46]));
23
+ return read.bytesRead === 4 && (platform === "darwin"
24
+ ? ["cffaedfe", "feedfacf", "cafebabe", "bebafeca", "cafebabf"].includes(buffer.toString("hex"))
25
+ : buffer.equals(Buffer.from([0x7f, 0x45, 0x4c, 0x46])));
23
26
  }
24
27
  finally {
25
28
  await handle.close();
@@ -32,6 +35,7 @@ async function isNativeExecutable(file) {
32
35
  /** Resolve PATH without running a shell. The npm launcher is resolved to its
33
36
  * native optional package so cleanup owns the real app-server child. */
34
37
  async function resolveExecutable(options, env) {
38
+ const platform = options.platform ?? process.platform;
35
39
  let selected = options.executable;
36
40
  if (selected === undefined) {
37
41
  for (const directory of (env.PATH ?? "").split(path.delimiter).filter(entry => path.isAbsolute(entry))) {
@@ -53,14 +57,23 @@ async function resolveExecutable(options, env) {
53
57
  catch {
54
58
  throw new RestrictedCodexStop("codex_unavailable");
55
59
  }
56
- if (await isNativeExecutable(resolved))
60
+ if (await isNativeExecutable(resolved, platform))
57
61
  return resolved;
58
62
  if (path.basename(resolved) === "codex.js" && path.basename(path.dirname(resolved)) === "bin") {
59
63
  const packageRoot = path.dirname(path.dirname(resolved));
60
- const triple = "x86_64-unknown-linux-musl";
61
- for (const candidate of [path.join(packageRoot, "node_modules", "@openai", "codex-linux-x64", "vendor", triple, "bin", "codex"),
62
- path.join(packageRoot, "vendor", triple, "bin", "codex")]) {
63
- if (await isNativeExecutable(candidate))
64
+ const triple = platform === "darwin" ? "aarch64-apple-darwin" : "x86_64-unknown-linux-musl";
65
+ const nativePackage = platform === "darwin" ? "codex-darwin-arm64" : "codex-linux-x64";
66
+ const candidates = [];
67
+ try {
68
+ // Match the npm launcher's resolution: optional packages may be hoisted or
69
+ // linked by the package manager rather than nested inside @openai/codex.
70
+ const manifest = createRequire(resolved).resolve(`@openai/${nativePackage}/package.json`);
71
+ candidates.push(path.join(path.dirname(manifest), "vendor", triple, "bin", "codex"));
72
+ }
73
+ catch { /* Older packages may bundle the native executable directly. */ }
74
+ candidates.push(path.join(packageRoot, "vendor", triple, "bin", "codex"));
75
+ for (const candidate of candidates) {
76
+ if (await isNativeExecutable(candidate, platform))
64
77
  return realpath(candidate);
65
78
  }
66
79
  }
@@ -155,7 +168,8 @@ async function executeRestrictedCodexSession(request, options = {}, readinessOnl
155
168
  const admissionError = restrictedCodexRequestError(request);
156
169
  if (admissionError)
157
170
  return restrictedCodexFailure(admissionError);
158
- if ((options.platform ?? process.platform) !== "linux" || (options.arch ?? process.arch) !== "x64")
171
+ const platform = options.platform ?? process.platform, arch = options.arch ?? process.arch;
172
+ if (!(platform === "linux" && arch === "x64") && !(platform === "darwin" && arch === "arm64"))
159
173
  return restrictedCodexFailure("codex_unsupported_platform");
160
174
  const deadline = new RestrictedCodexDeadline(request.timeoutMs, request.signal);
161
175
  const sourceEnv = options.env ?? process.env;
@@ -311,7 +325,7 @@ async function executeRestrictedCodexSession(request, options = {}, readinessOnl
311
325
  clientInfo: { name: "humanish_analysis", version: "1.0.0" }, capabilities: { experimentalApi: true }
312
326
  });
313
327
  if (typeof initialize.userAgent !== "string" || !initialize.userAgent.includes(`/0.154.0 `)
314
- || initialize.codexHome !== home || initialize.platformOs !== "linux" || initialize.platformFamily !== "unix")
328
+ || initialize.codexHome !== home || initialize.platformOs !== (platform === "darwin" ? "macos" : "linux") || initialize.platformFamily !== "unix")
315
329
  throw new RestrictedCodexStop("codex_unsupported_version");
316
330
  transport.notify("initialized", {});
317
331
  const effective = await transport.rpc("config/read", { includeLayers: true, cwd });
@@ -1 +1 @@
1
- {"version":3,"file":"restricted-codex-session.js","sourceRoot":"","sources":["../src/restricted-codex-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restricted-codex-session.js","sourceRoot":"","sources":["../src/restricted-codex-session.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,22 @@
1
1
  # Local browser studies
2
2
 
3
- Linux x64 users can run isolated Firecracker browser participants from the
4
- installed CLI or TUI. Docker manages their containers and private state volumes;
5
- the normal study runner supplies scheduling, recordings, Observer and findings.
3
+ Linux x64 and supported Apple Silicon Mac users can run isolated Firecracker
4
+ browser participants from the installed CLI or TUI. Docker manages their
5
+ containers and private state volumes; the normal study runner supplies
6
+ scheduling, recordings, Observer and findings.
6
7
  No separate host service is installed.
7
8
 
8
9
  ## Start a study
9
10
 
10
- Prerequisites: a local, rootful Docker Engine; Linux KVM (`/dev/kvm`) and TUN
11
- (`/dev/net/tun`); and a signed-in, supported Codex CLI. See
11
+ Both platforms need a signed-in, supported Codex CLI. Linux needs a local,
12
+ rootful Docker Engine, KVM (`/dev/kvm`) and TUN (`/dev/net/tun`). Macs need an
13
+ M3-or-newer chip, native ARM64 Node, Lima 2.2+ (`brew install lima`) and a macOS
14
+ version supporting nested virtualization; see [Mac setup](#apple-silicon-macs).
15
+ Docker Desktop is unnecessary. See
12
16
  [Codex account setup](restricted-codex-analysis.md) for the qualified version
13
17
  and account restrictions. Docker access is an administrative capability.
14
- Humanish does not install Docker or change host permissions.
18
+ Humanish does not install Docker on Linux or change host permissions. On Mac,
19
+ setup installs Docker only inside the dedicated Lima host.
15
20
 
16
21
  Start your app on loopback, then save a lab such as
17
22
  `.humanish/labs/local-browser.yaml`:
@@ -43,8 +48,9 @@ npx humanish doctor --lab .humanish/labs/local-browser.yaml --json
43
48
  npx humanish lab run .humanish/labs/local-browser.yaml
44
49
  ```
45
50
 
46
- The first live run downloads the pinned runtime archive (about 569 MiB), verifies
47
- its exact size and SHA-256, and loads it into Docker. Later runs reuse the image.
51
+ The first live run downloads the pinned runtime archive (about 569 MiB on x64 or
52
+ 556 MiB on ARM64), verifies its exact size and SHA-256, and loads it into Docker.
53
+ Later runs reuse the image.
48
54
  `humanish runtime setup` prepares it in advance. Status, doctor and dry-run never
49
55
  download an image or launch a participant. Preparation does not consume the
50
56
  participant's task-time budget. The TUI lists the same lab and runtime readiness;
@@ -64,9 +70,10 @@ Existing labs without `execution.target: local` retain their previous behavior.
64
70
 
65
71
  ## Current limits
66
72
 
67
- - Linux x64 only. Mac/Lima setup is a separate follow-up.
68
- - A local Docker Engine; remote contexts, rootless Docker and Docker Desktop
69
- virtual machines are not supported by this host adapter.
73
+ - Linux x64 or M3-or-newer Mac with native ARM64 Node and Lima. The installed
74
+ Mac journey was tested on an M5 Max; smaller machines are not capacity-qualified.
75
+ - On Linux, a local Docker Engine; remote contexts, rootless Docker and Docker
76
+ Desktop are unsupported. The Mac adapter uses Docker inside its own Lima host.
70
77
  - Loopback HTTP(S) app URLs on explicit ports above 1023. Each participant can
71
78
  reach its selected app port, plus public destinations over ordinary TCP/UDP.
72
79
  Other private host/LAN destinations and cloud metadata are blocked.
@@ -80,9 +87,10 @@ Existing labs without `execution.target: local` retain their previous behavior.
80
87
  - Codex participants currently use `gpt-6-astra` at low effort. Hosted templates,
81
88
  device presets and hosted sandbox timeouts do not apply.
82
89
 
83
- Normal close removes the owned container and its private state volume. If the
84
- controller dies, the disconnected guest reboots, Firecracker exits and Docker
85
- removes both. A small host socket directory can remain after abrupt death.
90
+ Normal close and cooperative startup cancellation remove the owned container
91
+ and its private state volume. After a desktop connects, controller death
92
+ disconnects the guest, which reboots; Firecracker exits and Docker removes both.
93
+ A small host socket directory can remain after abrupt death.
86
94
  Run evidence remains in `.humanish/` under the normal local capture and sharing
87
95
  rules. An unconfirmed release is reported as such.
88
96
 
@@ -98,3 +106,42 @@ Source builders can use the
98
106
  [maintained recipes](../../runtime/local-firecracker/README.md) and set
99
107
  `HUMANISH_LOCAL_RUNTIME_IMAGE` to an already-built compatible local image. An
100
108
  invalid override fails; it does not cause an implicit registry pull.
109
+
110
+ ## Apple Silicon Macs
111
+
112
+ The Mac adapter uses a dedicated `humanish-runtime` Lima/VZ host on M3 or
113
+ newer Macs, with Lima 2.2+ and macOS supporting nested virtualization. Docker
114
+ runs inside that host; Docker Desktop is unnecessary. Setup creates the host
115
+ with 6 CPUs, 8 GiB RAM and an 80 GiB growable disk. It mounts no Mac directories.
116
+ Start with two participants; larger concurrency has not been qualified by this
117
+ integration. Use Lima's normal resource configuration for subsequent capacity
118
+ experiments, without changing study concurrency behind the user's back.
119
+
120
+ The scheduler and study loop remain shared. Standard OpenSSH forwards the
121
+ browser-control Unix socket to the Mac, and the selected app port back into the
122
+ Linux host. It preserves HTTP(S)/WebSocket bytes without parsing them. Codex
123
+ runs on the Mac and retains the same separate participant/analyst profiles and
124
+ file-backed login requirement. Keychain-only authentication is not supported.
125
+
126
+ The installed CLI passed first-attempt public image setup and two-participant
127
+ studies on an M5 Max: distinct app-side saves, overlapping participants,
128
+ verified recordings and automatic account analysis. A fresh Lima instance used
129
+ the public ARM64 catalog without a development image override. The separately
130
+ available source archives match that native build. The manually dispatched ARM64
131
+ job in `browser-appliance-proof.yml` builds images and sources; compilation alone
132
+ does not establish Mac execution.
133
+
134
+ Status and doctor do not create or start Lima. Explicit setup/first live use
135
+ starts the owned host; closing a study removes its participant containers and
136
+ volumes, but keeps the reusable Lima host running. Stop it with
137
+ `limactl stop humanish-runtime` when no studies are running. An interrupted
138
+ first provision remains inspectable through Lima and can be retried. Humanish
139
+ does not replace a conflicting instance or stop unrelated instances.
140
+
141
+ Normal close, cancellation and controller death were exercised on established
142
+ Mac desktops. Shared startup cancellation and interrupted create-reply recovery
143
+ were exercised against real Linux Docker/Firecracker, with a separate regression
144
+ check for Lima cleanup. Forced controller death during startup, full-study
145
+ cancellation, host sleep/wake and higher concurrency remain unqualified. A forced
146
+ kill before a desktop connects can leave resources requiring inspection; this
147
+ adapter adds no suspend detector that unconditionally destroys a study.
@@ -5,8 +5,10 @@ execution, with a separate conversation, process and tool authority. It can use
5
5
  the same host Codex login as a local-agent participant. Existing API analysis
6
6
  remains a separate provider.
7
7
 
8
- The qualified launcher profile is **Codex CLI 0.154.0, Linux x64, file-backed
9
- ChatGPT login, `gpt-6-astra`, low reasoning effort**. Other versions/platforms,
8
+ The qualified launcher profile is **Codex CLI 0.154.0, Linux x64 or Apple Silicon
9
+ macOS, file-backed ChatGPT login, `gpt-6-astra`, low reasoning effort**. The Mac
10
+ profile passed installed participant/analysis studies and the native dispatch
11
+ restriction check on an M5 Max. Other versions/platforms,
10
12
  keychain-only logins and API-key Codex logins are refused before a model turn.
11
13
  Readiness validates the installation and effective profile without submitting a
12
14
  model turn; it does not guarantee current quota or model access.
@@ -3,7 +3,7 @@
3
3
  Date: 2026-06-02 (current-state note updated 2026-07-14)
4
4
 
5
5
  Status: reference map for the major contracts shipped through source version
6
- `0.98.0`; it is not an exhaustive inventory of command/result envelopes. Exported types,
6
+ `0.99.0`; it is not an exhaustive inventory of command/result envelopes. Exported types,
7
7
  schema constants, parsers, and validators in `src/` are authoritative. Rows
8
8
  marked "reserved" name layering intent only — no code emits or validates them
9
9
  yet. Do not emit a reserved schema.
@@ -1,9 +1,9 @@
1
1
  # Current Goals
2
2
 
3
- Status date: 2026-09-24. Release baseline: `0.98.0`.
3
+ Status date: 2026-09-24. Release baseline: `0.99.0`.
4
4
 
5
5
  This page guides work on current merged source. Published behavior is described
6
- in the [release notes](../release/0.98.0-local-browser-studies.md).
6
+ in the [release notes](../release/0.99.0-local-browser-mac.md).
7
7
  The [September 9 history](https://github.com/danielgwilson/humanish/blob/main/docs/goals/current-history-2026-09-09.md)
8
8
  preserves the former status log; its queues do not supersede this page.
9
9
 
@@ -88,7 +88,7 @@ requires decision-equivalent retained evidence and a real deletion branch.
88
88
  No first-party deletion branch has met that gate. Public demonstrations do not
89
89
  substitute for it.
90
90
 
91
- ## Current Program Truth (source `0.98.0`)
91
+ ## Current Program Truth (source `0.99.0`)
92
92
 
93
93
  | Surface | Available in merged source | Remaining boundary |
94
94
  | --- | --- | --- |
@@ -99,9 +99,10 @@ substitute for it.
99
99
  | Shared state | Sequential and concurrent single-origin shared-world studies with retained evidence | Multi-origin implementation remains gated; concurrent state change does not establish per-action causation |
100
100
  | Observer | Live/recorded views, shared grid and participant playback, participant assignments, action-specific links, saved moments, zoom, comparison and phone-width review | Sparse captures cannot prove every action's effect; visual comparison alone is not a controlled experiment |
101
101
  | Review and feedback | Verification grades, feedback drafts, portable HTML, redacted bundle derivatives and computer-use completion-source labels | Sharing requires the appropriate grade; participant reports and condition matches still need task adjudication |
102
- | Study findings | Default post-run analysis on supported live routes with a separate disclosed $3 admission estimate limit and opt-out; explicit `analyze`, fairer evidence selection, concern review and versioned findings with exact source links; explicit restricted Codex account analysis on the qualified Linux profile | Account dollars/output-token caps are unavailable; Mac/keychain/other CLI profiles are unqualified. Model interpretation needs review; selection limits coverage; opening Observer never dispatches analysis |
102
+ | Study findings | Default post-run analysis on supported live routes with a separate disclosed $3 admission estimate limit and opt-out; explicit `analyze`, fairer evidence selection, concern review and versioned findings with exact source links; explicit restricted Codex account analysis on qualified Linux x64 and Apple Silicon Mac profiles | Account dollars/output-token caps are unavailable; Keychain/other CLI profiles are unqualified. Model interpretation needs review; selection limits coverage; opening Observer never dispatches analysis |
103
103
  | TUI and serving | Detached starts, run stopping, reclamation, Observer attachment, loopback serving, run library and AgentMail setup, authentication and lab configuration | Stopping a process does not itself prove sandbox cleanup; TUI views over CLI `stats`/`export` remain follow-ups |
104
104
  | Off-app communication | Recipient-scoped local capture and fresh real AgentMail receiving, supported inline raster images, bounded collection and host-owned recovery | Real mail uses isolated participant surfaces and remains local-only for publication. Hosted mail/model processing, bounded fidelity and interrupted-run recovery are explicit; local-agent, borrowed inboxes and SMS are unsupported |
105
+ | Local browsers | Shared study loop on Linux x64/Docker/KVM and M3-or-newer Mac/Lima; pinned runtime download, Codex account participants and automatic analysis | Browser-only, explicit local labs; local inbox/media and automatic onboarding remain follow-ups; larger cohorts and sleep/wake are unqualified |
105
106
  | Mobile and media | Hosted viewport/emulation, desktop geometry checks, bounded dwell and declared camera feed; a synthetic video-only call with separate hosted peers is proven | Audio, TURN, provider-specific rooms, physical-device and touch fidelity remain unproven; unsupported media declarations are rejected |
106
107
 
107
108
  Use the [task support matrix](../architecture/task-protocol-support.md),
@@ -2,7 +2,7 @@
2
2
 
3
3
  Status: public-safe contributor and agent ramp.
4
4
 
5
- Package/source version in this tree: `0.98.0` (2026-09-24). The Observer is phone-usable as a stated requirement (observer/AGENTS.md); interactive primitives start from Base UI. The Observer renderer is the observer/ workspace artifact only; the legacy string-concat renderer was deleted at cutover (#426), and rollback is a version pin to 0.42.0. The containment boundary introduced in
5
+ Package/source version in this tree: `0.99.0` (2026-09-24). The Observer is phone-usable as a stated requirement (observer/AGENTS.md); interactive primitives start from Base UI. The Observer renderer is the observer/ workspace artifact only; the legacy string-concat renderer was deleted at cutover (#426), and rollback is a version pin to 0.42.0. The containment boundary introduced in
6
6
  `0.15.1` remains in force: managed run and output paths bind to validated
7
7
  physical filesystem identities, and stored provider IDs are evidence, not
8
8
  cleanup authority. The bundled OSS meta-lab is dry-run only until
@@ -54,6 +54,10 @@ If a change does not improve one of those loops, it probably belongs elsewhere.
54
54
 
55
55
  ## Current State
56
56
 
57
+ The [0.99.0 release note](../release/0.99.0-local-browser-mac.md) describes
58
+ local browser studies on supported Apple Silicon Macs through Lima, public ARM
59
+ runtime setup, Codex account participants and automatic analysis.
60
+
57
61
  The [0.98.0 release note](../release/0.98.0-local-browser-studies.md) describes
58
62
  installed Linux browser studies with managed runtime images, Codex account
59
63
  participants and automatic analysis, and shared CLI/TUI setup checks.
@@ -0,0 +1,34 @@
1
+ # 0.99.0 — Local browser studies on Apple Silicon Macs
2
+
3
+ Explicit local browser labs now run on M3-or-newer Macs through Lima/VZ and
4
+ ARM64 Firecracker desktops. The same scheduler, Observer recordings and automatic
5
+ analysis used on Linux remain in place. Codex and its file-backed ChatGPT login
6
+ stay on the Mac; E2B and OpenAI API keys are unnecessary for the account route.
7
+ Inference remains remote and uses account quota, with unknown dollar cost.
8
+
9
+ Install Lima 2.2 or newer and use native ARM64 Node. `humanish runtime setup`
10
+ creates a dedicated Linux host, installs Docker there and downloads the pinned
11
+ ARM64 image with size/hash verification. Docker Desktop is not required. The
12
+ first live local run can perform the same setup; status and doctor remain
13
+ read-only. See the [setup guide](../architecture/local-browser-runtime.md).
14
+
15
+ The host mounts no Mac directories. Standard OpenSSH forwards browser control
16
+ and the selected loopback app port. Each participant retains its own VM and
17
+ private state volume. Closing a study removes participant resources and keeps
18
+ the reusable Lima host; `limactl stop humanish-runtime` stops it when idle.
19
+ Native Codex discovery also handles hoisted npm packages correctly.
20
+
21
+ An installed candidate on an M5 Max passed first-attempt public runtime setup,
22
+ cache reuse and a two-participant study with distinct app-side saves, overlapping
23
+ sessions, verified recordings and complete automatic analysis. Established Mac
24
+ desktop close/cancel/controller-death cleanup passed. Focused real Linux checks
25
+ of the shared lifecycle cover cancellation after creation and after start but before guest readiness, plus
26
+ recovery when Docker creates a container but its reply is lost; Lima cleanup has
27
+ separate regression coverage. These are scoped observations, not a capacity or
28
+ cold-install performance benchmark.
29
+
30
+ This remains browser-only with explicit lab configuration. Local inboxes,
31
+ camera/microphone support and simpler default onboarding follow separately.
32
+ Larger cohorts, smaller/Intel Macs, sleep/wake, keychain-only login, full-study
33
+ cancellation and forced controller death during startup remain unqualified.
34
+ Existing Linux and hosted labs retain their configuration and providers.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "humanish",
3
- "version": "0.98.0",
3
+ "version": "0.99.0",
4
4
  "description": "Open-source-safe CLI for persona simulation, observer review, and public-safe feedback drafts.",
5
5
  "author": "Daniel G Wilson <daniel@danielgwilson.com>",
6
6
  "keywords": [