Agent skill

Harness 24h

by thu-nmrc in thu-nmrc/OpenHarness

A production-grade framework for long-running, autonomous agents based on Harness Engineering principles.

Apache-2.0Auto-check passedAgent Workflows

Install Harness 24h

skills CLI
$ npx skills add thu-nmrc/OpenHarness --skill harness-24h -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install thu-nmrc/OpenHarness harness-24h --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
harness-24h
GitHub stars
118
Token cost
~3.6k tokens
SKILL.md length
1,204 words
Files
28 (incl. scripts, references, assets)
Skills in repo
1
Repo updated
First seen
Licence
Apache-2.0

At a glance

A production-grade framework for long-running, autonomous agents based on Harness Engineering principles.

  • Works in 10 steps: Machine-verifiable contracts: mission.md… → Knowledge as system of record: playbook.md → Agent senses and effectors: Configured… → …
  • Tasks that involve Scheduled and recurring tasks
  • SKILL.md covers Core Concepts, Three-Layer Memory Architecture, Workflow A: User Describes a… and Workflow B: Executing a Task…, plus 4 more sections
  • Runs Python scripts from its folder; calls python3

What it does

Harness 24h is an agent skill from thu-nmrc/OpenHarness. A production-grade framework for long-running, autonomous agents based on Harness Engineering principles. Features three-layer self-healing memory, circuit breaker protection, KAIROS dream-mode consolidation, and multi-agent coordination. When a user describes a task idea, Agent automatically initializes the workspace, fills all template files, sets up the cron schedule, and begins execution immediately.

Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 30 other files, including scripts, reference files and assets (for example `CONTRIBUTING.md`, `README.md` and `UPDATE_LIST.md`).

It sits in Agent Workflows, covering Scheduled and recurring tasks and Autonomous loops. It works with Python. The repository describes itself as: Reliability harness for long-running OpenClaw agents: persistent state, strict task contracts, scheduled execution, and external validation. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Scheduled and recurring tasks
  • Tasks that involve Autonomous loops

Example prompts

  • “/harness-24h”

Requirements

  • Python 3

Workflow steps

10 steps, taken from the first numbered list in SKILL.md.

  1. Machine-verifiable contracts: mission.md and eval_criteria.md
  2. Knowledge as system of record: playbook.md
  3. Agent senses and effectors: Configured via harness_boot.py
  4. Solving long-term amnesia: Three-Layer Memory Architecture (see below)
  5. Externalized validation loop: harness_eval.py
  6. Mechanized constraints and entropy control: harness_cleanup.py
  7. Three-Layer Self-Healing Memory: Pointer index + topic files + grep-only stream
  8. Circuit Breaker Protection: Auto-block after N consecutive failures
  9. KAIROS Dream Mode: Offline memory consolidation during idle periods
  10. Multi-Agent Coordination: File-system IPC for parallel subtask execution

What it can do on your machine

