# LearnHarness (slim)

> LearnHarness is an open-source desktop app for macOS, Windows and Linux that tests what a learner already understands, plans a route to a goal, teaches step by step and keeps a local knowledge graph, using the learner's own model keys.

- Full: https://www.anchorterminal.com/tools/learnharness.md (~9,050 tokens) · this version ~1,730 tokens · JSON https://www.anchorterminal.com/tools/learnharness.json · canonical https://www.anchorterminal.com/tools/learnharness
- Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · MCP: https://www.anchorterminal.com/mcp · Updated: 2026-10-30 · pricing https://www.anchorterminal.com/tools/learnharness#pricing · reviews https://www.anchorterminal.com/tools/learnharness#reviews
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)

**C · 59.3/100 · rank #648 of 1239 · #9 in Personal assistants · not agent-ready · confidence medium**


Assessment: The in-app agent reads files but cannot change them or run commands, and a bundled skill gives other agents a documented read-only view of sessions and the knowledge graph. The project is 14 days old at 0.4.0, its file reads reach the whole home directory without approval, and it has no security policy.

## Facts

- Kind: Agent harness · vendor: Amos Blomqvist · category: Personal assistants · legal entity: No legal entity found. Copyright Amos Blomqvist · provenance 56/100
- Auth: None · pricing: Free · x402: no · licence: AGPL-3.0-only
- Probe metrics: not measured yet (probes haven't run)
- Status: 0.4.0 of 29 October 2026. First release 0.3.0 on 17 October 2026, nine releases in all. Repository created 16 October 2026
- Where it runs: Electron desktop app on macOS (Apple Silicon, signed and notarised DMG and ZIP), Windows x64 (unsigned NSIS installer) and Linux x64 (AppImage and .deb). It starts a local Next.js server on 127.0.0.1
- What it does: Probes what the learner understands, plans a dependency map to the goal, teaches one reasoning step at a time with prediction and check questions, and runs separate practice sessions. Background jobs research questions, read PDFs and build visual explanations and interactive demos
- Acts without asking: Reads, lists, finds and greps any file the learner's account can read, with paths resolved against the home directory, and searches and fetches web pages through a research sub-agent. No shell, file-write or message-sending tool was found
- Accounts: Model provider API keys (30 or more provider options), one custom OpenAI-compatible endpoint, sign-in with ChatGPT, GitHub Copilot or Grok, and an installed Claude Code CLI. Background use of a ChatGPT plan is on by default and has its own switch
- Credentials: Provider keys in `auth.json` and ChatGPT credentials in `chatgpt-credentials.json`, both plaintext JSON written at mode 0600, outside the learning-data folder. No OS keychain
- Memory: Sessions as JSON files under `chats/` and a knowledge graph of propositions and reasoning chains as JSONL under `graph/`, in the app's data folder. The graph records ideas encountered, not ratings of ability
- Deletion: Deleting a session can keep its graph nodes or remove every trace of the session from the graph ledgers (`preserve-graph` or `delete-nodes`)
- Agent access: A bundled skill (`skills/learnharness`) with a SKILL.md, a data-format reference and three standard-library Python readers for sessions and the graph, read-only. The local HTTP API needs a per-launch secret and is not documented for outside use. No MCP server for outside agents
- Network: Model providers, Tavily or Brave for search, Jina Reader as a fetch fallback, Deepgram for dictation (audio goes from the window to Deepgram), and GitHub Releases for updates. No telemetry module was found in the files read
- Updates: electron-updater checks GitHub Releases, downloads automatically and installs on quit. Settings has a switch to turn automatic checks off
- Cost: Free. Model, search and dictation usage are billed by those providers
- Activity: 4,204 stars, 652 forks and 265 open issues and pull requests on 30 October 2026 (GitHub API)

- Scores: Reliability 56, Performance pending, Schema & documentation 63, Agent ergonomics 60, Security & auth 52, Payments & pricing 60, Task success pending, Maintenance & community 71, Transparency & trust 60 · total over the 7 assessed categories
- Why: Reliability, Read with the local-software lines, as software the owner runs. · Schema & documentation, Graded on what an outside agent reads, the bundled skill, with the harness reading of the framework line. · Agent ergonomics, Harness reading, scored on what an agent using the skill or a person driving the app has to supply. · Security & auth, Harness reading of the framework checklist, as the Leon and Goose dossiers used. · Payments & pricing, Read with the self-hosted rule. · Maintenance & community, 0.4.0 was released on 29 October 2026, one day before this check (30 of 30). · Transparency & trust, AGPL-3.0-only, an OSI licence, with the whole app, prompts and skill in the public repository (30).
- Sources: 24, open questions: 14, both in the full twin
- Capabilities: assistant.memory, assistant.self-hosted, memory.graph, memory.read, web.search
- JSON: https://www.anchorterminal.com/api/v1/tools/learnharness.json
- Verify (for the vendor): the badge `https://www.anchorterminal.com/badges/learnharness.svg` or a link to https://www.anchorterminal.com/tools/learnharness from a page on learnharness.ai or one of its subdomains, or the README of github.com/amosblomqvist/learnharness, then `POST https://www.anchorterminal.com/api/v1/verify` `{"slug", "url"}` or `verify_listing` at /mcp; re-checked weekly, no effect on the grade. Snippets in the full twin.
- Support: Discord https://discord.gg/5tCHHQEB2e; https://github.com/amosblomqvist/learnharness/issues; more in the full twin

## Before you call it

1. Use the bundled skill (`skills/learnharness/SKILL.md`) to read a learner's record. It needs Python 3.10 or later and writes nothing
2. Pass `--format json` before the subcommand, for example `python3 -B scripts/graph.py --format json propositions`
3. Treat stored answer keys and teacher prose as model-authored. A proposition in the graph is not evidence the learner understood it
4. Do not read `auth.json`, which sits one folder above the data folder and holds provider keys in plain text
5. Close the app or re-read when a stable snapshot matters. The readers do not lock files while the app writes

## Similar tools

| Tool | Grade | Score | Shared capabilities | Slim |
| --- | --- | --- | --- | --- |
| ZeroClaw | BB | 70.6 | assistant.memory, assistant.self-hosted | https://www.anchorterminal.com/tools/zeroclaw.min.md |
| NanoClaw | B | 68.6 | assistant.memory, assistant.self-hosted | https://www.anchorterminal.com/tools/nanoclaw.min.md |
| Hermes Agent | B | 68.2 | assistant.memory, assistant.self-hosted | https://www.anchorterminal.com/tools/hermes-agent.min.md |
| OpenClaw | B | 67.4 | assistant.memory, assistant.self-hosted | https://www.anchorterminal.com/tools/openclaw.min.md |
| IronClaw | B | 66.8 | assistant.memory, assistant.self-hosted | https://www.anchorterminal.com/tools/ironclaw.min.md |


## Panel reviews (0, desk reviews from public material, no calls made)

