{"_id":"@capotej/harness","_rev":"28-b747c15bb91dcf011866a0a596bd4b1b","name":"@capotej/harness","dist-tags":{"latest":"1.8.4"},"versions":{"1.0.0":{"name":"@capotej/harness","version":"1.0.0","license":"MIT","_id":"@capotej/harness@1.0.0","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"2d4b881852a0fdec5468b3d7f8d20df6e4ee403d","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.0.0.tgz","fileCount":3,"integrity":"sha512-b8k7Ola8VvM56ilzNX+fGTkfk22UF6Gyo/bQl/nHvxiS0L92IPJnP+8DY/+MxwpudO1GBiw/WIRWfojLj9vqbQ==","signatures":[{"sig":"MEUCIQCmBgqG93jdo8D8EoLhRirszgY+rH+OLSFOssmDtZUDBgIgD6OKd6PHuIUOY7t7Db4eDpgQ5eN5SvkZCbi56GzlzWg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6531},"gitHead":"50c72b44857e272008e93a4d2ee7856d606ce0a3","_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.5.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"24.6.0","dependencies":{"minimist":"^1.2.8"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harness_1.0.0_1776014147988_0.6791197376111213","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@capotej/harness","version":"1.0.1","license":"MIT","_id":"@capotej/harness@1.0.1","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"2e547d592a2cf62a25d8d9cf79c714faec53c6c1","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.0.1.tgz","fileCount":3,"integrity":"sha512-xet5HjotNDmP7KkCSMHqJrrbSiKQpprZmVsv9ZHApL437SzH3jdIS0Kngy54cHu+BVpS9Fg4gbgKe4N1Zb70hQ==","signatures":[{"sig":"MEYCIQDt/hRwigcjOyCLFwGpa093/i1E/27vf2xDuAHCUTwKrgIhALoKJ+lgbk8Q7PFeGXV5FjKy5SlFGq0TozA9PZfZLcKv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6815},"gitHead":"cdd824076c3c2f518b247ba07695c73843594df4","_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.5.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"24.6.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/harness_1.0.1_1776017655331_0.1578668417993454","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@capotej/harness","version":"1.1.0","license":"MIT","_id":"@capotej/harness@1.1.0","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"5114c59ce5282d417b3a8af51040f4a0809d3384","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.1.0.tgz","fileCount":4,"integrity":"sha512-sCkjTsVhCGt6QnjsxjwPwuF+hnS3kiVE7QfsArzatQXnnWKDqGoEhYoWQQNYE2h6xG4YJbXfo5kn2uNpt1JtQA==","signatures":[{"sig":"MEYCIQDb2PgqFHOT7QPTbOaEtFAM5L6WiYg9UZF71m47i/VKbQIhAN2NAEAiX8Q0MQNCgYvU/6TK+/5ApoQ5kcZ3uiMwwaI1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9702},"gitHead":"0951e1201e00a80cdee9da788011487fc6b40cf1","scripts":{"build":"tsc","prepare":"tsc"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.5.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"24.6.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.1.0_1776611123334_0.4815455635094983","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@capotej/harness","version":"1.1.1","license":"MIT","_id":"@capotej/harness@1.1.1","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"7135eaa1948c46ebfd9a74de8f29a3657627ebd9","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.1.1.tgz","fileCount":4,"integrity":"sha512-eXuJcYyKvFi285osa42YNUomf/Djs7zCigQeRSjyuIUkWEz34vaBeZXul6G2fd5sJ3Ne22N1mgrK9RPhD/WLWA==","signatures":[{"sig":"MEYCIQD1yXmet5npGwjuGlKIdT/4Hj1RZ3nYuhWPUddL2yj+BAIhAPblynuxniysn5V2ohRP/QjRTEHV51Cj81fGoWxw6BLm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10649},"gitHead":"1f79d78c51f023c714ed2898572da4d345adbfaa","scripts":{"build":"tsc","prepare":"tsc"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.5.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"24.6.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.1.1_1776622427455_0.2718202390268887","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@capotej/harness","version":"1.2.0","license":"MIT","_id":"@capotej/harness@1.2.0","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"5f398086897d74dd3779fc234eaa3d7e1654f13e","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.2.0.tgz","fileCount":4,"integrity":"sha512-6MfzYcBPjBhz77XKrxMIj/nPSHTVuO+uR0lkXbR+Y6MTHFyP2uaS2zql4lfMKR8BIuD0GSCQ8AFPLmuzi70RrQ==","signatures":[{"sig":"MEYCIQDvoKwpivjoC3wxubdPkD2yfje63UlPq/sEEW6IXzJ6qQIhALPg220uiKav9vlVKxh87ucp9i3TE13bUgcEZkeqUq00","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12204},"gitHead":"5fc47b018b05ca8a50418fc8f723fbeb422760c8","scripts":{"build":"tsc","prepare":"tsc"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.5.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"24.6.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.2.0_1776633119778_0.34386541409796","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@capotej/harness","version":"1.3.0","license":"MIT","_id":"@capotej/harness@1.3.0","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"a9099bccd15f076ebc18abc4265e828d5b787b8f","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.3.0.tgz","fileCount":4,"integrity":"sha512-XIrtXTnLVyBxmHQMSVJ8BXn0PRWSRBbVTjT65I5Bzt2udvXWt7NEtyVaa3kYK+1aGWsrQkOJGNNknjLS3zHJ9Q==","signatures":[{"sig":"MEUCIQCNJswl4u9rpPnpGukTbssD3hkNtfi4PM5LVF7x/y2CrQIgSluZ2/8hY+GxVLb4QeKFzpoBnpLIzDlYlioeF8pQXZ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14391},"gitHead":"6009c86112d1cb9a49d2b9e79a91df1eb4d7309d","scripts":{"build":"tsc","prepare":"tsc"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.5.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"24.6.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.3.0_1776650443911_0.6974633742880241","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@capotej/harness","version":"1.3.1","license":"MIT","_id":"@capotej/harness@1.3.1","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"8986b50a96b91e1ddad8b6fe5f58a6d43d08823a","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.3.1.tgz","fileCount":4,"integrity":"sha512-E9bA0mac2uB8uEwRVfTIo6dUXp+out3qz0oZxWj4RHBgp7pJ8bAHQGoHdzJqWH380+BiEPrBdyDCDO0mrs6U8g==","signatures":[{"sig":"MEQCIGz5pB2NOGn9tksDJHKHlaUVDN7P0V2cLdoPgJZybYNdAiA3j/GsqHF/Xx/3WfE17xIFXsBYIicEY53gTlg2hqH/Cw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14391},"gitHead":"e0d278ea93fb2d8a98df4db5614317378774bc3b","scripts":{"build":"tsc","prepare":"tsc"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.5.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"24.6.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.3.1_1776652500209_0.47171268363262797","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@capotej/harness","version":"1.3.2","license":"MIT","_id":"@capotej/harness@1.3.2","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"e11927e36154b8503d078f45d765cdc00aaa6b0f","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.3.2.tgz","fileCount":4,"integrity":"sha512-y9LbYLNR0cIChS+E0gGpc2AH3SdE5cnlDLgPd4Mv5XFGYAhgYynYgvJ6SCvcTIC3qKu3PHWBKjoT/cTWHtDrzg==","signatures":[{"sig":"MEUCIHfGXyHUi5p6efkFcDbAjTmmqTEwgBqkBRcfh1xvhihoAiEAxm6FfEAtsYht+J/y9tD0vdoyn7y8AVZF70FYUnDM3k4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14497},"gitHead":"657cfdda419c788b83b3450ad9e9b2ff45355d7b","scripts":{"build":"tsc","prepare":"tsc"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.5.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"24.6.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.3.2_1776655717895_0.7812549176666628","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@capotej/harness","version":"1.3.3","license":"MIT","_id":"@capotej/harness@1.3.3","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"fe904f776a3ec497ce6246e868819af1cdc30c50","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.3.3.tgz","fileCount":4,"integrity":"sha512-gHjE8E85npvv0FMKaMWB5oH5DJFj6e2xkfUegh1U/fliT6rVWguT8dY2fmySJLihJVbrmeXB+GIyqxSbfytAQw==","signatures":[{"sig":"MEUCIE+liqIG5PLlvdP1IUIXg/lRWgdE4OoL1FtDiP6kNqgyAiEAg2SfuSQmkY4bLaMj1OnrrN5hlAEgDsgruxD1z52w7eU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14677},"gitHead":"caacaea57ef6f9b5c61b3ec404a8a653db94cb19","scripts":{"build":"tsc","prepare":"tsc"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.5.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"24.6.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.3.3_1776818687082_0.7736445476468907","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@capotej/harness","version":"1.4.0","license":"MIT","_id":"@capotej/harness@1.4.0","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"828aef17eadb1cd3877a191577e4a1cc0d0cd0f4","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.4.0.tgz","fileCount":4,"integrity":"sha512-sGIdCxETFW/f1J1moP/29E4T0K4/s5D6ozDXlvJoxCPAslkSFc900OdHAXqrj21/qmzwtJkSHqdRAsL0vzxWPA==","signatures":[{"sig":"MEYCIQDxVPP2ujEgkEyZzPtaInFddROAg2kMZQJIKl31GSwB7wIhAJg1E/ZAiRy+SiyFnNh/22pQnTiF1Vb73dMB3pCxmW3h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19949},"gitHead":"535b172dbb34954a129d12669a2d8ccf7dd93fa9","scripts":{"build":"tsc","prepare":"tsc"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.5.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"24.6.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.4.0_1776857860115_0.929362416462117","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@capotej/harness","version":"1.4.1","license":"MIT","_id":"@capotej/harness@1.4.1","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"631563bae992033aa70e7e27411fb5460dcc2249","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.4.1.tgz","fileCount":5,"integrity":"sha512-gLt+0KFd9MLlsR4fnnsmMF19FfAFsURtss98Nh/px46PuJPKtBRanozhXB5akR9O8g6YBgUK782phZ6ftd0McQ==","signatures":[{"sig":"MEUCIGFW4biBGuiHcnOwCpUsQA9PcPpxIi5p0nTDBtVbhwohAiEA/C6IawTFI7fE+tZQASNCyzCQo+WUm406YNmyqm9Wrto=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22849},"gitHead":"bc286a8677b143debc4c2f4c6d32b4c4d64a660a","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.5.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"24.6.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.4.1_1776908797048_0.5293808347266296","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@capotej/harness","version":"1.4.2","license":"MIT","_id":"@capotej/harness@1.4.2","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"eb44dd2a60e55743517e14731498f28f2adabf13","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.4.2.tgz","fileCount":5,"integrity":"sha512-g22hPTdKCvjFWg8W+0ipo6YvpQn8r9j2DvEHivm0s6SrZH5ymkGcCIUo3+kIpoe19mdFJHWn6ZzQ5c2D8UMgag==","signatures":[{"sig":"MEUCIQCBRLh+Dw30f6yFl1QohtP47Hq0U+ITqrmiEysANbRQugIgTZaLox6OLvVUXZvT2kQjB0dsJj5AcwtNIfPZTe18+sk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22849},"gitHead":"308b62a3b0a6eca37c3d8f80c3c8cb625623c4ad","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.5.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"24.6.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.4.2_1776914052684_0.5876656787970784","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"@capotej/harness","version":"1.4.3","license":"MIT","_id":"@capotej/harness@1.4.3","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"5d6046c10f93822ce73cdb42eb052254ccf9e946","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.4.3.tgz","fileCount":5,"integrity":"sha512-vtqsUASZaRARGw7ZrTHsleC6ZY5Chfqy1LfAy6nYeEhectOzz8CCobCLg/16I3ZfzDCpfYVhdBFgiaQiyN/MDA==","signatures":[{"sig":"MEUCIQDA0/DCOO94mAgpQOSl5KWon3vhubQk6MT9uCUHwMe0jAIgMPmUPPiVQzaKNqRGC1Eb+kSCESYFCTWbeqbX0eFjPYQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22849},"gitHead":"400c9cf0cfe455b949e63831a6e8bf3343c3e6a8","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.5.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"24.6.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.4.3_1776943197615_0.08284665363721588","host":"s3://npm-registry-packages-npm-production"}},"1.4.4":{"name":"@capotej/harness","version":"1.4.4","license":"MIT","_id":"@capotej/harness@1.4.4","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"8ed0a8077764adc54735b2f02bd913115d292eba","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.4.4.tgz","fileCount":5,"integrity":"sha512-WfAE0TQdq6f4GfwR+GSukc6TP9K3IiYmYWOCqsQlmrn47Treb5fkmC9l0vpW6cdaUJvu/4YTFeFQDM9tYFH/mQ==","signatures":[{"sig":"MEUCIQDBUmpe8AtW5ADx1FaA2kYjnVobbPyfpwxvFZqjkK7iswIgEhPeSwnGkYZzVj5KPAhO1AmMelAxXn+xxdYZ1/F3M+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24728},"gitHead":"1c071e8059dabd6793c67c18de072975feafbe2f","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"25.9.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.4.4_1777152740984_0.6897163735144789","host":"s3://npm-registry-packages-npm-production"}},"1.4.5":{"name":"@capotej/harness","version":"1.4.5","license":"MIT","_id":"@capotej/harness@1.4.5","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"dcf208d4d7454020c9996c30756788854d995b1d","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.4.5.tgz","fileCount":5,"integrity":"sha512-d6/OmOqq+5Wm+u4nRNCAqVJiTyM/3sM8SV+2RENiw7t4J6CYc3oXefHwE0l602DNwQdgKAJFWTyI9QH8h/3mqw==","signatures":[{"sig":"MEUCIQCNZXWC0tzDkwIQgqYcAsrGV78j/3D5MLRf5iCIEdmLpgIgG+UZHugvjAd+KeNO3bG7wvenkMpPy1GDL1HWgaqfFu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25776},"gitHead":"617efd6e5a9a55acf781fa62d1c52ef8d971f9d2","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"25.9.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.4.5_1777167441911_0.8282938742350601","host":"s3://npm-registry-packages-npm-production"}},"1.4.6":{"name":"@capotej/harness","version":"1.4.6","license":"MIT","_id":"@capotej/harness@1.4.6","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"8ab03425897f7cf7aa30ef02942dbd1579b2d97c","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.4.6.tgz","fileCount":5,"integrity":"sha512-VHzMQNMZS5zgxqipiQTVpSJv49S/zAPCB/cxcJmvHccGHa5BTVucO7/lpy6RzCKh1X5iZc/KnT0aIaniauP9GA==","signatures":[{"sig":"MEUCIHU6sRIGLVemqYx3I8CfEw8EdnhiFBLh0wmUlQseguPJAiEAvekG4NCNWniMkCHvCsVnmxp1oAxWu+JG3Uc1tkoTdZg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27995},"gitHead":"cc21ebe6a761d16fe47c91f24e4e4ac5118d2fd8","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","test:e2e":"node --test tests/e2e/cli.test.mjs","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint","test:e2e:cli":"node --test tests/e2e/cli.test.mjs"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"25.9.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.4.6_1777223088153_0.916157348979115","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@capotej/harness","version":"1.5.0","license":"MIT","_id":"@capotej/harness@1.5.0","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"5548958e87a33eaec318c912ba51b3738506ad3a","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.5.0.tgz","fileCount":5,"integrity":"sha512-6LepAmIjowYCDR/W8GWvEX6FOoxWB3IQfFnkRuqWzD5BvZyTD8b+QwNn757ZI3mkh7jf8W2+5YMfrQreolTx9w==","signatures":[{"sig":"MEUCIQDOoHKFhv8SNp9RmmG470m2B6FxrIbPqP2K59WyASvJ+QIgdpIhhgqZco2VZ9NPqfx9G7vEm66jkZlIRbBsHAzg56E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27995},"gitHead":"5f27f09417b291d7ac11fcaee84e11913aceca86","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","test:e2e":"node --test tests/e2e/cli.test.mjs","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint","test:e2e:cli":"node --test tests/e2e/cli.test.mjs"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"25.9.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.5.0_1777259823369_0.5988470258613494","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@capotej/harness","version":"1.6.0","license":"MIT","_id":"@capotej/harness@1.6.0","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"8b5b3a4ed40b1a2d222acbaadec56f3f825693f8","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.6.0.tgz","fileCount":5,"integrity":"sha512-QSI0yg/oikS18VrD7YP6fZI7Xk1VsUEwR00MHIM/5agy2VR4rOU8V3IKGpvRM7uOOAN7AtO2EzI4NR0Mf+BVCw==","signatures":[{"sig":"MEQCIBL6LKJbqvb4XiuWYlL5CH1Lhw1ypig6rkcYKfWrrox6AiAiGA5OZGLN4IoRbSs27JHaObvFjjGqJKp3pXWYfXJ8jQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27435},"gitHead":"50c6982b98f10a9be3bd21d7a0a618e80f1beb94","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","test:e2e":"node --test tests/e2e/cli.test.mjs","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint","test:e2e:cli":"node --test tests/e2e/cli.test.mjs"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"25.9.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.6.0_1777737403915_0.9985776418236414","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@capotej/harness","version":"1.6.1","license":"MIT","_id":"@capotej/harness@1.6.1","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"26b607a9b68acb6773b14cf85f9c1f090de3dce3","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.6.1.tgz","fileCount":5,"integrity":"sha512-BXk/YJXDKnZjBIngHovBHvmaI2LzvgSR11k3b9ccTp2gfwYPx1gO22UyY13CzOZ1uxn99N/ovfIv1NmBL5HRSg==","signatures":[{"sig":"MEYCIQDdGMIpX/edvp3z9ZxUPxXMAtm4r80ZaMyyGM6GsaZL2wIhAJXx47R+Fnsq859qnYHRuDomXtAf5LrZAPoz7G3SvRG6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28747},"gitHead":"64d302bb7ded64d6bbe5dd4630c858b19addf864","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","test:e2e":"node --test tests/e2e/cli.test.mjs","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint","test:e2e:cli":"node --test tests/e2e/cli.test.mjs"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"25.9.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.6.1_1777840123360_0.3200922635723822","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"@capotej/harness","version":"1.6.2","license":"MIT","_id":"@capotej/harness@1.6.2","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"11ce202fa804d45eab20f2dec3a09cfc7a945109","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.6.2.tgz","fileCount":5,"integrity":"sha512-lmN6GeVYvWgcmL3wKZx6ehpvNuwYRqrkr2Ea1rR9vga3Bc+Rlet/6ISZG3Yy5GGaBM6J9fqum5crTL8F6QdtUA==","signatures":[{"sig":"MEUCIQCFSNb7RkzdJaFzUAQuplI3rQy18CJ2bhkyinrdd+0e+AIgCJzGZ+BRAc7zQg9oCC6N1ZKOjQMaF+lKP0U65YMdr9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28855},"gitHead":"69130de52a264d4215c9d2dea490034b82899fe8","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","test:e2e":"node --test tests/e2e/cli.test.mjs","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint","test:e2e:cli":"node --test tests/e2e/cli.test.mjs"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"25.9.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.6.2_1777857270212_0.9877984088729117","host":"s3://npm-registry-packages-npm-production"}},"1.6.3":{"name":"@capotej/harness","version":"1.6.3","license":"MIT","_id":"@capotej/harness@1.6.3","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"49529ffb61ba51dcb2263f09a2d7975ed624b68c","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.6.3.tgz","fileCount":5,"integrity":"sha512-aybK+XJ+UveVJVJIGx3iJAFwbSYTkLdbhLidnGBgARuX/yez0j0FWFMPllrijutgtoqZbZpMO+Vv1z8aNteKvw==","signatures":[{"sig":"MEUCIQDY1Bh9go1vb+Mmwch32UWnAGnXZsN5BbCcijc7bKM5swIgHo8E4TEGm7OkGjlDGLc8W0MaW+cwT4EJPD0hT2XG0/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28855},"gitHead":"b68a62dadd1afbd2a4d1deff461db3bc8577452b","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","test:e2e":"node --test tests/e2e/cli.test.mjs","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint","test:e2e:cli":"node --test tests/e2e/cli.test.mjs"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"25.9.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.6.3_1777949367169_0.3609171020276989","host":"s3://npm-registry-packages-npm-production"}},"1.6.4":{"name":"@capotej/harness","version":"1.6.4","license":"MIT","_id":"@capotej/harness@1.6.4","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"2f93321077262c3b0c57a7a0c6115ecce90b62e5","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.6.4.tgz","fileCount":5,"integrity":"sha512-0TKdhBTbNHdKZqw1vKcLrL0BQeei6b7YJJjoE3m8ts4lXFq17Uhtatq6uj1nPBbkazaFiSvLaQp7X7Wq/HZq5w==","signatures":[{"sig":"MEQCIBgqLR3uJfPffiU0XC2VujVWOxkGdrHGeff7tJyq81ASAiAKR0RWwQw1aWhHC6RRh6jSiNNVOLmm4iAGCDXTb0Qr+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28855},"gitHead":"c86e6f97a91ac3a816730b2c486e867c02f3f75a","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","test:e2e":"node --test tests/e2e/cli.test.mjs","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint","test:e2e:cli":"node --test tests/e2e/cli.test.mjs"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"25.9.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.6.4_1777952552011_0.1959593736735843","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@capotej/harness","version":"1.7.0","license":"MIT","_id":"@capotej/harness@1.7.0","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"6ea4f7d7ecf96e92cdd3ad24aef9ea7373c518ad","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.7.0.tgz","fileCount":6,"integrity":"sha512-TTrSUCZfACWZihtzpybTIS5wv5MGefptzEeRId9cwmGwRqCaDK1luhHNFYyyePZ2AYaHTBjc+4TgvwJ5WlybNQ==","signatures":[{"sig":"MEUCIG49MuzZIVBRxcPh6JXFwX1vkWfRXM4ZGFm//mYcnHc0AiEA37NT7KHPBWVOjl4Yyu7EQxJWDF1tWxqEADGV50eDjz0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30267},"gitHead":"2ac9b2cf9dc739625e06cf78f9036c9a19690115","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc && cp -r src/seccomp-profiles bin/seccomp-profiles","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","test:e2e":"node --test tests/e2e/cli.test.mjs","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint","test:e2e:cli":"node --test tests/e2e/cli.test.mjs","test:coverage":"node --experimental-test-coverage --test-coverage-include=\"src/**\" --test-coverage-lines=80 --test-coverage-functions=80 --test-coverage-branches=80 tests/e2e/cli.test.mjs"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"26.0.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.7.0_1778962563723_0.16527698076955644","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@capotej/harness","version":"1.8.0","license":"MIT","_id":"@capotej/harness@1.8.0","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"32924bf55854b73eacb49892bc8f70999d983511","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.8.0.tgz","fileCount":7,"integrity":"sha512-vCUXfzJCkz7ToniLrllSoCS4pxsXMDwoR/gzmhV+VT8h0VPb+d/r8JhY5dO7YLhDiUtQN+sxH892JOg/ZkVlnA==","signatures":[{"sig":"MEYCIQC7XVNu+z0HMFxw4bgGNV/9cnyqvo8Lscin5ghI+rBxGgIhANzgCnoQMJ8pMfAYHmTFxN2bSeHj67Vt9Y0OlFFzn7Me","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32740},"gitHead":"f9a0efc2b14013502c199bb4b6e7b4d8200f5ac4","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc && cp -r src/seccomp-profiles bin/seccomp-profiles","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","test:e2e":"node --test tests/e2e/cli.test.mjs","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint","test:e2e:cli":"node --test tests/e2e/cli.test.mjs","test:coverage":"node --experimental-test-coverage --test-coverage-include=\"src/**\" --test-coverage-lines=80 --test-coverage-functions=80 --test-coverage-branches=80 tests/e2e/cli.test.mjs"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"26.0.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.8.0_1779654184491_0.6875872432977486","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"@capotej/harness","version":"1.8.1","license":"MIT","_id":"@capotej/harness@1.8.1","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"87dcf6a53ba94013f3ff1fd5895f1e62ca4c5281","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.8.1.tgz","fileCount":7,"integrity":"sha512-459N7D52L55UM9NUoa4MD1uF6yPJeyh8SWktyq/Vo0qTJoPSZ5dQQACayaxNW0q8aDowgtgny53GvEqOshLzEg==","signatures":[{"sig":"MEUCIFzX5/9X52akLOVTH88iM6T22ZzS20m+YUEaCdy7DXoZAiEA7O7ZoYMo9OxGqg2Q/J4tXvoGtJBUVPjCuKGAGoq30bo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33897},"gitHead":"c0f5984773d290179a3fe7dd95e45b90898a5630","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc && cp -r src/seccomp-profiles bin/seccomp-profiles","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","test:e2e":"node --test tests/e2e/cli.test.mjs","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint","test:e2e:cli":"node --test tests/e2e/cli.test.mjs","test:coverage":"node --experimental-test-coverage --test-coverage-include=\"src/**\" --test-coverage-lines=80 --test-coverage-functions=80 --test-coverage-branches=80 tests/e2e/cli.test.mjs"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"26.0.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.8.1_1779720887241_0.9145533439028877","host":"s3://npm-registry-packages-npm-production"}},"1.8.2":{"name":"@capotej/harness","version":"1.8.2","license":"MIT","_id":"@capotej/harness@1.8.2","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"f156dead3622f76de2f285c3504d7cc125301bc4","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.8.2.tgz","fileCount":7,"integrity":"sha512-ynJ3dCtxpR9kA55xSq9Qzw+UqdHcAXJfjTD45uuY+SeG/N1Cg4De9AbIdJA78ko87YQ8HIGEBo3jzzGQ6BT33A==","signatures":[{"sig":"MEQCIAbZqtoUrqQlZ/Z/zS/JEw3Wjx6JscUT4RCjt1DpJYl3AiBthRE4mzZp3UKOMDMgN1VHgWOyZ+m85KeOTuI7kNxnqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36193},"gitHead":"eded10635d21d6e22b0ea02223549a4274ab8451","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc && cp -r src/seccomp-profiles bin/seccomp-profiles","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","test:e2e":"node --test tests/e2e/cli.test.mjs","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint","test:e2e:cli":"node --test tests/e2e/cli.test.mjs","test:coverage":"node --experimental-test-coverage --test-coverage-include=\"src/**\" --test-coverage-lines=80 --test-coverage-functions=80 --test-coverage-branches=80 tests/e2e/cli.test.mjs"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"26.0.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.8.2_1780279235813_0.029432343944324035","host":"s3://npm-registry-packages-npm-production"}},"1.8.3":{"name":"@capotej/harness","version":"1.8.3","license":"MIT","_id":"@capotej/harness@1.8.3","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"homepage":"https://github.com/capotej/harness#readme","bugs":{"url":"https://github.com/capotej/harness/issues"},"bin":{"harness":"bin/harness.js"},"dist":{"shasum":"cfcc3f7206400436ccf6fdd1963ade6072ad4f8a","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.8.3.tgz","fileCount":7,"integrity":"sha512-oxpM///q66Zk8ct2694n1TIdp17kdDwhjr8+nzE/RskOianDgmsGk5/p+0aL8iaTwpTKsWxU9k8brPiVlu32Gg==","signatures":[{"sig":"MEQCIAoDTSRMKPFGL2ISYDyoXLV5JAdS+P0bqLvepfYh+XHEAiBnanbhIfqOIGkRhqqcyeZRvAhDq28WmNUa/SbGx+Ogdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36193},"gitHead":"df4a336806f4d599ca91798c62e2fae8a433e80b","scripts":{"lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","build":"tsc && cp -r src/seccomp-profiles bin/seccomp-profiles","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:ts":"biome check .","prepare":"tsc","test:e2e":"node --test tests/e2e/cli.test.mjs","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint","test:e2e:cli":"node --test tests/e2e/cli.test.mjs","test:coverage":"node --experimental-test-coverage --test-coverage-include=\"src/**\" --test-coverage-lines=80 --test-coverage-functions=80 --test-coverage-branches=80 tests/e2e/cli.test.mjs"},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"repository":{"url":"git+https://github.com/capotej/harness.git","type":"git"},"_npmVersion":"11.12.1","description":"Portable environment for running coding agents in a container","directories":{},"_nodeVersion":"26.0.0","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","markdownlint-cli2":"0.17.2"},"_npmOperationalInternal":{"tmp":"tmp/harness_1.8.3_1780662393367_0.4834306127786234","host":"s3://npm-registry-packages-npm-production"}},"1.8.4":{"name":"@capotej/harness","version":"1.8.4","description":"Portable environment for running coding agents in a container","bin":{"harness":"bin/harness.js"},"repository":{"type":"git","url":"git+https://github.com/capotej/harness.git"},"packageManager":"pnpm@10.33.2","license":"MIT","publishConfig":{"access":"public"},"scripts":{"build":"tsc && cp -r src/seccomp-profiles bin/seccomp-profiles","prepare":"tsc","lint":"pnpm lint:ts && pnpm lint:md && pnpm lint:sh && pnpm lint:docker && pnpm lint:actions","lint:ts":"biome check .","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:sh":"shellcheck entrypoint.sh entrypoint-opencode.sh entrypoint-hermes.sh","lint:docker":"hadolint Dockerfile Dockerfile.opencode Dockerfile.hermes","lint:actions":"actionlint","format":"biome format --write .","test:e2e:cli":"node --test tests/e2e/cli.test.mjs","test:e2e":"node --test tests/e2e/cli.test.mjs","test:coverage":"node --experimental-test-coverage --test-coverage-include=\"src/**\" --test-coverage-lines=80 --test-coverage-functions=80 --test-coverage-branches=80 tests/e2e/cli.test.mjs"},"dependencies":{"minimist":"^1.2.8"},"devDependencies":{"@biomejs/biome":"1.9.4","@types/minimist":"^1.2.5","@types/node":"^25.6.0","markdownlint-cli2":"0.17.2","typescript":"^6.0.2"},"gitHead":"fa0c62a3ccacfa03692e5463837e6adf107592e8","_id":"@capotej/harness@1.8.4","bugs":{"url":"https://github.com/capotej/harness/issues"},"homepage":"https://github.com/capotej/harness#readme","_nodeVersion":"26.0.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-il6NFKIr/d7sqaWQ4OKUyQOQCxgAM+JBCXdf4Avcj7Q/bhN6Pp2jYQb0f65emDGvm4Rum4qh5GGbU/R61vzp6A==","shasum":"be8f2cb92d1b5c907b65754436d6696942b4bab0","tarball":"https://registry.npmjs.org/@capotej/harness/-/harness-1.8.4.tgz","fileCount":7,"unpackedSize":36193,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIQD7VN3x3ykKCjNLCppOuRapZzdwdB+4IOomo2ZL778CjwIfWUe67a9Vk6kTO1R9EABf1EMYNXA9I9JRqEJycv0uAw=="}]},"_npmUser":{"name":"capotej","email":"jcapote@gmail.com"},"directories":{},"maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/harness_1.8.4_1780860295722_0.10686894832378346"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-12T17:15:47.834Z","modified":"2026-06-07T19:24:55.954Z","1.0.0":"2026-04-12T17:15:48.125Z","1.0.1":"2026-04-12T18:14:15.478Z","1.1.0":"2026-04-19T15:05:23.457Z","1.1.1":"2026-04-19T18:13:47.597Z","1.2.0":"2026-04-19T21:11:59.914Z","1.3.0":"2026-04-20T02:00:44.018Z","1.3.1":"2026-04-20T02:35:00.360Z","1.3.2":"2026-04-20T03:28:38.049Z","1.3.3":"2026-04-22T00:44:47.222Z","1.4.0":"2026-04-22T11:37:40.282Z","1.4.1":"2026-04-23T01:46:37.272Z","1.4.2":"2026-04-23T03:14:12.858Z","1.4.3":"2026-04-23T11:19:57.747Z","1.4.4":"2026-04-25T21:32:21.204Z","1.4.5":"2026-04-26T01:37:22.063Z","1.4.6":"2026-04-26T17:04:48.306Z","1.5.0":"2026-04-27T03:17:03.515Z","1.6.0":"2026-05-02T15:56:44.054Z","1.6.1":"2026-05-03T20:28:43.507Z","1.6.2":"2026-05-04T01:14:30.357Z","1.6.3":"2026-05-05T02:49:27.305Z","1.6.4":"2026-05-05T03:42:32.158Z","1.7.0":"2026-05-16T20:16:03.882Z","1.8.0":"2026-05-24T20:23:04.627Z","1.8.1":"2026-05-25T14:54:47.382Z","1.8.2":"2026-06-01T02:00:35.941Z","1.8.3":"2026-06-05T12:26:33.522Z","1.8.4":"2026-06-07T19:24:55.844Z"},"bugs":{"url":"https://github.com/capotej/harness/issues"},"license":"MIT","homepage":"https://github.com/capotej/harness#readme","repository":{"type":"git","url":"git+https://github.com/capotej/harness.git"},"description":"Portable environment for running coding agents in a container","maintainers":[{"name":"capotej","email":"jcapote@gmail.com"}],"readme":"<p align=\"center\" style=\"margin-bottom: 0\">\n  <img alt=\"harness\" src=\"logo-light.png#gh-light-mode-only\" width=\"250\">\n  <img alt=\"harness\" src=\"logo-dark.png#gh-dark-mode-only\" width=\"250\">\n</p>\n\n<p align=\"center\">\n  <strong>Run agents in a sandboxed container — ready to drop into any project.</strong>\n</p>\n\nHarness conveniently wraps Docker around three open-source coding agents — [`pi`](https://pi.dev/), [`opencode`](https://opencode.ai),\nand [`hermes`](https://github.com/NousResearch/hermes-agent) — so you can point one at a directory (or file) without giving it access to your entire machine.\n\n> **Documentation:** [capotej.github.io/harness](https://capotej.github.io/harness/)\n\n## Features\n\n- **Sandboxed by default** — capability-dropped container with `no-new-privileges`; the agent only sees the directory (or file) you mount.\n- **Three agents, one CLI** — switch between `pi`, `opencode`, and `hermes` with `-a`. Same flags, same flow.\n- **Supply-chain hardened** — the image is signed and verified with cosign and SLSA provenance on every run; dependencies installed inside the container are always pinned and verified where possible and a 7-day \"cooldown\" is used to mitigate supply-chain attacks.\n- **Local-first** — defaults to LM Studio with `gemma-4-e4b`. Drop in an `--env-file` to use Anthropic, OpenRouter, OpenAI, Gemini, and others.\n- **Stateful or one-shot** — interactive runs persist agent state under `$XDG_DATA_HOME/harness/<project>/<agent>/` (defaults to `~/.local/share/harness/`); one-shot prompts (`-p` or piped stdin) stay ephemeral.\n- **User skills** — automatically mounts `~/.agents/skills` and `~/.claude/skills` into the container so agents can discover and use custom skills. Disable with `--no-skills`.\n- **Context files** — automatically mounts `~/.agents/AGENTS.md` and `~/.claude/CLAUDE.md` into the agent's context directory so cross-agent rules apply inside the container. Disable with `--no-context-files` (`-nc`).\n- **Zero install** — `npx @capotej/harness` just works.\n\n## Quickstart\n\n[Docker](https://www.docker.com) is required. By default, harness uses LM Studio locally:\n\n```bash\nlms daemon up\nlms get google/gemma-4-e4b\n```\n\nThe container is preconfigured to use `gemma-4-e4b` via LM Studio's local API.\n\nYou can also specify a different local model with `-m`. HuggingFace-style names with slashes (e.g. `qwen/qwen3.5-9b`) work correctly in local mode:\n\n```bash\nnpx @capotej/harness -m \"qwen/qwen3.5-9b\" -p \"write a fizzbuzz in Go\"\n```\n\n### Using a cloud provider instead\n\n#### pi (default agent)\n\nIf you pass an API key for a supported provider via `--env-file`, [`pi`](https://pi.dev/) will use that provider instead of the local LM Studio setup. Supported keys:\n\n| Provider | Environment Variable |\n|----------|----------------------|\n| Anthropic | `ANTHROPIC_API_KEY` |\n| OpenRouter | `OPENROUTER_API_KEY` |\n| OpenAI | `OPENAI_API_KEY` |\n| Google Gemini | `GEMINI_API_KEY` |\n| Mistral | `MISTRAL_API_KEY` |\n| Groq | `GROQ_API_KEY` |\n| Cerebras | `CEREBRAS_API_KEY` |\n| xAI | `XAI_API_KEY` |\n| Hugging Face | `HF_TOKEN` |\n\nSee the [full list of supported providers](https://github.com/badlogic/pi-mono/blob/c779c14e91bc2ea65143e59b0dc1baf3646ba8c9/packages/coding-agent/docs/providers.md#api-keys) for more options. When using LM Studio locally, 16k context is sufficient.\n\n#### opencode agent\n\n[`opencode`](https://opencode.ai) uses LM Studio by default. Pass `--env-file` to switch to cloud mode — the agent auto-detects the provider from whichever API key is in the file:\n\n```bash\necho 'OPENROUTER_API_KEY=sk-...' > .env\nnpx @capotej/harness -e .env -p \"write me a fizzbuzz in Go\"\n```\n\nThat's it. Your current directory is mounted at `/workspace` inside the container and the agent works against it.\n\n## Contents\n\n- [Examples](#examples)\n- [Agents](#agents)\n  - [pi (default)](#pi-default)\n  - [opencode](#opencode)\n  - [hermes](#hermes)\n- [Security model](#security-model)\n  - [Sandbox](#sandbox)\n  - [Image verification](#image-verification)\n  - [Dependency cooldown](#dependency-cooldown)\n- [Persistence](#persistence)\n- [Reference](#reference)\n  - [CLI flags](#cli-flags)\n  - [Environment variables](#environment-variables)\n  - [Agent-specific behavior](#agent-specific-behavior)\n- [Deploying hermes as a claw](#deploying-hermes-as-a-claw)\n- [Developing](#developing)\n\n## Examples\n\n```bash\n# One-shot prompt\nnpx @capotej/harness -p \"write me a fizzbuzz in Go\"\n\n# Pipe via stdin\necho \"write me a fizzbuzz in Go\" | npx @capotej/harness\n\n# Interactive session (no -p, no piped stdin) — state persists under XDG data dir\nnpx @capotej/harness\n\n# Use a cloud provider via env file\nnpx @capotej/harness -e .env -p \"add a login endpoint\"\n\n# Override the model\nnpx @capotej/harness -m anthropic/claude-sonnet-4-5 -p \"refactor the auth module\"\n\n# Mount a single file instead of the whole directory\nnpx @capotej/harness -f ./script.py -p \"add type hints\"\n\n# Switch agents\nnpx @capotej/harness -a opencode -p \"write me a fizzbuzz in Go\"\nnpx @capotej/harness -a hermes -e .env -p \"add tests\"\n```\n\n`npx`, `bunx`, and `pnpm dlx` are interchangeable. Or install globally:\n\n```bash\nnpm install -g @capotej/harness\n# or\npnpm add -g @capotej/harness\n# or\nbun add -g @capotej/harness\n```\n\n## Agents\n\nPick an agent with `-a`. Default is `pi`.\n\n### pi (default)\n\n[`pi`](https://pi.dev/) defaults to LM Studio with `google/gemma-4-e4b` (16k context is enough). Pass an `--env-file` containing any of the keys below and `pi` switches to that provider:\n\n| Provider      | Environment Variable |\n|---------------|----------------------|\n| Anthropic     | `ANTHROPIC_API_KEY`  |\n| OpenRouter    | `OPENROUTER_API_KEY` |\n| OpenAI        | `OPENAI_API_KEY`     |\n| Google Gemini | `GEMINI_API_KEY`     |\n| Mistral       | `MISTRAL_API_KEY`    |\n| Groq          | `GROQ_API_KEY`       |\n| Cerebras      | `CEREBRAS_API_KEY`   |\n| xAI           | `XAI_API_KEY`        |\n| Hugging Face  | `HF_TOKEN`           |\n\nSee the [full provider list](https://github.com/badlogic/pi-mono/blob/c779c14e91bc2ea65143e59b0dc1baf3646ba8c9/packages/coding-agent/docs/providers.md#api-keys). The `-m` flag is forwarded directly.\n\n### opencode\n\n[`opencode`](https://opencode.ai) defaults to LM Studio in local mode. Pass `--env-file` to enter cloud mode — the agent auto-detects the provider from whichever API key is in the file (`ZAI_API_KEY`, `OPENROUTER_API_KEY`, `ANTHROPIC_API_KEY`, etc.). The `-m` flag takes a bare model name; the provider prefix is added for you.\n\n```bash\nnpx @capotej/harness -a opencode -e .env -p \"refactor the auth module\"\nnpx @capotej/harness -a opencode -e .env -m anthropic/claude-sonnet-4-5 -p \"add tests\"\n```\n\nTo pass env vars but stay in local mode, use `--local`:\n\n```bash\nnpx @capotej/harness -a opencode -e .env --local -p \"refactor the auth module\"\n```\n\nWhen using LM Studio locally, set the model's context length to at least 32k tokens.\n\n### hermes\n\n[`hermes`](https://github.com/NousResearch/hermes-agent) by NousResearch supports many providers. Pass `--env-file` to enter cloud mode — the agent auto-detects the provider from whichever API key is in the file. Use a `provider/model` for `-m`:\n\n```bash\nnpx @capotej/harness -a hermes -e .env -m anthropic/claude-sonnet-4-5 -p \"add tests\"\nnpx @capotej/harness -a hermes -e .env -m openrouter/auto -p \"add tests\"\n```\n\nCommon keys: `ANTHROPIC_API_KEY`, `OPENROUTER_API_KEY`, `OPENAI_API_KEY`, `GOOGLE_API_KEY`, [and others](https://github.com/NousResearch/hermes-agent/blob/main/.env.example). LM Studio context length should be at least 64k tokens.\n\n## Security model\n\nHarness layers protections at runtime, image, and dependency level.\n\n### Sandbox\n\nEach run starts the container with:\n\n- `--cap-drop=ALL --cap-add=NET_RAW` — minimal capability set\n- `--security-opt no-new-privileges:true` — block privilege escalation\n- `--security-opt seccomp=...` — inline seccomp profile blocks `socket(AF_ALG)` to prevent kernel crypto API access (a known container escape vector)\n- Only your mounted directory (or single file with `-f`) is visible to the agent\n\n### Image verification\n\nBy default, harness verifies that the container image was signed by the official CI workflow and carries a valid SLSA provenance attestation. This requires [cosign](https://github.com/sigstore/cosign):\n\n```bash\nbrew install cosign\n```\n\nVerified digests are cached at `~/.cache/harness/cosign-verified.json` so verification only runs once per image. Skip with `--no-verify` (or by setting `HARNESS_IMAGE_TAG`, which implies skip):\n\n```bash\nnpx @capotej/harness --no-verify -p \"write me a fizzbuzz in Go\"\n```\n\n### Dependency cooldown\n\nThe image build enforces a 7-day cooldown on dependency resolution — a guard against supply-chain compromises that are typically discovered and yanked within hours.\n\n- **pnpm**: `PNPM_MINIMUM_RELEASE_AGE=10080` (minutes) via environment variable\n- **uv**: `--exclude-newer` set to 7 days ago at image build time\n\nThe cooldown applies to transitive dependencies too. Older packages install normally.\n\n## Persistence\n\nInteractive runs (no `-p` and no piped stdin) store persistence data at `$XDG_DATA_HOME/harness/<project>/<agent>/` (defaults to `~/.local/share/harness/`). The `<project>` segment is the working directory path with `/` replaced by `_` and the home prefix stripped. This lets agents resume sessions, skip database migrations on repeat runs, and retain memories across invocations. Per-agent `mise` tool data and trust settings are persisted at `<persist-root>/mise/` and `<persist-root>/mise-state/` respectively. For the pi adapter, extensions/skills installed via `npm install -g` are persisted at `<persist-root>/npm/`, avoiding re-downloads on every boot.\n\nOne-shot runs (`-p` or piped stdin) are implicitly ephemeral — no persistence data is created. Use `--ephemeral` to force-disable persistence on interactive runs.\n\nIf an old `.harness/` directory exists in your working directory, harness will emit a deprecation warning with migration instructions.\n\n## Reference\n\n### CLI flags\n\n| Flag          | Alias | Description |\n|---------------|-------|-------------|\n| `--prompt`    | `-p`  | Pass a prompt directly to the agent |\n| `--env-file`  | `-e`  | Load environment variables into the container |\n| `--file`      | `-f`  | Mount a single file instead of the current directory |\n| `--model`     | `-m`  | Override the model used by the agent |\n| `--agent`     | `-a`  | Select agent: `pi`, `opencode`, `hermes` (default: `pi`) |\n| `--volumes`   | `-v`  | Additional volume mount (`host:container[:opts]`); may be repeated |\n| `--no-verify` |       | Skip cosign signature and provenance verification |\n| `--no-skills` |       | Disable mounting user skills directories (`~/.agents/skills`, `~/.claude/skills`) |\n| `--no-context-files` | `-nc` | Disable mounting global context files (`~/.agents/AGENTS.md`, `~/.claude/CLAUDE.md`) |\n| `--ephemeral` |       | Disable session persistence (implied by `-p` and piped stdin) |\n| `--local`     |       | Force local mode even with `-e` (use LM Studio / local defaults) |\n| `--help`      | `-h`  | Show help |\n\n### Environment variables\n\n| Variable             | Description |\n|----------------------|-------------|\n| `HARNESS_IMAGE_TAG`  | Override the Docker image tag (defaults to the package version). Setting this implies `--no-verify`. |\n\n### Agent-specific behavior\n\n- **pi** — `-m` is passed straight to the binary as `--model`.\n- **opencode** — `-m` is passed via the `OPENCODE_MODEL` env var. Without `-e`, uses LM Studio locally. With `-e`, enters cloud mode and auto-detects the provider from whichever API key is in the env file. Use `--local` to force local mode even with `-e`.\n- **hermes** — `-m` is passed as `--model` in `provider/model` form. Without `-e`, uses local config. With `-e`, enters cloud mode and auto-detects from env vars. Use `--local` to force local mode even with `-e`.\n\n## Deploying hermes as a claw\n\nYou can run `hermes` as a long-running \"claw\" — a persistent agent process reachable over a messaging gateway (e.g. Telegram). Three deployment targets are documented:\n\n- [fly.io](docs/deploying-to-fly.md)\n- [Kubernetes](docs/deploying-to-k8s.md)\n- [AWS (ECS Fargate or EC2 + SSM)](docs/deploying-to-aws.md)\n\n## Developing\n\nLink your local checkout globally:\n\n```bash\npnpm link --global\n# unlink with:\npnpm unlink --global @capotej/harness\n```\n\n### Building the image\n\n```bash\nmake image\n```\n\nBuilds `ghcr.io/capotej/harness` with Debian stable-slim, Node.js v24, `git`, [`@mariozechner/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.\n\nThe 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:\n\n```bash\ndocker buildx imagetools inspect debian:stable-slim --format '{{.Manifest.Digest}}'\n```\n\n### Linting\n\n```bash\npnpm lint           # all\npnpm lint:ts        # Biome\npnpm lint:md        # markdownlint\npnpm lint:sh        # shellcheck\npnpm lint:docker    # hadolint\npnpm lint:actions   # actionlint\npnpm format         # auto-format with Biome\n```\n\n`shellcheck`, `hadolint`, and `actionlint` are system binaries. Install with [mise](https://mise.jdx.dev/) (recommended):\n\n```bash\nmise install\n```\n\nOr install manually:\n\n```bash\nbrew install shellcheck hadolint actionlint\n```\n","readmeFilename":"README.md"}