agent-hitch 0.2.8 → 0.2.10

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.
Files changed (414) hide show
  1. package/README.md +206 -137
  2. package/README.zh-CN.md +193 -119
  3. package/dist/scripts/canary-native-training.js +221 -0
  4. package/dist/scripts/canary-native-training.js.map +1 -0
  5. package/dist/scripts/canary-remote-training.js +246 -0
  6. package/dist/scripts/canary-remote-training.js.map +1 -0
  7. package/dist/scripts/canary-remote-verifier.js +124 -0
  8. package/dist/scripts/canary-remote-verifier.js.map +1 -0
  9. package/dist/scripts/canary-worker-host.js +113 -0
  10. package/dist/scripts/canary-worker-host.js.map +1 -0
  11. package/dist/scripts/canary-worker-peer.js +188 -0
  12. package/dist/scripts/canary-worker-peer.js.map +1 -0
  13. package/dist/scripts/check-architecture.js +4 -3
  14. package/dist/scripts/check-architecture.js.map +1 -1
  15. package/dist/src/adapters/catalog.js +2 -1
  16. package/dist/src/adapters/catalog.js.map +1 -1
  17. package/dist/src/adapters/providers/codex.js +65 -2
  18. package/dist/src/adapters/providers/codex.js.map +1 -1
  19. package/dist/src/adapters/providers/model-call.js +17 -1
  20. package/dist/src/adapters/providers/model-call.js.map +1 -1
  21. package/dist/src/adapters/providers/training-tool.js +29 -0
  22. package/dist/src/adapters/providers/training-tool.js.map +1 -0
  23. package/dist/src/artifacts/index.js +1 -1
  24. package/dist/src/artifacts/index.js.map +1 -1
  25. package/dist/src/artifacts/store.js +15 -10
  26. package/dist/src/artifacts/store.js.map +1 -1
  27. package/dist/src/backends/harbor/backend.js +24 -15
  28. package/dist/src/backends/harbor/backend.js.map +1 -1
  29. package/dist/src/backends/harbor/bridge-environment.js +12 -0
  30. package/dist/src/backends/harbor/bridge-environment.js.map +1 -0
  31. package/dist/src/backends/harbor/environment-config.js +2 -2
  32. package/dist/src/backends/harbor/environment-config.js.map +1 -1
  33. package/dist/src/backends/harbor/host-credential-helper.js +81 -0
  34. package/dist/src/backends/harbor/host-credential-helper.js.map +1 -0
  35. package/dist/src/backends/harbor/index.js +3 -0
  36. package/dist/src/backends/harbor/index.js.map +1 -1
  37. package/dist/src/backends/harbor/model-proxy-config.js +18 -1
  38. package/dist/src/backends/harbor/model-proxy-config.js.map +1 -1
  39. package/dist/src/backends/harbor/observation.js +61 -0
  40. package/dist/src/backends/harbor/observation.js.map +1 -0
  41. package/dist/src/backends/harbor/portable-regrade.js +150 -0
  42. package/dist/src/backends/harbor/portable-regrade.js.map +1 -0
  43. package/dist/src/backends/harbor/process.js +26 -5
  44. package/dist/src/backends/harbor/process.js.map +1 -1
  45. package/dist/src/backends/harbor/regrade.js +4 -1
  46. package/dist/src/backends/harbor/regrade.js.map +1 -1
  47. package/dist/src/backends/harbor/supervisor.js +22 -0
  48. package/dist/src/backends/harbor/supervisor.js.map +1 -1
  49. package/dist/src/backends/harbor/tools.js +2 -0
  50. package/dist/src/backends/harbor/tools.js.map +1 -1
  51. package/dist/src/backends/index.js +3 -0
  52. package/dist/src/backends/index.js.map +1 -1
  53. package/dist/src/cli/arguments.js +33 -0
  54. package/dist/src/cli/arguments.js.map +1 -1
  55. package/dist/src/cli/commands/capabilities.js +14 -1
  56. package/dist/src/cli/commands/capabilities.js.map +1 -1
  57. package/dist/src/cli/commands/daemon.js +19 -0
  58. package/dist/src/cli/commands/daemon.js.map +1 -1
  59. package/dist/src/cli/commands/eval.js +38 -10
  60. package/dist/src/cli/commands/eval.js.map +1 -1
  61. package/dist/src/cli/commands/local.js +130 -0
  62. package/dist/src/cli/commands/local.js.map +1 -0
  63. package/dist/src/cli/commands/model-node.js +26 -0
  64. package/dist/src/cli/commands/model-node.js.map +1 -0
  65. package/dist/src/cli/commands/models.js +72 -0
  66. package/dist/src/cli/commands/models.js.map +1 -0
  67. package/dist/src/cli/commands/run.js +36 -1
  68. package/dist/src/cli/commands/run.js.map +1 -1
  69. package/dist/src/cli/commands/training.js +32 -0
  70. package/dist/src/cli/commands/training.js.map +1 -0
  71. package/dist/src/cli/commands/worker.js +30 -2
  72. package/dist/src/cli/commands/worker.js.map +1 -1
  73. package/dist/src/cli/main.js +8 -0
  74. package/dist/src/cli/main.js.map +1 -1
  75. package/dist/src/cli/output.js +24 -2
  76. package/dist/src/cli/output.js.map +1 -1
  77. package/dist/src/control-plane/eval-records.js +2 -0
  78. package/dist/src/control-plane/eval-records.js.map +1 -1
  79. package/dist/src/control-plane/eval-recovery.js +7 -1
  80. package/dist/src/control-plane/eval-recovery.js.map +1 -1
  81. package/dist/src/control-plane/eval-scheduler.js +24 -50
  82. package/dist/src/control-plane/eval-scheduler.js.map +1 -1
  83. package/dist/src/control-plane/eval-submission-persist.js +30 -0
  84. package/dist/src/control-plane/eval-submission-persist.js.map +1 -0
  85. package/dist/src/control-plane/execution-observation-contract.js +60 -0
  86. package/dist/src/control-plane/execution-observation-contract.js.map +1 -0
  87. package/dist/src/control-plane/index.js +10 -0
  88. package/dist/src/control-plane/index.js.map +1 -1
  89. package/dist/src/control-plane/inference-manager.js +357 -0
  90. package/dist/src/control-plane/inference-manager.js.map +1 -0
  91. package/dist/src/control-plane/managed-gateway-receipt.js +26 -0
  92. package/dist/src/control-plane/managed-gateway-receipt.js.map +1 -0
  93. package/dist/src/control-plane/managed-service-recovery.js +158 -0
  94. package/dist/src/control-plane/managed-service-recovery.js.map +1 -0
  95. package/dist/src/control-plane/model-capture-planning.js +15 -1
  96. package/dist/src/control-plane/model-capture-planning.js.map +1 -1
  97. package/dist/src/control-plane/ordered-eval-control.js +221 -0
  98. package/dist/src/control-plane/ordered-eval-control.js.map +1 -0
  99. package/dist/src/control-plane/remote-backend-result.js +18 -0
  100. package/dist/src/control-plane/remote-backend-result.js.map +1 -0
  101. package/dist/src/control-plane/remote-execution-lease.js +15 -0
  102. package/dist/src/control-plane/remote-execution-lease.js.map +1 -0
  103. package/dist/src/control-plane/remote-execution-observation.js +108 -0
  104. package/dist/src/control-plane/remote-execution-observation.js.map +1 -0
  105. package/dist/src/control-plane/remote-model-routes.js +107 -0
  106. package/dist/src/control-plane/remote-model-routes.js.map +1 -0
  107. package/dist/src/control-plane/remote-observation-reporter.js +37 -0
  108. package/dist/src/control-plane/remote-observation-reporter.js.map +1 -0
  109. package/dist/src/control-plane/remote-offer-contract.js +48 -0
  110. package/dist/src/control-plane/remote-offer-contract.js.map +1 -0
  111. package/dist/src/control-plane/remote-rerun-journal.js +61 -0
  112. package/dist/src/control-plane/remote-rerun-journal.js.map +1 -0
  113. package/dist/src/control-plane/remote-result-transport.js +55 -9
  114. package/dist/src/control-plane/remote-result-transport.js.map +1 -1
  115. package/dist/src/control-plane/remote-verifier-import.js +52 -0
  116. package/dist/src/control-plane/remote-verifier-import.js.map +1 -0
  117. package/dist/src/control-plane/remote-verifier-result.js +61 -0
  118. package/dist/src/control-plane/remote-verifier-result.js.map +1 -0
  119. package/dist/src/control-plane/remote-verifier-source-transport.js +68 -0
  120. package/dist/src/control-plane/remote-verifier-source-transport.js.map +1 -0
  121. package/dist/src/control-plane/remote-work-coordinator.js +103 -47
  122. package/dist/src/control-plane/remote-work-coordinator.js.map +1 -1
  123. package/dist/src/control-plane/remote-work-inputs.js +26 -5
  124. package/dist/src/control-plane/remote-work-inputs.js.map +1 -1
  125. package/dist/src/control-plane/remote-work-recovery.js +123 -34
  126. package/dist/src/control-plane/remote-work-recovery.js.map +1 -1
  127. package/dist/src/control-plane/remote-worker-artifacts.js +10 -7
  128. package/dist/src/control-plane/remote-worker-artifacts.js.map +1 -1
  129. package/dist/src/control-plane/remote-worker-cleanup.js +104 -0
  130. package/dist/src/control-plane/remote-worker-cleanup.js.map +1 -0
  131. package/dist/src/control-plane/remote-worker-client.js +156 -14
  132. package/dist/src/control-plane/remote-worker-client.js.map +1 -1
  133. package/dist/src/control-plane/remote-worker-codecs.js +160 -0
  134. package/dist/src/control-plane/remote-worker-codecs.js.map +1 -0
  135. package/dist/src/control-plane/remote-worker-generation-recovery.js +67 -0
  136. package/dist/src/control-plane/remote-worker-generation-recovery.js.map +1 -0
  137. package/dist/src/control-plane/remote-worker-ownership.js +51 -0
  138. package/dist/src/control-plane/remote-worker-ownership.js.map +1 -0
  139. package/dist/src/control-plane/remote-worker-protocol.js +85 -119
  140. package/dist/src/control-plane/remote-worker-protocol.js.map +1 -1
  141. package/dist/src/control-plane/remote-worker-runner.js +95 -18
  142. package/dist/src/control-plane/remote-worker-runner.js.map +1 -1
  143. package/dist/src/control-plane/remote-workers.js +33 -5
  144. package/dist/src/control-plane/remote-workers.js.map +1 -1
  145. package/dist/src/control-plane/rerun-recovery.js +89 -0
  146. package/dist/src/control-plane/rerun-recovery.js.map +1 -0
  147. package/dist/src/control-plane/rerun-scheduler.js +70 -96
  148. package/dist/src/control-plane/rerun-scheduler.js.map +1 -1
  149. package/dist/src/control-plane/rerun-source.js +57 -0
  150. package/dist/src/control-plane/rerun-source.js.map +1 -0
  151. package/dist/src/control-plane/worker-model-relay.js +76 -0
  152. package/dist/src/control-plane/worker-model-relay.js.map +1 -0
  153. package/dist/src/controller-runtime/hash.js +3 -0
  154. package/dist/src/controller-runtime/hash.js.map +1 -1
  155. package/dist/src/controller-runtime/index.js +2 -0
  156. package/dist/src/controller-runtime/index.js.map +1 -1
  157. package/dist/src/controller-runtime/observation.js +29 -0
  158. package/dist/src/controller-runtime/observation.js.map +1 -0
  159. package/dist/src/controller-runtime/resident.js +22 -0
  160. package/dist/src/controller-runtime/resident.js.map +1 -0
  161. package/dist/src/daemon/auth.js +7 -2
  162. package/dist/src/daemon/auth.js.map +1 -1
  163. package/dist/src/daemon/client.js +34 -1
  164. package/dist/src/daemon/client.js.map +1 -1
  165. package/dist/src/daemon/execution-observation.js +38 -0
  166. package/dist/src/daemon/execution-observation.js.map +1 -0
  167. package/dist/src/daemon/http.js +57 -0
  168. package/dist/src/daemon/http.js.map +1 -0
  169. package/dist/src/daemon/inference-prepare.js +47 -0
  170. package/dist/src/daemon/inference-prepare.js.map +1 -0
  171. package/dist/src/daemon/scheduler.js +4 -1
  172. package/dist/src/daemon/scheduler.js.map +1 -1
  173. package/dist/src/daemon/server.js +80 -82
  174. package/dist/src/daemon/server.js.map +1 -1
  175. package/dist/src/daemon/worker-observation.js +34 -0
  176. package/dist/src/daemon/worker-observation.js.map +1 -0
  177. package/dist/src/daemon/worker-ownership.js +71 -0
  178. package/dist/src/daemon/worker-ownership.js.map +1 -0
  179. package/dist/src/daemon/worker-routes.js +83 -15
  180. package/dist/src/daemon/worker-routes.js.map +1 -1
  181. package/dist/src/domain/execution-observation.js +2 -0
  182. package/dist/src/domain/execution-observation.js.map +1 -0
  183. package/dist/src/domain/index.js +1 -0
  184. package/dist/src/domain/index.js.map +1 -1
  185. package/dist/src/domain/inference.js +2 -0
  186. package/dist/src/domain/inference.js.map +1 -0
  187. package/dist/src/domain/runs.js.map +1 -1
  188. package/dist/src/domain/training.js +2 -0
  189. package/dist/src/domain/training.js.map +1 -0
  190. package/dist/src/domain/validation.js +11 -0
  191. package/dist/src/domain/validation.js.map +1 -1
  192. package/dist/src/domain/verifier-source.js +2 -0
  193. package/dist/src/domain/verifier-source.js.map +1 -0
  194. package/dist/src/domain/worker-recovery.js +2 -0
  195. package/dist/src/domain/worker-recovery.js.map +1 -0
  196. package/dist/src/evals/eval-logical-plan.js +8 -1
  197. package/dist/src/evals/eval-logical-plan.js.map +1 -1
  198. package/dist/src/evals/execution-leases.js +15 -2
  199. package/dist/src/evals/execution-leases.js.map +1 -1
  200. package/dist/src/evals/execution-plan.js +11 -1
  201. package/dist/src/evals/execution-plan.js.map +1 -1
  202. package/dist/src/evals/harbor-bridge-error.js +9 -0
  203. package/dist/src/evals/harbor-bridge-error.js.map +1 -1
  204. package/dist/src/evals/index.js +19 -0
  205. package/dist/src/evals/index.js.map +1 -1
  206. package/dist/src/evals/model-capture-plan.js +12 -0
  207. package/dist/src/evals/model-capture-plan.js.map +1 -1
  208. package/dist/src/evals/model-capture-runtime.js +25 -0
  209. package/dist/src/evals/model-capture-runtime.js.map +1 -1
  210. package/dist/src/evals/physical-work-plan.js +57 -0
  211. package/dist/src/evals/physical-work-plan.js.map +1 -0
  212. package/dist/src/evals/preparation-rerun.js +6 -0
  213. package/dist/src/evals/preparation-rerun.js.map +1 -1
  214. package/dist/src/evals/recovery.js +8 -1
  215. package/dist/src/evals/recovery.js.map +1 -1
  216. package/dist/src/evals/regrade-evidence.js +4 -4
  217. package/dist/src/evals/regrade-evidence.js.map +1 -1
  218. package/dist/src/evals/remote-execution-ownership.js +50 -0
  219. package/dist/src/evals/remote-execution-ownership.js.map +1 -0
  220. package/dist/src/evals/remote-infrastructure-retry.js +2 -0
  221. package/dist/src/evals/remote-infrastructure-retry.js.map +1 -1
  222. package/dist/src/evals/remote-lease-release.js +58 -0
  223. package/dist/src/evals/remote-lease-release.js.map +1 -0
  224. package/dist/src/evals/remote-rerun-execution.js +85 -0
  225. package/dist/src/evals/remote-rerun-execution.js.map +1 -0
  226. package/dist/src/evals/remote-trial.js +6 -0
  227. package/dist/src/evals/remote-trial.js.map +1 -0
  228. package/dist/src/evals/remote-verifier-assessment.js +85 -0
  229. package/dist/src/evals/remote-verifier-assessment.js.map +1 -0
  230. package/dist/src/evals/remote-verifier-contract.js +43 -0
  231. package/dist/src/evals/remote-verifier-contract.js.map +1 -0
  232. package/dist/src/evals/remote-verifier-execution.js +105 -0
  233. package/dist/src/evals/remote-verifier-execution.js.map +1 -0
  234. package/dist/src/evals/remote-verifier-journal.js +21 -0
  235. package/dist/src/evals/remote-verifier-journal.js.map +1 -0
  236. package/dist/src/evals/remote-verifier-outcome.js +51 -0
  237. package/dist/src/evals/remote-verifier-outcome.js.map +1 -0
  238. package/dist/src/evals/remote-verifier-rerun.js +134 -0
  239. package/dist/src/evals/remote-verifier-rerun.js.map +1 -0
  240. package/dist/src/evals/remote-verifier-selection.js +61 -0
  241. package/dist/src/evals/remote-verifier-selection.js.map +1 -0
  242. package/dist/src/evals/remote-verifier-source.js +33 -0
  243. package/dist/src/evals/remote-verifier-source.js.map +1 -0
  244. package/dist/src/evals/remote-worker-cleanup.js +46 -0
  245. package/dist/src/evals/remote-worker-cleanup.js.map +1 -0
  246. package/dist/src/evals/request.js +58 -1
  247. package/dist/src/evals/request.js.map +1 -1
  248. package/dist/src/evals/rerun-completion.js +39 -0
  249. package/dist/src/evals/rerun-completion.js.map +1 -0
  250. package/dist/src/evals/rerun-inputs.js +54 -0
  251. package/dist/src/evals/rerun-inputs.js.map +1 -1
  252. package/dist/src/evals/rerun-resume.js +70 -0
  253. package/dist/src/evals/rerun-resume.js.map +1 -0
  254. package/dist/src/evals/rerun-state.js +25 -0
  255. package/dist/src/evals/rerun-state.js.map +1 -0
  256. package/dist/src/evals/rerun-types.js.map +1 -1
  257. package/dist/src/evals/rerun.js +94 -101
  258. package/dist/src/evals/rerun.js.map +1 -1
  259. package/dist/src/evals/service.js +59 -5
  260. package/dist/src/evals/service.js.map +1 -1
  261. package/dist/src/evals/verifier-only-rerun.js +2 -16
  262. package/dist/src/evals/verifier-only-rerun.js.map +1 -1
  263. package/dist/src/evals/verifier-rerun-result.js +24 -0
  264. package/dist/src/evals/verifier-rerun-result.js.map +1 -0
  265. package/dist/src/evals/verifier-source-import.js +48 -0
  266. package/dist/src/evals/verifier-source-import.js.map +1 -0
  267. package/dist/src/evals/verifier-source.js +139 -0
  268. package/dist/src/evals/verifier-source.js.map +1 -0
  269. package/dist/src/foundation/base64.js +19 -0
  270. package/dist/src/foundation/base64.js.map +1 -0
  271. package/dist/src/foundation/config.js +10 -0
  272. package/dist/src/foundation/config.js.map +1 -1
  273. package/dist/src/foundation/credential-redaction.js +22 -9
  274. package/dist/src/foundation/credential-redaction.js.map +1 -1
  275. package/dist/src/foundation/index.js +1 -0
  276. package/dist/src/foundation/index.js.map +1 -1
  277. package/dist/src/foundation/process-identity.js +13 -9
  278. package/dist/src/foundation/process-identity.js.map +1 -1
  279. package/dist/src/inference/daemon-capacity.js +41 -0
  280. package/dist/src/inference/daemon-capacity.js.map +1 -0
  281. package/dist/src/inference/device-reservation.js +58 -0
  282. package/dist/src/inference/device-reservation.js.map +1 -0
  283. package/dist/src/inference/doctor.js +95 -0
  284. package/dist/src/inference/doctor.js.map +1 -0
  285. package/dist/src/inference/generation-recovery.js +83 -0
  286. package/dist/src/inference/generation-recovery.js.map +1 -0
  287. package/dist/src/inference/index.js +24 -0
  288. package/dist/src/inference/index.js.map +1 -0
  289. package/dist/src/inference/lock.js +331 -0
  290. package/dist/src/inference/lock.js.map +1 -0
  291. package/dist/src/inference/managed-launcher.js +35 -0
  292. package/dist/src/inference/managed-launcher.js.map +1 -0
  293. package/dist/src/inference/manifest.js +262 -0
  294. package/dist/src/inference/manifest.js.map +1 -0
  295. package/dist/src/inference/materialize.js +66 -0
  296. package/dist/src/inference/materialize.js.map +1 -0
  297. package/dist/src/inference/model-location.js +34 -0
  298. package/dist/src/inference/model-location.js.map +1 -0
  299. package/dist/src/inference/model-store.js +439 -0
  300. package/dist/src/inference/model-store.js.map +1 -0
  301. package/dist/src/inference/node-client.js +167 -0
  302. package/dist/src/inference/node-client.js.map +1 -0
  303. package/dist/src/inference/node-registry.js +79 -0
  304. package/dist/src/inference/node-registry.js.map +1 -0
  305. package/dist/src/inference/observation.js +79 -0
  306. package/dist/src/inference/observation.js.map +1 -0
  307. package/dist/src/inference/preflight.js +132 -0
  308. package/dist/src/inference/preflight.js.map +1 -0
  309. package/dist/src/inference/process-sglang.js +169 -0
  310. package/dist/src/inference/process-sglang.js.map +1 -0
  311. package/dist/src/inference/protocol-probe.js +29 -0
  312. package/dist/src/inference/protocol-probe.js.map +1 -0
  313. package/dist/src/inference/remote-model-store.js +24 -0
  314. package/dist/src/inference/remote-model-store.js.map +1 -0
  315. package/dist/src/inference/runtime-catalog.js +41 -0
  316. package/dist/src/inference/runtime-catalog.js.map +1 -0
  317. package/dist/src/inference/runtime-store.js +93 -0
  318. package/dist/src/inference/runtime-store.js.map +1 -0
  319. package/dist/src/inference/service-attachment.js +46 -0
  320. package/dist/src/inference/service-attachment.js.map +1 -0
  321. package/dist/src/inference/service-inspection.js +38 -0
  322. package/dist/src/inference/service-inspection.js.map +1 -0
  323. package/dist/src/inference/sglang.js +279 -0
  324. package/dist/src/inference/sglang.js.map +1 -0
  325. package/dist/src/inference/supervisor.js +460 -0
  326. package/dist/src/inference/supervisor.js.map +1 -0
  327. package/dist/src/model-access/environment.js +28 -0
  328. package/dist/src/model-access/environment.js.map +1 -0
  329. package/dist/src/model-access/index.js +4 -0
  330. package/dist/src/model-access/index.js.map +1 -1
  331. package/dist/src/model-access/local-gateway-request.js +139 -0
  332. package/dist/src/model-access/local-gateway-request.js.map +1 -0
  333. package/dist/src/model-access/local-gateway.js +323 -0
  334. package/dist/src/model-access/local-gateway.js.map +1 -0
  335. package/dist/src/model-access/proxy.js +90 -5
  336. package/dist/src/model-access/proxy.js.map +1 -1
  337. package/dist/src/model-access/remote-model.js +58 -0
  338. package/dist/src/model-access/remote-model.js.map +1 -0
  339. package/dist/src/model-access/training.js +115 -0
  340. package/dist/src/model-access/training.js.map +1 -0
  341. package/dist/src/runs/adapter-process.js +2 -2
  342. package/dist/src/runs/adapter-process.js.map +1 -1
  343. package/dist/src/runs/executor-types.js +2 -0
  344. package/dist/src/runs/executor-types.js.map +1 -0
  345. package/dist/src/runs/executor.js +54 -34
  346. package/dist/src/runs/executor.js.map +1 -1
  347. package/dist/src/runs/index.js +1 -0
  348. package/dist/src/runs/index.js.map +1 -1
  349. package/dist/src/runs/local-inference-environment.js +59 -0
  350. package/dist/src/runs/local-inference-environment.js.map +1 -0
  351. package/dist/src/runs/local-inference-run.js +53 -0
  352. package/dist/src/runs/local-inference-run.js.map +1 -0
  353. package/dist/src/runs/outcome.js +22 -0
  354. package/dist/src/runs/outcome.js.map +1 -1
  355. package/dist/src/runs/records.js +9 -0
  356. package/dist/src/runs/records.js.map +1 -1
  357. package/dist/src/runs/request.js +58 -3
  358. package/dist/src/runs/request.js.map +1 -1
  359. package/dist/src/runs/training-evidence.js +22 -0
  360. package/dist/src/runs/training-evidence.js.map +1 -0
  361. package/dist/src/runs/training-runtime.js +20 -0
  362. package/dist/src/runs/training-runtime.js.map +1 -0
  363. package/dist/src/workers/execution-observation.js +32 -0
  364. package/dist/src/workers/execution-observation.js.map +1 -0
  365. package/dist/src/workers/index.js +2 -0
  366. package/dist/src/workers/index.js.map +1 -1
  367. package/dist/src/workers/remote-harbor-ownership.js +266 -0
  368. package/dist/src/workers/remote-harbor-ownership.js.map +1 -0
  369. package/dist/src/workers/remote-harbor-verifier.js +76 -0
  370. package/dist/src/workers/remote-harbor-verifier.js.map +1 -0
  371. package/dist/src/workers/remote-harbor-work-spec.js +66 -10
  372. package/dist/src/workers/remote-harbor-work-spec.js.map +1 -1
  373. package/dist/src/workers/remote-harbor-worker.js +56 -49
  374. package/dist/src/workers/remote-harbor-worker.js.map +1 -1
  375. package/dist/src/workers/remote-worker-host.js +33 -0
  376. package/dist/src/workers/remote-worker-host.js.map +1 -0
  377. package/docs/local-model-inference-spec.zh-CN.md +666 -0
  378. package/docs/schemas/controller-runtime-observation.schema.json +21 -0
  379. package/docs/schemas/eval-execution-plan.schema.json +1 -0
  380. package/docs/schemas/eval-request.schema.json +3 -1
  381. package/docs/schemas/execution-lease.schema.json +95 -1
  382. package/docs/schemas/execution-provider-status.schema.json +162 -28
  383. package/docs/schemas/inference-execution-evidence.schema.json +487 -0
  384. package/docs/schemas/inference-lock.schema.json +487 -0
  385. package/docs/schemas/inference-runtime-manifest.schema.json +156 -0
  386. package/docs/schemas/inference-service-record.schema.json +227 -0
  387. package/docs/schemas/local-inference-selection.schema.json +98 -0
  388. package/docs/schemas/local-model-manifest.schema.json +43 -0
  389. package/docs/schemas/model-node-binding.schema.json +34 -0
  390. package/docs/schemas/model-node-generation-release.schema.json +46 -0
  391. package/docs/schemas/ordered-eval-control.schema.json +39 -0
  392. package/docs/schemas/remote-execution-lease-grant.schema.json +45 -0
  393. package/docs/schemas/remote-harbor-work-spec.schema.json +325 -0
  394. package/docs/schemas/remote-model-binding.schema.json +21 -0
  395. package/docs/schemas/remote-physical-execution.schema.json +108 -0
  396. package/docs/schemas/remote-result-envelope.schema.json +9 -3
  397. package/docs/schemas/remote-tree-envelope.schema.json +17 -3
  398. package/docs/schemas/remote-verifier-result.schema.json +203 -0
  399. package/docs/schemas/remote-verifier-source.schema.json +52 -0
  400. package/docs/schemas/remote-verifier-work.schema.json +125 -0
  401. package/docs/schemas/remote-work-offer.schema.json +170 -34
  402. package/docs/schemas/remote-worker-execution-admission.schema.json +214 -0
  403. package/docs/schemas/remote-worker-generation-cleanup.schema.json +199 -0
  404. package/docs/schemas/remote-worker-registration.schema.json +226 -25
  405. package/docs/schemas/run-manifest.schema.json +211 -44
  406. package/docs/schemas/run-request.schema.json +2 -1
  407. package/docs/schemas/training-external-binding.schema.json +26 -0
  408. package/integrations/harbor/hitch_harbor_agent.py +366 -38
  409. package/integrations/harbor/hitch_harbor_environment.py +22 -1
  410. package/integrations/harbor/hitch_host_credentials.py +354 -0
  411. package/integrations/harbor/hitch_private_exec.py +150 -0
  412. package/integrations/model-call/cli.js +13 -5
  413. package/integrations/training-tool/cli.js +72 -0
  414. package/package.json +8 -2
