Skip to main content

LongHorizon-Harness — TON14 fork

This is my actively maintained fork of AMAP-ML/LongHorizon-Harness, a role-orchestrated harness (Manager → Executor → Auditor) that turns agent CLIs into long-horizon computer-use systems. Upstream went quiet after 2026-08-20 (v0.1.7), so the fork carries the project forward on its own line.

The complete original project documentation — install walkthroughs, the loop engineering story, benchmarks, configuration reference — is preserved verbatim from the v0.1.7 tag: see docs/upstream/README.md (English) and docs/upstream/README.zh-CN.md (中文). Everything below is specific to this fork.

What the fork adds

  • ZCode agent backend (lhht run --agent zcode): drives the headless runtime bundled with the ZCode desktop app on GLM models (glm-5.3 default, glm-5.3-flash), with role-scoped permission modes (plan for the manager and auditors, yolo for executors). The reasoning effort (low/high/max) rides in an isolated per-run copy of ZCode's session database plus a .zcode/config.json provider declaration written into the workspace — the operator's ~/.zcode is never touched.
  • Reasoning effort for every backend: on top of upstream's reasoning_effort chain (Codex, Claude Code, OpenCode), the DeepSeek Harness backend forwards the level through an llm-deepseek patch layer, and ZCode through its session store. Per-role, verbatim, no cross-backend mapping.
  • Bilingual control tokens: the manager/auditor parsers accept route lines and control markers in both English and Russian.
  • A modern toolchain floor: Python ≥ 3.14 (tomli fallbacks removed), Node.js ≥ 22 with CI provisioning 24; make check is the pre-push gate.
  • Honest CI: tests.yml runs the Python suite on ubuntu/windows × 3.14 plus a web job (frontend core suite + typecheck) on every push and pull request; release.yml builds and verifies distributions without publishing (the PyPI name belongs to upstream).

Installing

The PyPI package lh-harness is upstream's release and does not contain the work above — install from this repository:

pip install lhht            # or: uv tool install lhht

Naming note: the fork owns its identity end to end — the PyPI distribution, the console command, the import module (import lhht), the LHHT_* environment variables, and the .lhht/ state directory are all lhht. The original lh-harness installs alongside it cleanly, so both can drive the same project folder for comparison.

Building from source (what the development loop uses):

git clone https://github.com/TON14/LongHorizon-Harness.git
cd LongHorizon-Harness
npm run build --prefix frontend/web   # the Web workbench bundle
uv tool install --force .   # installs the `lhht` command

Developing

make help        # all targets
make check       # both suites + typecheck, everything expected green
make dev-api     # control API on 127.0.0.1:8799
make dev-web     # Vite dev server on :5173, proxying /api

The tool installs as lhht (import module and the .lhht/ state directory keep their historical names). The harness is also used to develop itself: a repo-root .lhht/config.toml defines the roles (manager/executor on glm-5.3-flash, auditor on glm-5.3, effort max), and tasks run with lhht run --task @task.md. Agents edit the working tree; the operator reviews, runs make check, and commits.

Credits

The foundation is the AMAP-ML team's work — every contributor is listed on the contributors page. The fork's line is maintained by TON14.

Metadata

Release files for lhht 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lhht 0.3.0
File Size Uploaded
lhht-0.3.0.tar.gz 373.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lhht 0.3.0
File Interpreter ABI Platform
lhht-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 756.1 kB

Release files / lhht-0.3.0.tar.gz

Download URL lhht-0.3.0.tar.gz
Size 373.2 kB
Tags Source
SHA-256 checksum
How to use checksums
0965e214ded0b885ca0fad66f7c0fcfc8508a509d2865bbe46b9734b4758ead2
BLAKE2b-256 checksum
How to use checksums
6469259d5a7c805dde9e11d1c578364c1c59c699b1ef7119436e51373c34b18f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / lhht-0.3.0-py3-none-any.whl

Download URL lhht-0.3.0-py3-none-any.whl
Size 382.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
efc0bd12af2ad4ab4075011a1f1d1c40dac9022f9145925a8b8bb7507e8c9030
BLAKE2b-256 checksum
How to use checksums
2b6666674b4a0300c404df4174c3c5515789a4eba393262ecfab9e323c856dfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.1

2 release files

This release

0.3.0 This release

2 release files

0.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page