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.1

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.1
File Size Uploaded
lhht-0.3.1.tar.gz 376.9 kB Details

Built distribution (wheel)

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

Total release size: 764.2 kB

Release files / lhht-0.3.1.tar.gz

Download URL lhht-0.3.1.tar.gz
Size 376.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c9e8159f5ce132f098f93619fdca991828f516e8cc6c9b25b42f3a722459c575
BLAKE2b-256 checksum
How to use checksums
e71bb524d5a2b44326f188185a0e715938e80936c560cf3b6486b4dfd616ec00
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.1-py3-none-any.whl

Download URL lhht-0.3.1-py3-none-any.whl
Size 387.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
28ce9d748596c1af8eddaefa6d5110ff6c3797caac714e6723701ac025c5d47a
BLAKE2b-256 checksum
How to use checksums
a43344e41dd8074af9a26bcf70e440c7eff1522433febb0b2fd6d88e7110395c
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

This release

0.3.1 This release

2 release files

0.3.0

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