package/README.md CHANGED
@@ -1,215 +1,284 @@
1
+ <div align="center">
2
+
1
3
  # Hitch
2
4
 
5
+ ### The execution layer for model and agent evaluation
6
+
3
7
  [![npm version](https://img.shields.io/npm/v/agent-hitch.svg)](https://www.npmjs.com/package/agent-hitch)
4
8
  [![GitHub release](https://img.shields.io/github/v/release/rsi-gear/agent-hitch)](https://github.com/rsi-gear/agent-hitch/releases)
9
+ [![License](https://img.shields.io/badge/license-Apache--2.0-green)](LICENSE)
5
10
  [![Discord](https://img.shields.io/badge/Discord-Join_chat-5865F2?logo=discord&logoColor=white)](https://discord.gg/cZ4NBbHDk)
6
11
 
7
- [English](README.md) | [简体中文](README.zh-CN.md)
12
+ English | [简体中文](README.zh-CN.md)
8
13
 
9
- **Reproducible runs for agent harnesses.**
14
+ **[User Guide](https://rsigear.xyz/docs/hitch/) · [Quick Start](#quick-start) · [How It Works](#how-it-works) · [Hitch & Harbor](#hitch-and-harbor) · [Parallelism & Recovery](#parallel-execution-and-recovery)**
10
15
 
11
- Hitch runs Codex, Claude Code, Pi, OpenCode, and DeepSeek Harness from exact
12
- versions or Git commits. Every run links the harness revision, immutable
13
- artifact, workspace, trajectory, logs, and evaluation evidence.
16
+ </div>
14
17
 
15
- ```text
16
- version or commit -> immutable artifact -> run or eval -> verifiable evidence
17
- ```
18
+ Evaluating models and agent harnesses means coordinating image builds,
19
+ sandboxes, harness versions, model endpoints, retries, and evidence. That work
20
+ grows as experiments run in parallel or move across machines.
18
21
 
19
- ```bash
20
- npm install --global agent-hitch
22
+ **Hitch manages the path from a task definition to a verifiable result bundle.**
23
+ Submit Harbor-compatible tasks with your chosen model and harness; Hitch
24
+ prepares, schedules, executes, and collects the results. Fix the harness to
25
+ compare models, or fix the model to compare harnesses.
21
26
 
22
- hitch run \
23
- --harness codex@version:0.92.0 \
24
- --prompt "Inspect this repository"
25
- ```
26
-
27
- > **Status:** pre-alpha. The core run, provenance, trajectory, feedback,
28
- > daemon, and Harbor evaluation paths are implemented.
29
-
30
- ## Why Hitch?
27
+ - [x] **Build and cache.** Pin harness versions and reuse verified artifacts and environment images.
28
+ - [x] **Adapt the harness.** Run Codex, Claude Code, and other supported harnesses through one interface.
29
+ - [x] **Connect the model.** Use hosted APIs or managed local and remote SGLang inference.
30
+ - [x] **Place the work.** Execute task sandboxes on local Docker or registered remote workers.
31
+ - [x] **Run and recover.** Share resource budgets, run trials in parallel, and preserve completed work through supported recovery paths.
32
+ - [x] **Collect the evidence.** Keep scores, trajectories, verifier evidence, and provenance in one result bundle.
31
33
 
32
- Git tells you which source changed. Hitch tells you exactly what ran and which
33
- evidence it produced.
34
+ > **Status:** pre-alpha. Capabilities below describe current `dev`; setup and
35
+ > support limits are covered in the [User Guide](https://rsigear.xyz/docs/hitch/).
34
36
 
35
- - **Reproduce** a run from an exact package version or source commit.
36
- - **Compare** harnesses and models through one execution contract.
37
- - **Audit** results with immutable artifacts, native events, canonical
38
- trajectories, logs, feedback, and eval records.
37
+ ## Quick Start
39
38
 
40
- Hitch is useful for teams building agent evals, harness experiments, coding
41
- agent infrastructure, and automated promotion pipelines.
39
+ You need **Node.js 22+**, Git, and model access. Local runs do not require Docker.
42
40
 
43
- ## Quick start
44
-
45
- Hitch requires Node.js 22 or newer.
41
+ **1. Install Hitch and authenticate the harness.** This example pins Codex to
42
+ an explicit version; complete its login flow before continuing.
46
43
 
47
44
  ```bash
48
- npm install --global agent-hitch
49
- hitch --version
45
+ npm install --global agent-hitch@0.2.10
46
+ npx --yes @openai/codex@0.92.0 login
50
47
  ```
51
48
 
52
- Run an exact harness version in an isolated Git worktree:
49
+ **2. Run from a clean Git repository.** `git status --short` must show no changes
50
+ for worktree mode. To include uncommitted files, choose
51
+ [`--workspace-mode copy`](docs/guide/en/versions-and-workspaces.md).
53
52
 
54
53
  ```bash
54
+ git status --short
55
55
  hitch run \
56
56
  --harness codex@version:0.92.0 \
57
57
  --workspace-mode worktree \
58
- --prompt "Inspect this repository" \
59
- --output jsonl
58
+ --prompt "Summarize this repository and its test commands. Do not modify files." \
59
+ --timeout 5m \
60
+ --output json
60
61
  ```
61
62
 
62
- The output includes a run ID. Use bounded trajectory and verifier views for
63
- automated consumers, or the full trajectory inspect view for explicit auditing:
63
+ **3. Inspect the result.** Replace `RUN_ID` with the returned `run_id`. Check its
64
+ status, exit code, and answer, then inspect the available trajectory.
64
65
 
65
66
  ```bash
67
+ hitch runs inspect RUN_ID --json
66
68
  hitch trajectory project RUN_ID --profile analysis --json
67
- hitch trajectory events RUN_ID --types tool/call,tool/result --limit 100 --json
68
- hitch trajectory inspect RUN_ID
69
- hitch verifier inspect RUN_ID --json
70
69
  ```
71
70
 
72
- `project` reconstructs the DSH surface and coalesces streaming chunks per request
73
- attempt, keeping retries and their finish reasons separate. `events`
74
- filters and pages at the source; `--field` drill-down additionally requires the
75
- `canonical_sha256` returned by either bounded view. Streamed views fail closed
76
- for legacy trajectory refs that do not pin a canonical SHA-256.
77
- Commands invoked with `--json` emit a stable JSON error envelope on stderr when
78
- they fail.
71
+ Records live under `~/.hitch/runs/RUN_ID/`. Managed workspaces are retained;
72
+ Hitch does not automatically merge agent changes into your source repository.
73
+ See the [complete Quick Start](https://rsigear.xyz/docs/hitch/quickstart) for
74
+ authentication options, model selection, and parallel submission examples.
75
+
76
+ ## How it works
77
+
78
+ ```mermaid
79
+ flowchart LR
80
+ tasks["Harbor-compatible tasks<br/>Model + harness"] --> prepare
81
+ subgraph hitch["Hitch execution layer"]
82
+ prepare["Build & cache<br/>Harness adapters"] --> execute["Task sandboxes<br/>Scheduling & recovery"]
83
+ execute <--> access["Model access<br/>Optional interaction capture"]
84
+ end
85
+ access <--> models["Hosted APIs<br/>Local / remote SGLang"]
86
+ execute --> bundle["Result bundle<br/>Trajectory · verifier evidence · provenance"]
87
+ access -.-> bundle
88
+ bundle -.-> candidate["Training-data candidate<br/>Optional export"]
89
+ ```
79
90
 
80
- Every run is stored below `~/.hitch/runs/RUN_ID` with its manifest, result,
81
- events, logs, and trajectory.
91
+ The CLI and daemon HTTP API drive the same execution layer. Tasks define the
92
+ instructions, environment, and verifier; Hitch manages preparation, execution,
93
+ and evidence publication. Each bundle links the result to its harness revision,
94
+ model identity, environment images, and execution records.
82
95
 
83
- ## Pin any harness revision
96
+ Model interaction capture depends on the harness, endpoint, and capture policy.
97
+ Training-data candidates carry eligibility and provenance for downstream review.
84
98
 
85
- Harness selection is explicit for every run:
99
+ [Build and cache](docs/environment-images.md) ·
100
+ [Execution and evidence contracts](docs/hitch-harbor-control-plane-implementation-status.md)
86
101
 
87
- ```bash
88
- # Fingerprint and use the executable already installed on this machine.
89
- hitch run --harness codex@installed --prompt "Inspect this repository"
102
+ ## Hitch and Harbor
90
103
 
91
- # Resolve and run an exact published version.
92
- hitch run --harness codex@version:0.92.0 --prompt "Inspect this repository"
104
+ Hitch adopts **Harbor's task definition format** for existing benchmarks and
105
+ custom tasks. Its [benchmark packages](docs/benchmark-packages.md) define task
106
+ inputs, tools, lifecycle hooks, and grading. Hitch manages experiment versions,
107
+ execution orchestration, recovery, and results.
93
108
 
94
- # Build and run an exact commit from a registered upstream repository.
95
- hitch run --harness codex@commit:0123456789abcdef --prompt "Inspect this repository"
96
- ```
109
+ | Capability | Harbor CLI | Hitch |
110
+ | --- | :---: | :---: |
111
+ | **Shared resource budget across evaluations** | — | ✅ |
112
+ | **Fair scheduling across evaluations** | — | ✅ |
113
+ | **Reattach live trials after a controller crash** | — | ✅ |
114
+ | Parallel trials, retries, and regrading | ✅ | ✅ |
115
+ | Resume interrupted evaluations | ✅ | ✅ |
97
116
 
98
- | Harness | Installed | Exact package version | Source commit |
99
- | --- | :---: | :---: | :---: |
100
- | Codex | | ✓ | ✓ |
101
- | Claude Code | ✓ | ✓ | — |
102
- | Pi | ✓ | ✓ | ✓ |
103
- | OpenCode | ✓ | ✓ | — |
104
- | DeepSeek Harness | ✓ | ✓ | ✓ |
117
+ Local CLI workflows. **—** = requires additional orchestration.
118
+ Fair scheduling requires known tasks; live recovery requires POSIX and retained
119
+ execution evidence. [Support details →](docs/guide/en/daemon.md)
120
+
121
+ <details>
122
+ <summary>Evidence and comparison scope</summary>
105
123
 
106
- Exact versions and commits are prepared as validated, content-addressed
107
- artifacts and reused from Hitch's local cache. Installed executables are useful
108
- for local work; immutable references are better when portability matters.
124
+ The recorded 2026-09-01 offline Harbor canary ran 20 trials with one environment
125
+ build, 19 cache hits, and zero OOMs. This validates that workload's cache reuse
126
+ and resource admission; it is not a speed or cost comparison against native Harbor.
127
+ [Validation record](docs/hitch-harbor-control-plane-implementation-status.md) ·
128
+ [Harness build reuse](docs/evals.md)
109
129
 
110
- ## Evidence from every run
130
+ [Harbor evaluations](https://www.harborframework.com/docs/run-jobs/run-evals) ·
131
+ [Harbor retry/resume](https://github.com/harbor-framework/harbor/blob/main/src/harbor/cli/jobs.py) ·
132
+ [Harbor regrade](https://www.harborframework.com/docs/run-jobs/regrade) ·
133
+ [Hitch scheduling and recovery](docs/daemon.md)
111
134
 
112
- Hitch records the chain from request to result:
135
+ </details>
113
136
 
114
- - requested reference and immutable resolved revision;
115
- - validated, content-addressed runnable artifact;
116
- - workspace, model identity, lifecycle, and terminal result;
117
- - normalized control-plane events and raw process logs;
118
- - redacted provider-native events where supported;
119
- - DSH-compatible canonical trajectory with SHA-256-bound files; and
120
- - versioned message feedback and bounded verifier/evaluation evidence.
137
+ ## Local and remote model inference
121
138
 
122
- Use the CLI to query runs and attach feedback without rewriting the trajectory:
139
+ Managed inference is included in current `dev`. Import a complete Hugging Face safetensors checkpoint once, then use the same
140
+ run and eval commands with a `local/<name>` model. Hitch chooses a pinned
141
+ CPU or CUDA preview runtime, starts the daemon and SGLang service when needed, and
142
+ records the immutable model/runtime/inference identities automatically.
123
143
 
124
144
  ```bash
125
- hitch runs list --json
126
- hitch verifier inspect RUN_ID --json
127
- hitch feedback list RUN_ID --json
128
- hitch feedback put RUN_ID \
129
- --message MESSAGE_ID \
130
- --rating positive \
131
- --note "Kept the change focused"
145
+ hitch models add /models/coder-checkpoint --name coder
146
+
147
+ hitch run \
148
+ --harness codex@version:0.145.0 \
149
+ --model local/coder \
150
+ --prompt "Inspect this repository"
132
151
  ```
133
152
 
134
- Machine-contract schemas are versioned in [`docs/schemas`](docs/schemas).
153
+ The local preview targets Linux/amd64 Docker with an Intel Xeon AMX CPU or a
154
+ compatible single NVIDIA CUDA GPU. Managed Codex requires the exact version above
155
+ and a supported model tool parser. Unsupported hardware never falls back to a cloud model.
156
+
157
+ For remote inference, use your Harness’s model API configuration or register a
158
+ managed model node. Node-bound models also use `local/<name>`; the binding selects
159
+ the remote GPU host. See the [model inference guide](https://rsigear.xyz/docs/hitch/model-inference)
160
+ for setup, Docker access, parallel capacity, and service recovery.
135
161
 
136
- ## Reproducible agent evals
162
+ ## Parallel execution and recovery
137
163
 
138
- Hitch integrates with [Harbor](https://github.com/harbor-framework/harbor) to
139
- evaluate an exact, portable harness revision in Docker:
164
+ Submit once. Follow the same Eval ID through execution and recovery.
165
+
166
+ - [x] Share CPU, memory, and GPU budgets across evaluations.
167
+ - [x] Give smaller evaluations a turn as task slots become available.
168
+ - [x] Reattach supported live trials after a daemon crash.
169
+ - [x] Collect finished results and continue unstarted tasks.
170
+ - [x] Repair selected failures while preserving valid results.
171
+
172
+ Live process recovery requires POSIX and retained execution evidence. Ordinary
173
+ Harness runs are not automatically resumed after a daemon crash.
174
+
175
+ [Setup, examples, and recovery limits →](https://rsigear.xyz/docs/hitch/daemon)
176
+
177
+ ## Evaluate models and harnesses
178
+
179
+ - [x] **Compare models:** keep the harness, tasks, and evaluation settings fixed.
180
+ - [x] **Compare harnesses:** keep the model and tasks fixed; change the harness or its revision.
181
+ - [x] **Evaluate without tools:** use the trusted `model-call` driver for compatible benchmark tasks.
182
+
183
+ The current execution backend is Harbor. The Docker example below requires
184
+ Python 3.12+, a running Docker daemon, and model credentials available to the
185
+ container. See [benchmark packages](docs/benchmark-packages.md) for custom tasks
186
+ and driver requirements.
140
187
 
141
188
  ```bash
142
189
  hitch eval setup harbor
143
190
  hitch eval doctor
144
-
145
- hitch eval run \
146
- --backend harbor \
147
- --dataset terminal-bench@2.0 \
148
- --harness codex@version:0.92.0 \
149
- --model openai/gpt-5.6
150
191
  ```
151
192
 
152
- Each eval links the resolved harness revision, content-addressed Hitch
153
- controller runtime, backend configuration, rewards, logs, and trajectory
154
- evidence. See [Harbor-backed agent evals](docs/evals.md) for setup and
155
- portability rules.
193
+ Start with the [one-task evaluation tutorial](https://rsigear.xyz/docs/hitch/evaluations)
194
+ and its bundled [Hello Hitch task](docs/guide/examples/hello-hitch). It covers
195
+ container authentication, execution, and result inspection before moving to a
196
+ larger benchmark. If a Hitch daemon owns your state root, use
197
+ `hitch eval run --daemon` or `hitch eval submit` as described in the guide.
156
198
 
157
- ## Built for automation
199
+ Every trial publishes a Hitch run with its model identity, harness revision,
200
+ controller runtime, backend configuration, rewards, logs, and trajectory. Valid zero scores remain
201
+ distinct from invalid observations. See the [Harbor reference](docs/evals.md)
202
+ for benchmark, resource, and portability contracts.
158
203
 
159
- - JSON and JSONL output with versioned schemas and typed errors
160
- - Direct execution or a persistent daemon with bounded concurrency
161
- - Shared, detached Git worktree, and independent-copy workspace modes
162
- - Timeouts, cancellation, process-tree cleanup, and interrupted-run recovery
163
- - Local state isolation through `--root <path>` or `HITCH_ROOT`
204
+ ## Supported harnesses
164
205
 
165
- Start a queue when you need long-lived execution:
206
+ | Harness | Installed executable | Exact package version | Source commit |
207
+ | --- | :---: | :---: | :---: |
208
+ | Codex | ✓ | ✓ | ✓ |
209
+ | Claude Code | ✓ | ✓ | — |
210
+ | Pi | ✓ | ✓ | ✓ |
211
+ | OpenCode | ✓ | ✓ | — |
212
+ | DeepSeek Harness | ✓ | ✓ | ✓ |
166
213
 
167
- ```bash
168
- hitch daemon start \
169
- --max-concurrent 4 \
170
- --capacity-cpu-millis 4000 \
171
- --capacity-memory-mib 8192 \
172
- --container-slots 4 \
173
- --capacity-gpus 1 \
174
- --eval-gpus 1
175
- hitch run --daemon --harness codex@version:0.92.0 --prompt-file task.md
176
- ```
214
+ Use `codex@installed` for a local executable, `codex@version:0.92.0` for an exact
215
+ package, or `codex@commit:COMMIT` with a real upstream commit. Evaluations require
216
+ a portable version or commit reference. See
217
+ [versions and workspaces](docs/guide/en/versions-and-workspaces.md) for reference
218
+ selection, artifact preparation, and workspace modes.
177
219
 
178
- Windows is covered on Node 22 and 24, including npm/agent `.cmd` shims and the
179
- packaged-harness cache/integrity path. GPU-backed Harbor trials require a
180
- Docker host with GPU container support and explicit `--capacity-gpus` plus
181
- `--eval-gpus`; Hitch never guesses GPU capacity. A repository maintainer can
182
- run the real NVIDIA gate through the manually dispatched
183
- `NVIDIA GPU hardware canary` workflow on a compatible self-hosted runner.
220
+ ## User Guide
221
+
222
+ **[Read the User Guide online](https://rsigear.xyz/docs/hitch/)** or browse the
223
+ [same Markdown in this repository](docs/guide/en/index.md).
224
+
225
+ | Guide | What you will learn |
226
+ | --- | --- |
227
+ | [Quick Start](docs/guide/en/quickstart.md) | Install, authenticate, run a task, and submit parallel work |
228
+ | [Local and remote model inference](docs/guide/en/model-inference.md) | Use remote APIs, managed local SGLang, and remote model nodes |
229
+ | [Versions and workspaces](docs/guide/en/versions-and-workspaces.md) | Pin the executable and choose worktree, copy, or shared mode |
230
+ | [Runs and evidence](docs/guide/en/runs-and-evidence.md) | Query results, trajectories, verifier evidence, and feedback |
231
+ | [First evaluation](docs/guide/en/evaluations.md) | Run a small Docker task and interpret valid and invalid results |
232
+ | [Daemon: parallelism and recovery](docs/guide/en/daemon.md) | Budget resources, share capacity, and recover interrupted evaluations |
233
+ | [Operations and troubleshooting](docs/guide/en/operations.md) | Inspect queues, cancel work, select state roots, and diagnose failures |
234
+ | [CLI reference](docs/guide/en/cli-reference.md) | Look up all commands, options, filters, and integration entry points |
184
235
 
185
- ## Documentation
236
+ <details>
237
+ <summary><strong>Technical references and platform notes</strong></summary>
186
238
 
187
239
  - [Design and architecture](docs/design.md)
188
- - [Harbor-backed evals](docs/evals.md)
240
+ - [Benchmark packages and task protocols](docs/benchmark-packages.md)
241
+ - [Harbor-backed evaluations](docs/evals.md)
189
242
  - [Verifier evidence](docs/verifier-evidence.md)
190
243
  - [Workspace isolation](docs/workspaces.md)
191
244
  - [Daemon design](docs/daemon.md)
245
+ - [Versioned machine-interface schemas](docs/schemas)
192
246
  - [Hitch 0.2 development spec](docs/hitch-0.2-development-spec.md)
193
247
  - [Release process](docs/releasing.md)
248
+ - [Contributing](CONTRIBUTING.md)
194
249
 
195
- ## Project status
250
+ Automation can use JSON/JSONL output, typed errors, bounded evidence queries,
251
+ timeouts, cancellation, and process-tree cleanup. Select a separate state root
252
+ with `--root` or `HITCH_ROOT` and use it consistently across commands.
253
+
254
+ Windows is covered on Node 22 and 24, including npm/agent `.cmd` shims and the
255
+ packaged-harness cache/integrity path. Live local Harbor process adoption after
256
+ a hard daemon crash is POSIX-only.
196
257
 
197
- Hitch is a pre-alpha local versioning and evidence layer. It complements Git;
198
- it does not currently provide a remote artifact registry, branches, tags,
199
- candidate promotion, or rollback policy.
258
+ GPU-backed Harbor trials require a compatible Docker host and explicit
259
+ `--capacity-gpus` plus `--eval-gpus`; Hitch never guesses GPU capacity.
260
+ Maintainers can run the `NVIDIA GPU hardware canary` workflow on a compatible
261
+ self-hosted runner.
262
+
263
+ </details>
264
+
265
+ ## Project status
200
266
 
201
- Remote artifact synchronization, named candidates, promotion records, and more
202
- harness adapters are planned.
267
+ Hitch is a pre-alpha execution layer for model and harness evaluation. Remote artifact
268
+ synchronization, named candidates, promotion records, and more harness adapters
269
+ are planned. It complements Git and currently provides no remote artifact
270
+ registry, branches, tags, candidate promotion, or rollback policy.
203
271
 
204
272
  ## Community
205
273
 
206
- Join the [Hitch community on Discord](https://discord.gg/cZ4NBbHDk) to ask
207
- questions, share feedback, and discuss agent-harness infrastructure.
274
+ Join [Discord](https://discord.gg/cZ4NBbHDk) to ask questions, share feedback,
275
+ and discuss model and agent evaluation infrastructure.
208
276
 
209
- Hitch draws inspiration from [Multica](https://github.com/multica-ai/multica)
210
- and uses [Harbor](https://github.com/harbor-framework/harbor) as its evaluation
211
- backend.
277
+ Hitch draws inspiration from [Multica](https://github.com/multica-ai/multica),
278
+ adopts [Harbor](https://github.com/harbor-framework/harbor)'s task definition format,
279
+ and integrates [SGLang](https://github.com/sgl-project/sglang) for managed local
280
+ and remote model inference.
212
281
 
213
282
  ## License
214
283
 
215
- Licensed under the [Apache License 2.0](LICENSE).
284
+ [Apache License 2.0](LICENSE).