agent-hitch 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +240 -126
- package/README.zh-CN.md +330 -0
- package/dist/bin/hitch.js +9 -0
- package/dist/bin/hitch.js.map +1 -0
- package/dist/scripts/check-release.js +25 -0
- package/dist/scripts/check-release.js.map +1 -0
- package/dist/scripts/check-syntax.js +32 -0
- package/dist/scripts/check-syntax.js.map +1 -0
- package/dist/src/adapters.js +461 -0
- package/dist/src/adapters.js.map +1 -0
- package/dist/src/artifacts.js +1081 -0
- package/dist/src/artifacts.js.map +1 -0
- package/dist/src/cli.js +699 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/config.js +53 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/controller-runtime/hash.js +353 -0
- package/dist/src/controller-runtime/hash.js.map +1 -0
- package/dist/src/controller-runtime/store.js +323 -0
- package/dist/src/controller-runtime/store.js.map +1 -0
- package/dist/src/daemon.js +461 -0
- package/dist/src/daemon.js.map +1 -0
- package/dist/src/domain/types.js +10 -0
- package/dist/src/domain/types.js.map +1 -0
- package/dist/src/domain/validate.js +240 -0
- package/dist/src/domain/validate.js.map +1 -0
- package/dist/src/engine.js +465 -0
- package/dist/src/engine.js.map +1 -0
- package/dist/src/errors.js +14 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/eval-tools.js +318 -0
- package/dist/src/eval-tools.js.map +1 -0
- package/dist/src/evals.js +313 -0
- package/dist/src/evals.js.map +1 -0
- package/dist/src/events.js +80 -0
- package/dist/src/events.js.map +1 -0
- package/dist/src/feedback/service.js +315 -0
- package/dist/src/feedback/service.js.map +1 -0
- package/dist/src/fs.js +45 -0
- package/dist/src/fs.js.map +1 -0
- package/dist/src/harbor-backend.js +280 -0
- package/dist/src/harbor-backend.js.map +1 -0
- package/dist/src/harness-reference.js +83 -0
- package/dist/src/harness-reference.js.map +1 -0
- package/dist/src/line-stream.js +20 -0
- package/dist/src/line-stream.js.map +1 -0
- package/dist/src/locks.js +38 -0
- package/dist/src/locks.js.map +1 -0
- package/dist/src/package-root.js +40 -0
- package/dist/src/package-root.js.map +1 -0
- package/dist/src/process.js +50 -0
- package/dist/src/process.js.map +1 -0
- package/dist/src/registry.js +81 -0
- package/dist/src/registry.js.map +1 -0
- package/dist/src/scheduler.js +162 -0
- package/dist/src/scheduler.js.map +1 -0
- package/dist/src/trajectories/contract.js +17 -0
- package/dist/src/trajectories/contract.js.map +1 -0
- package/dist/src/trajectories/format.js +127 -0
- package/dist/src/trajectories/format.js.map +1 -0
- package/dist/src/trajectories/projector.js +385 -0
- package/dist/src/trajectories/projector.js.map +1 -0
- package/dist/src/trajectories/store.js +281 -0
- package/dist/src/trajectories/store.js.map +1 -0
- package/dist/src/workspaces.js +858 -0
- package/dist/src/workspaces.js.map +1 -0
- package/docs/schemas/controller-runtime-manifest.schema.json +57 -0
- package/docs/schemas/controller-runtime-ref.schema.json +16 -0
- package/docs/schemas/message-feedback.schema.json +37 -0
- package/docs/schemas/trajectory-ref.schema.json +30 -0
- package/integrations/harbor/hitch_harbor_agent.py +176 -4
- package/package.json +19 -11
- package/bin/hitch.js +0 -9
- package/src/adapters.js +0 -361
- package/src/artifacts.js +0 -948
- package/src/cli.js +0 -505
- package/src/config.js +0 -51
- package/src/daemon.js +0 -416
- package/src/engine.js +0 -386
- package/src/errors.js +0 -12
- package/src/eval-tools.js +0 -331
- package/src/evals.js +0 -276
- package/src/events.js +0 -69
- package/src/fs.js +0 -43
- package/src/harbor-backend.js +0 -285
- package/src/harness-reference.js +0 -78
- package/src/line-stream.js +0 -17
- package/src/locks.js +0 -33
- package/src/process.js +0 -49
- package/src/registry.js +0 -84
- package/src/scheduler.js +0 -156
- package/src/workspaces.js +0 -893
package/README.md
CHANGED
|
@@ -1,40 +1,71 @@
|
|
|
1
1
|
# Hitch
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/agent-hitch)
|
|
4
|
+
[](https://github.com/rsi-gear/agent-hitch/releases)
|
|
5
|
+
[](https://discord.gg/cZ4NBbHDk)
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
agents through one stable, machine-oriented interface.
|
|
7
|
+
[English](README.md) | [简体中文](README.zh-CN.md)
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
designed as infrastructure for Recursive Self-Improvement (RSI), including harness evolution and model
|
|
10
|
-
evolution.
|
|
9
|
+
**Content-addressed version control and evidence storage for agent harnesses.**
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
Hitch makes every agent run traceable to an exact harness revision. It resolves
|
|
12
|
+
harness references to immutable identities, prepares content-addressed runnable
|
|
13
|
+
artifacts, executes them through a stable interface, and preserves the
|
|
14
|
+
trajectory and evaluation evidence produced by each run.
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Git can identify the harness source that changed. Hitch carries that identity
|
|
17
|
+
through build and execution:
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
```text
|
|
20
|
+
Harness ref
|
|
21
|
+
-> resolved revision
|
|
22
|
+
-> prepared artifact
|
|
23
|
+
-> run / eval
|
|
24
|
+
-> trajectory
|
|
25
|
+
-> feedback and evaluation evidence
|
|
26
|
+
|
|
27
|
+
Hitch controller
|
|
28
|
+
-> content-addressed runtime bundle
|
|
29
|
+
-> referenced by containerized evals
|
|
30
|
+
```
|
|
19
31
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
- a persistent local daemon with bounded concurrency;
|
|
25
|
-
- queued and active-run cancellation, timeouts, and process-tree cleanup;
|
|
26
|
-
- managed shared, Git worktree, and independent-copy workspace modes;
|
|
27
|
-
- Harbor-backed evaluation in Docker with normalized reward summaries;
|
|
28
|
-
- atomic manifests/results plus raw stdout and stderr logs; and
|
|
29
|
-
- conservative recovery of interrupted records after daemon restart.
|
|
32
|
+
Hitch is infrastructure for systems that develop, compare, and evolve agent
|
|
33
|
+
harnesses. It owns version resolution, runnable artifacts, execution records,
|
|
34
|
+
and evidence. Candidate generation, comparison policy, and promotion decisions
|
|
35
|
+
belong to the system using Hitch.
|
|
30
36
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
37
|
+
> **Status:** pre-alpha. The core identity and evidence path is implemented,
|
|
38
|
+
> including immutable revision resolution, prepared artifact caching, direct and
|
|
39
|
+
> daemon-backed runs, Harbor-backed evals, content-addressed controller runtimes,
|
|
40
|
+
> DSH-compatible canonical trajectories, and message feedback.
|
|
41
|
+
|
|
42
|
+
## Why harness version control?
|
|
43
|
+
|
|
44
|
+
An agent harness is more than a source commit. What actually ran can also depend
|
|
45
|
+
on the package release, build output, controller code, workspace mode, native
|
|
46
|
+
adapter, and mutable executable installed on a machine. A score or transcript
|
|
47
|
+
without those identities is difficult to audit and harder to reproduce.
|
|
48
|
+
|
|
49
|
+
Hitch preserves an explicit chain from a requested harness reference to the
|
|
50
|
+
evidence generated by its execution:
|
|
51
|
+
|
|
52
|
+
| Record | What it identifies |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| Harness reference | The version, commit, local source, or installed executable requested by the caller |
|
|
55
|
+
| Resolved revision | The immutable source identity selected for the run |
|
|
56
|
+
| Prepared artifact | The validated, content-addressed runnable build |
|
|
57
|
+
| Controller runtime | The exact Hitch runtime uploaded for a containerized eval |
|
|
58
|
+
| Run or eval record | The request, workspace, lifecycle, result, and links between identities |
|
|
59
|
+
| Canonical trajectory | The agent messages and tool activity in a stable DSH-compatible format |
|
|
60
|
+
| Feedback and eval evidence | Message-level feedback, verifier output, rewards, and backend records |
|
|
34
61
|
|
|
35
|
-
|
|
62
|
+
This is a local versioning and evidence layer, not a replacement for Git and not
|
|
63
|
+
yet a remote artifact registry. Hitch does not currently provide branches,
|
|
64
|
+
tags, diffs, candidate promotion, or rollback policy.
|
|
36
65
|
|
|
37
|
-
|
|
66
|
+
## Quick start
|
|
67
|
+
|
|
68
|
+
Hitch requires Node.js 22 or newer. Install it from npm:
|
|
38
69
|
|
|
39
70
|
```bash
|
|
40
71
|
npm install --global agent-hitch
|
|
@@ -42,25 +73,18 @@ hitch --version
|
|
|
42
73
|
hitch list --json
|
|
43
74
|
```
|
|
44
75
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
npx agent-hitch --help
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
For development from a checkout:
|
|
76
|
+
Resolve and prepare an exact harness version:
|
|
52
77
|
|
|
53
78
|
```bash
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
hitch list --json
|
|
79
|
+
hitch resolve codex@version:0.92.0 --json
|
|
80
|
+
hitch prepare codex@version:0.92.0 --json
|
|
57
81
|
```
|
|
58
82
|
|
|
59
|
-
Run
|
|
83
|
+
Run that exact version in an isolated Git worktree:
|
|
60
84
|
|
|
61
85
|
```bash
|
|
62
86
|
hitch run \
|
|
63
|
-
--harness codex@
|
|
87
|
+
--harness codex@version:0.92.0 \
|
|
64
88
|
--model gpt-5.6-terra \
|
|
65
89
|
--cwd /workspace/project \
|
|
66
90
|
--workspace-mode worktree \
|
|
@@ -68,42 +92,93 @@ hitch run \
|
|
|
68
92
|
--output jsonl
|
|
69
93
|
```
|
|
70
94
|
|
|
71
|
-
|
|
95
|
+
Every run writes an atomic manifest and result, raw process logs, normalized
|
|
96
|
+
events, and a canonical trajectory below `~/.hitch/runs/RUN_ID`. Inspect the
|
|
97
|
+
trajectory through the CLI:
|
|
72
98
|
|
|
73
99
|
```bash
|
|
74
|
-
hitch
|
|
100
|
+
hitch trajectory inspect RUN_ID --json
|
|
101
|
+
```
|
|
75
102
|
|
|
76
|
-
|
|
77
|
-
--daemon \
|
|
78
|
-
--harness codex@installed \
|
|
79
|
-
--model gpt-5.6-terra \
|
|
80
|
-
--cwd /workspace/project \
|
|
81
|
-
--prompt-file task.md \
|
|
82
|
-
--output jsonl
|
|
103
|
+
For development from a checkout:
|
|
83
104
|
|
|
84
|
-
|
|
85
|
-
|
|
105
|
+
```bash
|
|
106
|
+
npm install
|
|
107
|
+
npm run check
|
|
108
|
+
npm link
|
|
109
|
+
hitch list --json
|
|
86
110
|
```
|
|
87
111
|
|
|
88
|
-
|
|
112
|
+
## Harness references
|
|
113
|
+
|
|
114
|
+
Harness selection is explicit for every run. Exact package versions and Git
|
|
115
|
+
commits resolve to immutable identities and are prepared in Hitch's artifact
|
|
116
|
+
store.
|
|
89
117
|
|
|
90
118
|
```bash
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
--cwd /workspace/project \
|
|
94
|
-
--prompt-file task.md
|
|
119
|
+
# Use and fingerprint the executable already installed on this machine.
|
|
120
|
+
hitch run --harness codex@installed --prompt "Inspect this repository"
|
|
95
121
|
|
|
96
|
-
|
|
122
|
+
# Resolve, prepare, or run an exact published version.
|
|
123
|
+
hitch resolve codex@version:0.92.0 --json
|
|
124
|
+
hitch prepare codex@version:0.92.0 --json
|
|
125
|
+
hitch run --harness codex@version:0.92.0 --prompt "Inspect this repository"
|
|
126
|
+
|
|
127
|
+
# Build a commit from the registered upstream repository.
|
|
128
|
+
hitch run --harness codex@commit:0123456789abcdef --prompt "Inspect this repository"
|
|
129
|
+
|
|
130
|
+
# Build a clean commit from a local harness repository.
|
|
131
|
+
hitch run \
|
|
132
|
+
--harness 'pi@git+file:///workspace/pi#0123456789abcdef' \
|
|
133
|
+
--prompt "Inspect this repository"
|
|
97
134
|
```
|
|
98
135
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
136
|
+
Bare names such as `codex` are compatibility aliases for `codex@installed`.
|
|
137
|
+
Installed executables are useful for local work, but exact version or commit
|
|
138
|
+
references should be preferred when portability matters.
|
|
139
|
+
|
|
140
|
+
Version selectors require exact semantic versions; ranges and mutable tags such
|
|
141
|
+
as `latest` are not accepted. Short commit IDs are expanded and must be
|
|
142
|
+
unambiguous. Local Git repositories must be clean. Codex, Pi, and DeepSeek
|
|
143
|
+
Harness support source-commit preparation; Claude Code and OpenCode currently
|
|
144
|
+
support installed and exact-version sources.
|
|
145
|
+
|
|
146
|
+
Preparation executes registered package lifecycle or source-build commands with
|
|
147
|
+
the permissions of the Hitch process. Content addressing makes an artifact
|
|
148
|
+
auditable and cacheable; it does not make untrusted build code safe.
|
|
149
|
+
|
|
150
|
+
## Evidence from every run
|
|
151
|
+
|
|
152
|
+
Hitch keeps lifecycle events and agent trajectories as two related but distinct
|
|
153
|
+
records:
|
|
154
|
+
|
|
155
|
+
- normalized JSONL events describe Hitch's control plane, including resolution,
|
|
156
|
+
preparation, process lifecycle, cancellation, and terminal status;
|
|
157
|
+
- a DSH-compatible canonical trajectory records the agent session, messages,
|
|
158
|
+
tool calls, and tool results with an explicit fidelity level;
|
|
159
|
+
- `trajectory.ref.json` binds the run to the canonical trajectory and its
|
|
160
|
+
SHA-256 digest; and
|
|
161
|
+
- feedback sidecars attach versioned positive or negative ratings and notes to
|
|
162
|
+
assistant messages without rewriting the immutable trajectory.
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
hitch trajectory inspect RUN_ID
|
|
166
|
+
hitch feedback list RUN_ID --json
|
|
167
|
+
hitch feedback put RUN_ID \
|
|
168
|
+
--message MESSAGE_ID \
|
|
169
|
+
--rating positive \
|
|
170
|
+
--note "Kept the change focused" \
|
|
171
|
+
--json
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Machine-contract schemas are versioned in [`docs/schemas`](docs/schemas).
|
|
175
|
+
Runtime validation rejects unknown request fields and preserves typed errors
|
|
176
|
+
across the daemon HTTP boundary.
|
|
103
177
|
|
|
104
178
|
## Harbor-backed evals
|
|
105
179
|
|
|
106
|
-
|
|
180
|
+
Hitch can evaluate an exact, portable harness revision with
|
|
181
|
+
[Harbor](https://github.com/harbor-framework/harbor):
|
|
107
182
|
|
|
108
183
|
```bash
|
|
109
184
|
# Installs pinned Harbor into ~/.hitch/tools without changing system Python.
|
|
@@ -119,106 +194,145 @@ hitch eval run \
|
|
|
119
194
|
--max-concurrent 4
|
|
120
195
|
|
|
121
196
|
hitch eval list
|
|
122
|
-
hitch eval inspect
|
|
197
|
+
hitch eval inspect EVAL_ID --json
|
|
123
198
|
```
|
|
124
199
|
|
|
125
|
-
`hitch eval setup harbor` requires Python 3.12+ and creates an isolated virtual
|
|
126
|
-
environment at `~/.hitch/tools/harbor-<version>`. It does not install or start
|
|
127
|
-
Docker. `hitch eval doctor` checks Python, the selected Harbor installation,
|
|
128
|
-
the Docker daemon, and whether a common provider credential is present. Hitch
|
|
129
|
-
automatically prefers the managed Harbor installation for subsequent evals;
|
|
130
|
-
`--harbor` and `HITCH_HARBOR_PATH` remain explicit overrides.
|
|
131
|
-
|
|
132
200
|
Harbor owns task discovery, Docker lifecycle, verification, and rewards. Its
|
|
133
|
-
custom Hitch agent uploads a minimal Hitch runtime
|
|
134
|
-
|
|
135
|
-
|
|
201
|
+
custom Hitch agent uploads a minimal, SHA-256-addressed Hitch controller runtime
|
|
202
|
+
into each task container and executes the selected harness revision in `/app`.
|
|
203
|
+
The resulting eval record links the request, resolved revision, controller
|
|
204
|
+
runtime, backend configuration and logs, normalized result, reward summary, and
|
|
205
|
+
trajectory evidence.
|
|
136
206
|
|
|
137
|
-
Eval
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
credentials are forwarded by environment-variable reference; use
|
|
141
|
-
|
|
142
|
-
`~/.hitch/evals` and include the request, resolved revision, plan, generated
|
|
143
|
-
Harbor config, raw backend logs/result, normalized result, and JSONL events.
|
|
207
|
+
Eval accepts exact `version:` refs and `commit:` refs backed by a registered
|
|
208
|
+
remote source. Installed executables and local `git+file://` refs are rejected
|
|
209
|
+
because they are not portable into Harbor containers. Common provider
|
|
210
|
+
credentials are forwarded by environment-variable reference; use `--pass-env
|
|
211
|
+
NAME` for an additional variable.
|
|
144
212
|
|
|
145
|
-
|
|
213
|
+
See [Harbor-backed agent evals](docs/evals.md) for setup, portability rules, and
|
|
214
|
+
the execution boundary.
|
|
146
215
|
|
|
147
|
-
|
|
148
|
-
executable behavior; exact published versions and Git commits resolve to
|
|
149
|
-
immutable identities and are prepared in Hitch's artifact store.
|
|
216
|
+
## Stable execution layer
|
|
150
217
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
218
|
+
Versioned artifacts still need a consistent way to run. Hitch provides adapters
|
|
219
|
+
for Codex CLI, Claude Code, Pi, OpenCode, and DeepSeek Harness and normalizes
|
|
220
|
+
their invocation and lifecycle behavior behind one machine-oriented contract.
|
|
154
221
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
222
|
+
```text
|
|
223
|
+
caller -> Hitch CLI / daemon -> shared run engine -> Codex CLI
|
|
224
|
+
\----> Claude Code
|
|
225
|
+
\----> Pi
|
|
226
|
+
\----> OpenCode
|
|
227
|
+
\----> DeepSeek Harness
|
|
228
|
+
```
|
|
159
229
|
|
|
160
|
-
|
|
161
|
-
|
|
230
|
+
The direct CLI and persistent daemon use the same run engine, so revision
|
|
231
|
+
resolution, records, timeout, cancellation, and event behavior do not drift.
|
|
232
|
+
The runtime currently provides:
|
|
233
|
+
|
|
234
|
+
- executable discovery, version probing, and executable fingerprints;
|
|
235
|
+
- exact package-version and Git-commit resolution;
|
|
236
|
+
- immutable prepared artifacts with integrity-aware caching;
|
|
237
|
+
- direct execution with normalized JSONL events;
|
|
238
|
+
- a persistent local daemon with bounded concurrency;
|
|
239
|
+
- queued and active-run cancellation, timeouts, and process-tree cleanup;
|
|
240
|
+
- managed shared, Git worktree, and independent-copy workspace modes;
|
|
241
|
+
- atomic manifests and results plus raw stdout and stderr logs; and
|
|
242
|
+
- conservative recovery of interrupted records after daemon restart.
|
|
243
|
+
|
|
244
|
+
Run through the daemon when a long-lived queue is useful:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
hitch daemon start --max-concurrent 4
|
|
162
248
|
|
|
163
|
-
# Build a clean commit from a local harness repository.
|
|
164
249
|
hitch run \
|
|
165
|
-
--
|
|
166
|
-
--
|
|
250
|
+
--daemon \
|
|
251
|
+
--harness codex@version:0.92.0 \
|
|
252
|
+
--cwd /workspace/project \
|
|
253
|
+
--prompt-file task.md \
|
|
254
|
+
--output jsonl
|
|
255
|
+
|
|
256
|
+
hitch daemon status --json
|
|
257
|
+
hitch daemon stop
|
|
167
258
|
```
|
|
168
259
|
|
|
169
|
-
|
|
170
|
-
accepted. Short commit IDs are expanded and must be unambiguous. Local Git
|
|
171
|
-
repositories must be clean. Codex and Pi support source-commit preparation;
|
|
172
|
-
Claude Code and OpenCode currently support installed and exact-version sources.
|
|
260
|
+
Asynchronous submission and cancellation are also available:
|
|
173
261
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
262
|
+
```bash
|
|
263
|
+
hitch daemon submit \
|
|
264
|
+
--harness claude@version:EXACT_VERSION \
|
|
265
|
+
--cwd /workspace/project \
|
|
266
|
+
--prompt-file task.md
|
|
177
267
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
auditable and cacheable; it is not a security sandbox.
|
|
268
|
+
hitch daemon cancel RUN_ID
|
|
269
|
+
```
|
|
181
270
|
|
|
182
|
-
##
|
|
271
|
+
## State and isolation
|
|
183
272
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
runtime.
|
|
273
|
+
State is stored below `~/.hitch` by default. Use `--root <path>` or
|
|
274
|
+
`HITCH_ROOT` to relocate it. Each root owns its artifact store, controller
|
|
275
|
+
runtime store, run and eval records, daemon token, and queue.
|
|
188
276
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
\----> OpenCode
|
|
194
|
-
```
|
|
277
|
+
Native executable overrides use `HITCH_CODEX_PATH`, `HITCH_CLAUDE_PATH`,
|
|
278
|
+
`HITCH_PI_PATH`, `HITCH_OPENCODE_PATH`, and `HITCH_DEEPSEEK_PATH`.
|
|
279
|
+
|
|
280
|
+
Workspace modes make mutation boundaries explicit:
|
|
195
281
|
|
|
196
|
-
|
|
197
|
-
|
|
282
|
+
- `shared` runs directly in the source directory;
|
|
283
|
+
- `worktree` creates a detached Git worktree from a clean `HEAD`; and
|
|
284
|
+
- `copy` creates an independent filesystem copy.
|
|
285
|
+
|
|
286
|
+
Workspace isolation is not a process security sandbox.
|
|
287
|
+
|
|
288
|
+
## Design principles
|
|
289
|
+
|
|
290
|
+
- **Traceable by default:** every run links the requested reference, resolved
|
|
291
|
+
revision, runnable artifact, execution record, and evidence.
|
|
292
|
+
- **Immutable resolution:** mutable input is resolved before preparation or
|
|
293
|
+
execution, then recorded by identity.
|
|
294
|
+
- **Content-addressed reuse:** validated artifacts and controller runtimes are
|
|
295
|
+
reused by digest rather than copied per run.
|
|
296
|
+
- **Evidence without lossy abstraction:** stable canonical records coexist with
|
|
297
|
+
raw harness output and explicit trajectory fidelity.
|
|
298
|
+
- **Machine-first contracts:** structured output, versioned schemas, and typed
|
|
299
|
+
failures are the public interface.
|
|
300
|
+
- **Policy lives above Hitch:** mutation, ranking, promotion, and rollback remain
|
|
301
|
+
explicit decisions for the calling system.
|
|
302
|
+
- **Safe interruption:** cancellation targets the complete subprocess tree, and
|
|
303
|
+
interrupted workspace-mutating runs are never replayed implicitly.
|
|
198
304
|
|
|
199
305
|
## Planned work
|
|
200
306
|
|
|
307
|
+
- [ ] Comparison primitives for harness revisions and their evidence
|
|
308
|
+
- [ ] Named candidate and champion references
|
|
309
|
+
- [ ] Promotion and rollback records without embedding promotion policy
|
|
310
|
+
- [ ] Remote artifact and evidence synchronization
|
|
201
311
|
- [ ] Additional harness adapters
|
|
202
312
|
- [ ] Additional API provider support
|
|
203
313
|
- [ ] Local model inference support
|
|
204
314
|
|
|
205
|
-
##
|
|
315
|
+
## News
|
|
206
316
|
|
|
207
|
-
- **
|
|
208
|
-
|
|
209
|
-
-
|
|
210
|
-
|
|
211
|
-
- **
|
|
212
|
-
records.
|
|
213
|
-
- **Safe interruption:** cancellation targets the complete subprocess tree.
|
|
214
|
-
- **No implicit replay:** interrupted workspace-mutating runs fail visibly.
|
|
317
|
+
- **2026-08-20:** Hitch 0.2 development moved the project to strict TypeScript
|
|
318
|
+
compiled to ESM, added a shared SHA-256 controller runtime cache, recorded a
|
|
319
|
+
DSH-compatible canonical trajectory for every run, and introduced
|
|
320
|
+
lifecycle-bound message feedback.
|
|
321
|
+
- **2026-08-13:** Hitch added DeepSeek Harness support.
|
|
215
322
|
|
|
216
323
|
## Documentation
|
|
217
324
|
|
|
325
|
+
- [Hitch 0.2 development spec](docs/hitch-0.2-development-spec.md)
|
|
218
326
|
- [Design document](docs/design.md)
|
|
219
327
|
- [Agent daemon analysis and port](docs/daemon.md)
|
|
220
328
|
- [Workspace isolation](docs/workspaces.md)
|
|
221
329
|
- [Harbor-backed evals](docs/evals.md)
|
|
330
|
+
- [Release process](docs/releasing.md)
|
|
331
|
+
|
|
332
|
+
## Community
|
|
333
|
+
|
|
334
|
+
Join the [Hitch community on Discord](https://discord.gg/cZ4NBbHDk) to ask
|
|
335
|
+
questions, share feedback, and discuss agent-harness infrastructure.
|
|
222
336
|
|
|
223
337
|
## Acknowledgements
|
|
224
338
|
|