Read from SKILL.md and the folder at commit 9379c08. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 9 files in scripts/ (Python, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Harness 24h loads about 3.6k tokens when it runs, and up to ~7.1k if it reads all its reference files. Until then it costs about 105 tokens; SKILL.md has 1,204 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~105
When it runs · the whole SKILL.md, loaded when a task matches
~3.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~7.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from thu-nmrc/OpenHarness at commit 9379c08, republished under its Apache-2.0 licence (© thu-nmrc). 1,204 words, ~3,595 tokens.

Download SKILL.mdSave it as .claude/skills/harness-24h/SKILL.md (or your agent's skills folder). This skill also uses 27 other files; get the full folder from GitHub.
name
harness-24h
description
A production-grade framework for long-running, autonomous agents based on Harness Engineering principles. Features three-layer self-healing memory, circuit breaker protection, KAIROS dream-mode consolidation, and multi-agent coordination. When a user describes a task idea, Agent automatically initializes the workspace, fills all template files, sets up the cron schedule, and begins execution immediately.

Harness-24h | 24-hour Harness Framework

This skill provides a complete framework for executing long-running, autonomous tasks based on the principles of Harness Engineering.

Key principle: The user only describes their task idea. Agent handles everything else — workspace creation, filling all files, setting up the cron schedule, and starting execution.

Core Concepts

The framework is built around 10 core components of Harness Engineering:

  1. Machine-verifiable contracts: mission.md and eval_criteria.md
  2. Knowledge as system of record: playbook.md
  3. Agent senses and effectors: Configured via harness_boot.py
  4. Solving long-term amnesia: Three-Layer Memory Architecture (see below)
  5. Externalized validation loop: harness_eval.py
  6. Mechanized constraints and entropy control: harness_cleanup.py
  7. Three-Layer Self-Healing Memory: Pointer index + topic files + grep-only stream
  8. Circuit Breaker Protection: Auto-block after N consecutive failures
  9. KAIROS Dream Mode: Offline memory consolidation during idle periods
  10. Multi-Agent Coordination: File-system IPC for parallel subtask execution

For detailed architecture, read references/architecture.md. For common anti-patterns to avoid, read references/anti-patterns.md.


Three-Layer Memory Architecture

LayerFile(s)PurposeAccess Pattern
L1heartbeat.mdCompact pointer index (< 2KB)Always in context
L2knowledge/*.mdTopic-specific knowledge filesOn-demand loading
L3logs/execution_stream.logAppend-only raw execution logGrep-only, never read fully

Strict Write Discipline: Only update L1 pointers AFTER harness_eval.py confirms success.


Workflow A: User Describes a New Task (FULLY AUTOMATIC)

When a user describes a task idea, follow ALL steps below without asking the user to fill in any files manually.

Step A1: Decide Workspace Path

Choose a workspace path based on the task name. Convention:

~/.openclaw/workspace/harness/{task-slug}/
Step A2: Initialize Workspace
bash
python3 {skill_dir}/scripts/harness_boot.py /path/to/workspace --init

This copies all template files and creates knowledge/, logs/, and output/ directories.

Step A3: Fill ALL Template Files Yourself

Based on the user's task description, Agent must write the following files completely. Do NOT leave any placeholder text.

File 1 — mission.md: Write the task contract with machine-checkable completion criteria.

File 2 — playbook.md: Write the step-by-step execution guide with explicit tools, URLs, and failure handling.

File 3 — eval_criteria.md: Write the external validation rules with Python code snippets.

File 4 — cron_config.md: Write the scheduling config with cron expression and prompt template.

File 5 — heartbeat.md: Write the initial Layer 1 pointer index.

IMPORTANT: Write to {workspace}/heartbeat.md (workspace root). Use the three-layer template format with System Status, Execution Pointer, Knowledge Index, and Active Alerts sections. Initial state: idle, Step 0, Circuit Breaker off.

File 6 — progress.md: Write the initial progress log at {workspace}/progress.md.

Step A4: Create Output Directory Structure
bash
mkdir -p /path/to/workspace/output
mkdir -p /path/to/workspace/knowledge
mkdir -p /path/to/workspace/logs
Step A5: Verify Workspace is Ready
bash
python3 {skill_dir}/scripts/harness_boot.py /path/to/workspace

The output must say "Workspace is ready". If it shows issues, fix them.

Step A6: Set Up Cron Schedules

Primary Schedule (Main Task Execution):

bash
python3 {skill_dir}/scripts/harness_setup_cron.py /path/to/workspace

Read the output and use the schedule tool with those parameters.

Secondary Schedule (KAIROS Dream Mode — REQUIRED):

Dream mode MUST be scheduled separately to run during off-hours (e.g., 3 AM daily). This is NOT optional — it prevents memory bloat and knowledge fragmentation.

Use the schedule tool with these parameters:

name: {task-name}-dream
type: cron
cron: 0 0 3 * * *  (daily at 3 AM, adjust timezone as needed)
repeat: true
prompt: |
  Run KAIROS dream mode memory consolidation for the harness task at /path/to/workspace.
  
  Execute:
  python3 {skill_dir}/scripts/harness_dream.py /path/to/workspace
  
  This consolidates fragmented knowledge/*.md files, prunes stale Layer 1 pointers,
  extracts patterns from logs/execution_stream.log, and updates playbook.md with
  distilled best practices. Only runs when the main task is idle.
Step A7: Execute the First Run Immediately

Do NOT wait for the first cron trigger. Begin executing using Workflow B below.


Workflow B: Executing a Task (Cron Trigger)

Step B1: Boot and Check Status
bash
python3 {skill_dir}/scripts/harness_boot.py /path/to/workspace

Read the output carefully:

  • If mission_complete → Stop.
  • If blocked or Circuit Breaker tripped → Stop. Wait for human intervention.
  • If stuck detected (status still running) → Boot will auto-recover.
  • Otherwise → Proceed.
Step B2: Mark Start
bash
python3 {skill_dir}/scripts/harness_heartbeat.py /path/to/workspace start
Step B3: Read Context (Cache-Aware Order)

Read in this order to maximize prompt cache hits (static content first):

  1. {workspace}/mission.md — goal and constraints (rarely changes)
  2. {workspace}/eval_criteria.md — validation rules (rarely changes)
  3. {workspace}/playbook.md — execution steps (semi-static)
  4. {workspace}/heartbeat.md — current state pointer (changes each run)
  5. Only load knowledge/*.md topic files relevant to the current step

How to find relevant knowledge topics:

bash
# List all registered topics
python3 {skill_dir}/scripts/harness_memory.py /path/to/workspace topics

# Search execution stream for keywords
python3 {skill_dir}/scripts/harness_memory.py /path/to/workspace search --query "timeout"

Then read only the knowledge/{topic}.md files mentioned in heartbeat.md's Knowledge Index section.

Step B4: Execute from Breakpoint

Perform the steps defined in playbook.md, starting from the step recorded in heartbeat.md.

During execution, actively use the memory system:

Log significant events (use liberally — this feeds KAIROS dream mode):

bash
python3 {skill_dir}/scripts/harness_memory.py /path/to/workspace stream \
  --step "Step 2.3" --event "Fetched 50 articles from API, took 12s"

python3 {skill_dir}/scripts/harness_memory.py /path/to/workspace stream \
  --step "Step 3.1" --event "Rate limit hit, waiting 60s" --level WARN

python3 {skill_dir}/scripts/harness_memory.py /path/to/workspace stream \
  --step "Step 4" --event "Validation failed: missing required field 'author'" --level ERROR

Save reusable knowledge (when you discover a pattern or workaround):

bash
python3 {skill_dir}/scripts/harness_memory.py /path/to/workspace learn \
  --topic "api_rate_limits" \
  --insight "GitHub API returns 403 after 5000 requests/hour. Wait 60s and retry with exponential backoff."

python3 {skill_dir}/scripts/harness_memory.py /path/to/workspace learn \
  --topic "data_validation" \
  --insight "Articles from source X often missing 'author' field. Use 'Unknown' as default and log warning."

This creates/updates knowledge/api_rate_limits.md and registers the pointer in heartbeat.md.

Step B5: Mark Completion or Failure

If succeeded:

bash
python3 {skill_dir}/scripts/harness_heartbeat.py /path/to/workspace done \
  --step "Step 4" --summary "Processed 50 articles, 3 validation warnings"

If failed:

bash
python3 {skill_dir}/scripts/harness_heartbeat.py /path/to/workspace fail \
  --step "Step 3" --error "API timeout after 3 retries"
Step B6: External Validation
bash
python3 {skill_dir}/scripts/harness_eval.py /path/to/workspace
Step B7: Entropy Control (Every 10 Runs)
bash
python3 {skill_dir}/scripts/harness_cleanup.py /path/to/workspace

This auto-compacts progress.md if it exceeds 2000 lines, archives old execution stream logs, and checks memory integrity.

Step B8: Mission Complete Check

If all completion criteria met:

bash
python3 {skill_dir}/scripts/harness_heartbeat.py /path/to/workspace mission_complete

Show full SKILL.md (491 more words)Show less

Workflow C: KAIROS Dream Mode (Scheduled Off-Hours)

When to run: Automatically via the secondary cron schedule set up in Step A6. Typically runs once daily at 3 AM.

What it does:

  1. Reads logs/execution_stream.log from the last 24 hours
  2. Extracts recurring patterns (errors, successes, warnings)
  3. Consolidates fragmented knowledge/*.md files
  4. Prunes stale Layer 1 pointers from heartbeat.md
  5. Updates playbook.md with distilled best practices
  6. Writes a human-readable journal to logs/dream_journal.md

Manual invocation (for testing or immediate consolidation):

bash
# Full dream cycle
python3 {skill_dir}/scripts/harness_dream.py /path/to/workspace

# Dry run (show what would be done without making changes)
python3 {skill_dir}/scripts/harness_dream.py /path/to/workspace --dry-run

# Only consolidate knowledge, skip playbook update
python3 {skill_dir}/scripts/harness_dream.py /path/to/workspace --skip-playbook

CRITICAL: Dream mode should ONLY run when the main task is idle (status != running). The scheduled prompt in Step A6 handles this check automatically.


Workflow D: Multi-Agent Parallel Execution (Optional)

When to use: When a single step in playbook.md involves processing multiple independent items (e.g., "Scrape 100 product pages", "Analyze 50 PDF documents").

When NOT to use: For sequential steps or when items depend on each other.

Step D1: Initialize Agents
bash
python3 {skill_dir}/scripts/harness_coordinator.py /path/to/workspace init --agents 3

This creates agents/worker-1/, agents/worker-2/, agents/worker-3/, each with inbox/, outbox/, and manifest.json.

Step D2: Dispatch Subtasks

For each independent item, dispatch a subtask:

bash
python3 {skill_dir}/scripts/harness_coordinator.py /path/to/workspace dispatch \
  --task "Scrape product page: https://example.com/product/123" \
  --step "Step 2.1"

python3 {skill_dir}/scripts/harness_coordinator.py /path/to/workspace dispatch \
  --task "Scrape product page: https://example.com/product/456" \
  --step "Step 2.1"

python3 {skill_dir}/scripts/harness_coordinator.py /path/to/workspace dispatch \
  --task "Scrape product page: https://example.com/product/789" \
  --step "Step 2.1"

Each task is written as an XML-like Markdown file to an available worker's inbox/.

Step D3: Execute Worker Tasks

Important: The coordinator does NOT auto-execute. You must manually process each worker's inbox.

For each worker (1, 2, 3):

bash
# Check if worker has tasks
ls /path/to/workspace/agents/worker-1/inbox/

# Read the task file
cat /path/to/workspace/agents/worker-1/inbox/task_abc123.md

# Execute the task according to its instructions
# ... (your actual scraping/processing logic here)

# Write result to outbox
cat > /path/to/workspace/agents/worker-1/outbox/result_abc123.md << 'EOF'
## Result: task_abc123

**Status**: success

**Output**:
Product title: Example Product
Price: $29.99
Stock: In stock
EOF
Step D4: Monitor and Collect

Check status:

bash
python3 {skill_dir}/scripts/harness_coordinator.py /path/to/workspace status

Collect all results from worker outboxes:

bash
python3 {skill_dir}/scripts/harness_coordinator.py /path/to/workspace collect

This reads all outbox/result_*.md files, updates worker manifests back to idle, and prints a summary.

Step D5: Cleanup

Archive all inbox/outbox files to logs/agent_archive/:

bash
python3 {skill_dir}/scripts/harness_coordinator.py /path/to/workspace cleanup

When to Use What

ScenarioToolTiming
Log a significant event during executionharness_memory.py streamEvery time something notable happens
Discover a reusable pattern or workaroundharness_memory.py learnWhen you solve a problem that might recur
Search past execution logs for debuggingharness_memory.py searchWhen investigating errors or stuck states
Consolidate fragmented knowledgeharness_dream.pyScheduled off-hours (e.g., 3 AM daily)
Process multiple independent itemsharness_coordinator.pyOnly when parallelization is beneficial
Check memory integrityharness_memory.py checkAfter manual edits to knowledge files

Critical Rules (NEVER Violate)

  1. heartbeat.md and progress.md always live at {workspace}/ root — not any subdirectory.
  2. Never leave placeholder text in any file — overwrite with real content before running.
  3. Never self-certify completion — always run harness_eval.py as the external validator.
  4. Never skip reading heartbeat.md — always resume from the recorded breakpoint.
  5. Never modify mission.md during execution — it is the user's constitution, read-only.
  6. Always execute the first run immediately after setup.
  7. Respect the circuit breaker — if tripped, do NOT attempt to bypass it.
  8. Log to execution stream liberally — use harness_memory.py stream for all significant events.
  9. Distill, don't dump — knowledge files should contain insights, not raw logs.
  10. Read static content first — mission.md and eval_criteria.md before dynamic state files.
  11. Always schedule KAIROS dream mode — it is NOT optional, memory will bloat without it.
  12. Never run dream mode while task is running — only during idle periods.
  13. Coordinator does not auto-execute — you must manually process worker inboxes.

© thu-nmrc, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 27 other files (scripts, references, assets) in the repository root of thu-nmrc/OpenHarness.

  • SKILL.md
  • CONTRIBUTING.md
  • LICENSE
  • README.md
  • UPDATE_LIST.md
  • VISION.md
  • assets/openharness-banner.png
  • references/anti-patterns.md
  • references/architecture.md
  • scripts/harness_boot.py
  • scripts/harness_cleanup.py
  • scripts/harness_coordinator.py
  • scripts/harness_dream.py
  • scripts/harness_eval.py
  • scripts/harness_heartbeat.py
  • scripts/harness_linter.py
  • scripts/harness_memory.py
  • scripts/harness_setup_cron.py
  • … and 10 more

Open the folder on GitHubat commit 9379c08

Compare with similar skills

Harness 24h next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Harness 24h compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Harness 24h this skillthu-nmrc/OpenHarness118—~3.6kAutomated safety check: PassApache-2.0
AI Automation WorkflowsNeverSight/learn-skills.dev2171 repos~2.6kAutomated safety check: PassNone
Autonomous Agent Harnessaffaan-m/ECC277k2 repos~2.9kAutomated safety check: PassMIT
Recurring Prompt LoopQwenLM/qwen-code28k—~2.5kAutomated safety check: PassApache-2.0
Autonomous Agent Harnessaffaan-m/ECC276k—~859Automated safety check: PassMIT
Golem Custom Snapshot Moonbitgolemcloud/golem1.5k—~1.9kAutomated safety check: PassCustom licence

Similar skills

  • AI Automation Workflows

    NeverSight/learn-skills.dev

    Build automated AI workflows combining multiple models and services.

    217 GitHub starsUsed in 1 repo~2.6k tokens
    Productivity & AutomationAuto-check passed
  • Transform Claude Code into a fully autonomous agent system with persistent memory, scheduled operations, computer use, and task queuing.

    277k GitHub starsUsed in 2 repos~2.9k tokens
    Agent WorkflowsAuto-check passed
  • Recurring Prompt Loop

    QwenLM/qwen-code

    Runs a prompt now and repeats it on a fixed interval or through self-paced wakeups, with subcommands to list or clear scheduled loop jobs.

    28k GitHub stars~2.5k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Claude Codeを永続的なメモリ、スケジュール済み操作、コンピュータ使用、タスクキューイングを備えた完全自動エージェントシステムに変換します。スタンドアロンエージェントフレームワーク(Hermes、AutoGPT)を、Claude Codeのネイティブcrons、dispatch、MCPツール、メモリを活用して置き換えます。ユーザーが継続的な自動操作、スケジュール済みタスク、または自己指令…

    276k GitHub stars~859 tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Enabling snapshot-based recovery and implementing custom snapshot save/load functions for MoonBit agents.

    1.5k GitHub stars~1.9k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Enabling snapshot-based recovery and implementing custom snapshot save/load functions for Rust agents.

    1.5k GitHub stars~2.4k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed

Works with

Questions about Harness 24h

What does Harness 24h do?

A production-grade framework for long-running, autonomous agents based on Harness Engineering principles. Harness 24h is an agent skill from thu-nmrc/OpenHarness. A production-grade framework for long-running, autonomous agents based on Harness Engineering principles.

When should I use Harness 24h?

Harness 24h fits situations like: tasks that involve Scheduled and recurring tasks; tasks that involve Autonomous loops.

How do I install Harness 24h in Claude Code?

Run `npx skills add thu-nmrc/OpenHarness --skill harness-24h -a claude-code`. Or copy the skill folder (the thu-nmrc/OpenHarness repository) into .claude/skills/harness-24h in your project. Claude Code loads it when a task matches its description.

How do I install Harness 24h in Codex?

Run `npx skills add thu-nmrc/OpenHarness --skill harness-24h -a codex`. Or copy the skill folder (the thu-nmrc/OpenHarness repository) into .agents/skills/harness-24h in your project. Codex loads it when a task matches its description.

Can I use Harness 24h in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add thu-nmrc/OpenHarness --skill harness-24h -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/harness-24h, .gemini/skills/harness-24h, .github/skills/harness-24h and .opencode/skills/harness-24h in your project.

What does Harness 24h need to run?

Going by SKILL.md and its folder, Harness 24h needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Harness 24h access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Harness 24h safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Harness 24h use?

Harness 24h is published under the Apache-2.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Harness 24h use?

About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.5k tokens, read only when the agent opens those files.

What are the alternatives to Harness 24h?

Skills that share tags, products or a category with Harness 24h: AI Automation Workflows (NeverSight/learn-skills.dev, 217 stars), Autonomous Agent Harness (affaan-m/ECC, 277k stars), Recurring Prompt Loop (QwenLM/qwen-code, 28k stars) and Autonomous Agent Harness (affaan-m/ECC, 276k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Harness 24h?

thu-nmrc (a GitHub user) maintains it in thu-nmrc/OpenHarness, which has 118 GitHub stars. The repository was last updated on April 1, 2026.

Source: thu-nmrc/OpenHarness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.