@boldblackai/harness 1.9.9 → 1.9.11

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
@@ -307,7 +307,7 @@ pnpm unlink --global @boldblackai/harness
307
307
  make image
308
308
  ```
309
309
 
310
- Builds `ghcr.io/boldblackai/harness` with Debian stable-slim, Node.js v24, `git`, [`@earendil-works/pi-coding-agent`](https://pi.dev/), [`opencode-ai`](https://opencode.ai), [`hermes-agent`](https://github.com/NousResearch/hermes-agent), `fd`, `ripgrep`, `jq`, and `curl`. The hermes variant also includes the [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) for connecting to MCP servers, and [`faster-whisper`](https://github.com/SYSTRAN/faster-whisper) for local speech-to-text.
310
+ Builds `ghcr.io/boldblackai/harness` with Debian stable-slim, Node.js v24, `git`, [`@earendil-works/pi-coding-agent`](https://pi.dev/), [`opencode-ai`](https://opencode.ai), [`hermes-agent`](https://github.com/NousResearch/hermes-agent), `fd`, `ripgrep`, `jq`, and `curl`. The hermes variant also includes the [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) for connecting to MCP servers, [`faster-whisper`](https://github.com/SYSTRAN/faster-whisper) for local speech-to-text, and [`kokoro-onnx`](https://github.com/thewh1teagle/kokoro-onnx) for local text-to-speech.
311
311
 
312
312
  The base image is pinned by manifest-list digest (the OCI image index, not a per-platform manifest) for reproducible multi-arch builds. To bump it:
313
313
 
package/bin/harness.js CHANGED
@@ -69,8 +69,15 @@ class AppleContainerRuntime {
69
69
  return "container";
70
70
  }
71
71
  pullArgs(image) {
72
- // apple/container nests pull under the `image` subgroup.
73
- return ["image", "pull", image];
72
+ // apple/container nests pull under the `image` subgroup. Pass
73
+ // --platform so the correct arch variant is pulled: without it (and
74
+ // without CONTAINER_DEFAULT_PLATFORM), `image pull` resolves the
75
+ // platform to nil and selects the first entry in the manifest list
76
+ // (linux/amd64), pulling the wrong arch on Apple Silicon. `container
77
+ // run` defaults to the host arch via its own path, so the image was
78
+ // being pulled twice — once wrong, once right.
79
+ const arch = process.arch === "arm64" ? "arm64" : "amd64";
80
+ return ["image", "pull", "--platform", `linux/${arch}`, image];
74
81
  }
75
82
  inspectImage(image) {
76
83
  let out;
@@ -370,6 +377,7 @@ Options:
370
377
 
371
378
  Environment variables:
372
379
  HARNESS_IMAGE_TAG Override the Docker image tag (defaults to package version)
380
+ HARNESS_REGISTRY Override the container registry (defaults to ghcr.io/boldblackai/harness)
373
381
  HARNESS_CONTAINER_RUNTIME Container runtime to use: docker (default) or apple (Apple container CLI)
374
382
  XDG_DATA_HOME Override the base directory for persistence data (defaults to ~/.local/share)
375
383
  XDG_CACHE_HOME Override the base directory for cosign cache (defaults to ~/.cache)
@@ -380,7 +388,7 @@ You can also pipe text to harness as an implied -p:
380
388
  echo "write me a fizzbuzz in Go" | harness
381
389
  `;
382
390
  const workspace = process.cwd();
383
- const REGISTRY = "ghcr.io/boldblackai/harness";
391
+ const REGISTRY = process.env.HARNESS_REGISTRY ?? "ghcr.io/boldblackai/harness";
384
392
  const VERSION = require("../package.json").version;
385
393
  const IMAGE_TAG = process.env.HARNESS_IMAGE_TAG ?? VERSION;
386
394
  function normalizeCwd(cwd) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boldblackai/harness",
3
- "version": "1.9.9",
3
+ "version": "1.9.11",
4
4
  "description": "Portable environment for running coding agents in a container",
5
5
  "bin": {
6
6
  "harness": "bin/harness.js"