docs(claude-config): research track closed — harness stays Claude Code, jcode + HyperAgent rejected

- research: ai-harness-layer, jcode-vs-claude-code, hyperagent-marketing-fit
  reports + INDEX rows (agent A/B/C, each verified via the new agent-wrap
  checklist; correction banners where a claim failed live test)
- decisions: 23:20 baseline wins / 23:32 stay on Claude Code / 23:42 HyperAgent
  abandoned + marketing overhaul queued
- context.md: 23:45 current-value block

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X9iCzmxK2zbb8H1Ld3f8AN
This commit is contained in:
Backtalk6858
2026-09-08 23:46:05 -05:00
parent 61c544118b
commit 28ca345d9b
6 changed files with 378 additions and 5 deletions
+5 -5
View File
@@ -1,10 +1,10 @@
# Claude & Claude Code — Research & Config Home — Context
> **NEXT SESSION PLAN — CURRENT VALUE (rewritten 2026-09-08 23:05, Fable 5.1, supersedes the 22:45 block, which is now history).** Still on FABLE, credits ~$14 used. Research + decisions + preflight ONLY, no build work.
> 1. **Harness grill-me DONE 22:50** → `decisions/DECISIONS.md` "AI-harness LAYER" entry + Obsidian `Resources/Grill-Me/2026-09-08 — AI Harness Layer.md`. Key corrections: **LifeOS is NOT installed** (premise was false; we run Claude Code + our own layer); scope = the layer around Claude Code; 4 pains = rubric; hard rules R1 Pro-OAuth / R2 merge-not-replace / R3 free+OSS; distro soft (LMDE now, Arch/Omarchy or Fedora possible, **Ubuntu never** → Docker Sandboxes revisit trigger marked DEAD); one Incus-VM trial; voice rides on the verdict; fixed candidates + native baseline.
> 2. **Prompts A/B/C WRITTEN 23:00** → `config/prompts/` (README = spawn table) + Obsidian `Resources/Prompts/` (new folder). DB: rows 221 (in_progress), 239, business 41 annotated.
> 3. **Spawn order A → B → C, one at a time** (general-purpose agent, paste body verbatim). A = `research/ai-harness-layer-research.md`; B = `research/jcode-vs-claude-code.md` (reuses A's R1 OAuth finding); C spawns from `/opt/appdata/docker/Business/API Idea` → `research/hyperagent-marketing-fit.md` + copy to Obsidian `Business/Research/`. After each: check INDEX.md row, follow-up grill-me, DECISIONS.md entry. Then preflight only; Opus 4.8 executes.
> 4. **Skills track exists** (22:30): `skill` automation type; rule `feedback_skill_vs_playbook.md` (Desktop store), injected everywhere via session-start.sh; build queue personal_projects 223–237 (first: 223 scaffold, 224 end-session, 210 secret-pull, 225 pg-query). `automation-detector.py` FIXED (INSERT column mismatch silently killed every tag capture) — **uncommitted in /opt/appdata/docker** with session-start.sh; row 238 = security-enforcement.py crash on nested quoting.
> **NEXT SESSION PLAN — CURRENT VALUE (rewritten 2026-09-08 23:45, Fable 5.1, supersedes the 23:05 block, now history).** Fable credits ~$16 used (expire 2026-09-19). Research track for tonight is COMPLETE; everything below is decided and recorded.
> 1. **Harness track CLOSED** (`decisions/DECISIONS.md` 22:50, 23:20, 23:32 entries). Baseline wins: keep Claude Code + our layer; LifeOS/jcode/all OSS executors rejected (Anthropic legal page confines Pro OAuth to the unmodified Claude Code binary, enforced since 2026-04-04); no trial; voice = locked bespoke plan; **user: stay on Claude Code until hybrid brain + trained local brain + affordable claude -p/API, and only move if skills/processes port.** Sonnet 5 = native 1M on Pro (verified) → row 245 window-aware hook, LOW priority. Steal rows 242–244 (Doctor check, keyword→skill injector, MEMORY.md defrag). Open-source/open-core: rows 241 (parked), 246 (design the OSS-first evaluation pipeline), business_ideas 28 (parked).
> 2. **HyperAgent ABANDONED** (23:42 entry; business row 41 closed). **NEW Horizon-A priority:** business_projects 42 (GitHub AUP §7 vs lead_pull — priority 1) then the **marketing-system overhaul row** (all digital businesses; user is not a salesman) — do both in the API Idea conversation; write the channel-research prompt into `config/prompts/` + Obsidian `Resources/Prompts/`.
> 3. **agent-wrap skill + SubagentStop hook built 23:05** (`/opt/appdata/docker/.claude/skills/agent-wrap`, `hooks/subagent-wrap-reminder.py`, settings.json backup .bak.20260908; hook fires from next session). Three runs logged in `/opt/appdata/docker/.claude/logs/agent_runs.jsonl`; anti-pattern added (corrections go INTO the report as a banner). **/opt/appdata/docker has UNCOMMITTED hook/skill edits** (automation-detector.py, session-start.sh, subagent-wrap-reminder.py, skills/agent-wrap/) — commit at that repo's checklist.
> 4. **Reports:** `research/ai-harness-layer-research.md` (banner: "/recall broken" claim was FALSE), `research/jcode-vs-claude-code.md`, `research/hyperagent-marketing-fit.md`; INDEX rows present. Skills track (rows 223–237) unchanged; Opus 4.8 executes GAMEPLAN Step 0 + skills 223→224→210→225 later.
## What this project does
The dedicated home for everything about **how we use Claude and Claude Code to do work** —
+21
View File
@@ -15,6 +15,27 @@ entry links back to the research that drove it, so the reasoning survives.
---
## 2026-09-08 — DECIDED (23:42): HyperAgent ABANDONED; marketing system to be overhauled
- **Decision:** REJECT HyperAgent for all three jobs (API clients, KDP, Etsy). The marketing product is Howie Liu's closed cloud hyperagent.com (~$20 base + $4–35/task, pricing UNVERIFIED: page 403); the OSS namesake (@hyperbrowser/agent, AGPL, last real commit 2026-02-13) needs a headless patch and unverified Ollama. Logged-in automation of Amazon/Etsy/LinkedIn is banned by their terms. User: "too expensive too fast, and the same legal issue will recur on most platforms." If a public-page browser agent is ever wanted: evaluate browser-use, not HyperAgent.
- **Consequence (user):** the GitHub-scrape → cold-email pipeline is the core of API-business marketing (from the purchased course) but produced 4 free-tier subscribers and may violate GitHub AUP §7 → business_projects 42 (priority 1) + **new business_projects row: overhaul the marketing system for all digital businesses** — user is not a salesman; needs customer acquisition that does not depend on cold sales. This is Horizon A work (the revenue job).
- **Research:** [../research/hyperagent-marketing-fit.md](../research/hyperagent-marketing-fit.md) (copy in Obsidian Business/Research)
- **Implementation:** n/a for HyperAgent. Marketing overhaul: research prompt to be written (API Idea conversation), then grill-me, then per-business plan.
- **Revisit when:** never for HyperAgent; browser-use only if a public-page-only need appears.
## 2026-09-08 — DECIDED (23:32): executor = Claude Code, stay; jcode REJECTED; migration parked behind the hybrid brain
- **Decision:** REJECT jcode (fails R1: reuses `~/.claude/.credentials.json` and spoofs the Claude Code client — banned and server-side enforced since 2026-04-04; 1 maintainer; installer injects a SessionStart hook, issue #811 — never install on primary). REJECT every OSS executor for Claude work (all fail R1). DEFER Gemini CLI. **Keep everything as is** (user's words): no model change, no tool change. The "bigger context window" is a model property (Sonnet 5 = native 1M on Pro, verified on code.claude.com/docs/en/model-config; Opus 1M needs usage credits); the "CLAUDE.md size limit" was a misread — only the MEMORY.md index is capped. **Revisit path (user):** hybrid brain first (offload context to the local model), then a trained local brain, then when `claude -p` at a higher level or API billing becomes affordable, revisit moving off Claude Code — **and only if our skills and processes can come with us; if they cannot, Claude Code is where we stay.**
- **Why:** report B scored Claude Code first under the rules; every alternative's only route to Claude on Pro is the prohibited one.
- **Research:** [../research/jcode-vs-claude-code.md](../research/jcode-vs-claude-code.md)
- **Implementation:** n/a. Queued, low priority: personal_projects 245 (window-aware context-monitor + when to use Sonnet 5 1M) — build only if long sessions become a real pain.
- **Revisit when:** hybrid brain deployed AND local model trained AND (claude -p budget raised OR API billing on) AND skills/hooks portable to the target.
## 2026-09-08 — DECIDED (23:20): harness layer = KEEP OUR BASELINE; no LifeOS, no trial
- **Decision:** ADOPT the baseline (Claude Code native + our hooks/skills/memory tiers/semantic recall). REJECT LifeOS/PAI, SuperClaude, Claude-Flow, claude-mem, Letta; DEFER Basic Memory (trial only if the ~24.4 KB MEMORY.md cap still hurts after the defrag skill). Voice: the locked bespoke plan (faster-whisper + XTTS on server-01, PTT, agent playback queue) STANDS — LifeOS voice output is gated on an ElevenLabs cloud key and its Linux STT is unverified. Steal three ideas (personal_projects rows logged 2026-09-08): LifeOS Doctor hook-reconcile check, oh-my-claudecode keyword→skill injector, Basic-Memory-style MEMORY.md defrag skill. Open-sourcing our layer = parked (Horizon B) but build as if publishable.
- **Why:** baseline scored 14/21 vs best candidate 11; Anthropic's legal page (2026-02-19, enforced 2026-04-04) confines Pro OAuth to the unmodified Claude Code binary, which disqualifies any add-on that moves the token out of it; nothing on the list ships Linux voice. Agent A's "fix /recall first" precondition was false on live test (both Ollama hosts 200).
- **Research:** [../research/ai-harness-layer-research.md](../research/ai-harness-layer-research.md)
- **Implementation:** n/a (nothing to install); three steal rows in personal_projects.
- **Revisit when:** Anthropic changes OAuth terms; a candidate ships Linux-native local voice; MEMORY.md cap still hurts after the defrag skill exists.
## 2026-09-08 — DECIDED (grill-me 22:50): AI-harness LAYER scope, rubric, hard rules, trial depth
- **Decision:** ADOPT the framing — research the **layer around Claude Code** (memory/skills/hooks/routing/voice), not the executor; premise "we run LifeOS" is FALSE (nothing installed). Rubric = 4 pains (200K/80% checklist; ~24.4 KB MEMORY.md cap; rule adherence beyond the skills track; voice + life ops). Hard rules = R1 Pro OAuth/no API key, R2 merge-not-replace our hooks, R3 free + OSS. Distro = soft factor (LMDE 7 now; Arch/Omarchy or Fedora possible; **Ubuntu never**). Depth = research then ONE sandboxed trial in the server-01 Incus VM. Voice rides on the harness verdict. Fixed candidates + native-baseline row (baseline may win).
- **Why:** every candidate is the same category as the layer we already built; the only honest comparison is against that baseline plus Claude Code's own newer features.
+3
View File
@@ -9,6 +9,9 @@ re-verify versions, repos, and Linux support before acting on anything.
| **Infrastructure synthesis** — the whole landscape + reconciliation of the new research against decisions already made | [infrastructure-synthesis.md](infrastructure-synthesis.md) | Synthesized 2026-09-08 | **Confirm the July→Sept reality** (Max upgrade / Voice-Chat / Tailscale-Twingate / Agent-Sudo) before acting on anything. |
| **Autonomy + isolation evaluation** — does the plan work, gaps, and the 2026 Docker/Anthropic isolation landscape (auto mode, Bash sandbox, sandbox-runtime, Docker Sandboxes microVMs) | [autonomy-isolation-evaluation.md](autonomy-isolation-evaluation.md) | Evaluated 2026-09-08 (Fable 5.1) | DECIDED 2026-09-08 (adopt, autonomous runner first) → [decisions/GAMEPLAN_security-infra-deploy.md](../decisions/GAMEPLAN_security-infra-deploy.md). 16:07 outage = boot order (LAN-IP port binds before WiFi), solved. |
| Local AI coding stack (inference engine, coding harness, LifeOS, voice, skill porting) | [local-ai-coding-stack-research.md](local-ai-coding-stack-research.md) | Surface-level, in progress | **Goal framing:** RESOLVED by the existing vision = cost-reduction + tooling-independence, Claude stays the brain (NOT fully-local). See synthesis Part 3. |
| **AI harness layer** — scored comparison of the layer around Claude Code (LifeOS/PAI, SuperClaude, Claude-Flow, oh-my-claudecode, claude-mem, Basic Memory, Letta) vs baseline under R1 Pro-OAuth / R2 merge / R3 FOSS | [ai-harness-layer-research.md](ai-harness-layer-research.md) | Scored 2026-09-08 (Fable 5.1) | **Baseline wins (14/21).** Fix `/recall` embed endpoint first; only then consider a sandboxed Basic Memory trial (11/21). Claude-Flow + claude-mem DQ on R1 (Anthropic legal page: Agent SDK / executors need API keys). |
| **jcode vs Claude Code** — tests the two jcode hopes (bigger context; "CLAUDE.md size limit") and ranks executors (Claude Code, jcode, OpenCode, Aider, Goose, Cline, OpenHands, Gemini CLI) under R1 Pro-OAuth / R2 hooks+skills / R3 FOSS | [jcode-vs-claude-code.md](jcode-vs-claude-code.md) | Scored 2026-09-08 (Fable 5.1) | **Claude Code stays (14/18).** Every OSS executor DQ on R1 for Claude (jcode spoofs the Claude Code client; OpenCode removed Pro/Max under legal request). "Bigger window" = model property: Sonnet 5 is 1M free on Pro, Opus 1M = paid credits. Pain (b) is the 25 KB MEMORY.md *index* cap, not CLAUDE.md. Gemini CLI = optional non-Claude secondary for long reads. |
| **HyperAgent marketing fit** — disambiguation (Airtable Hyperagent vs Hyperbrowser OSS vs FSoft paper), constraints, per-job fit for API-clients / KDP / Etsy, ToS risk, OSS alternatives | [hyperagent-marketing-fit.md](hyperagent-marketing-fit.md) | Assessed 2026-09-08 (Fable 5.1) | **Reject all three jobs.** User likely heard of closed-source hyperagent.com (credit-metered, $4–35/task). OSS HyperAgent has `baseURL` for Ollama but hard-codes `headless:false`; KDP/Etsy/LinkedIn browser automation = ban risk. Only fragment worth anything = plain Playwright enrichment under N8N; browser-use beats it if a trial is ever wanted. |
### Where the prior infrastructure research lives (memory corpus)
Not duplicated here — cited in [infrastructure-synthesis.md](infrastructure-synthesis.md). Key files:
@@ -0,0 +1,137 @@
# The layer around Claude Code — scored comparison (memory / skills / hooks / routing / voice)
**Date:** 2026-09-08 · **Author:** research agent (Fable 5.1), research-only, nothing installed or changed.
**Question:** which layer around Claude Code best fixes our four pains (context, memory cap, rule adherence, voice + life ops) under three hard rules (R1 Pro-OAuth only, R2 merge-not-replace, R3 free + OSS)? The executor (Claude Code itself) is out of scope.
**Baseline reality check:** LifeOS is NOT installed anywhere today (verified 2026-09-08). Our layer = custom hooks under `/opt/appdata/docker/.claude/hooks/`, skills under `/opt/appdata/docker/.claude/skills/`, six auto-memory stores with tiered `MEMORY.md`, Postgres/nomic-embed `semantic_recall.py`, Obsidian as source of truth, 80%-context checklist.
---
> **CORRECTION 2026-09-08 23:12 (main session, agent-wrap step 3):** the claim below that `semantic_recall.py`'s embed endpoint is unreachable and that `/recall` must be "fixed first" was **FALSE on live test** (192.168.1.90:11434 and localhost:11434 both returned 200; a recall query returned matches). Treat "fix /recall first" as void; the verdict is simply baseline wins. Agent B (jcode report) inherited this claim before the correction was written here — disregard it there too.
## 1. Verdict
**Baseline wins.** No candidate beats "Claude Code native features + our own hooks/skills/semantic recall" once the hard rules and the actual pains are applied. Two candidates are disqualified on R1 (Claude-Flow/Ruflo's executor needs a metered API key; claude-mem's only free provider drives the Agent SDK on plan credentials, which Anthropic's legal page routes to API keys). SuperClaude is effectively dormant. LifeOS/PAI and oh-my-claudecode pass the rules but *add* per-session injection rather than reduce it, and their voice/routing value is either macOS-shaped (LifeOS voice gate requires an ElevenLabs key; notifications silently no-op'd on Linux until Aug 2026) or orchestration we do not need. The only candidate that scores well on the two top pains (context, memory cap) is **Basic Memory** (retrieval-on-demand over Obsidian-native Markdown, AGPL-3.0, no API key) — but it duplicates `semantic_recall.py` + Obsidian, which we already own and which is currently broken only at its embed endpoint. **Recommendation:** fix `/recall` first (cheap, in-scope); if the memory-cap pain persists afterwards, run the ≤8-check sandboxed trial in §5 with Basic Memory as the single trial candidate. Nothing on this list solves voice on Linux; the locked Voice-Chat plan (faster-whisper + XTTS) stands.
## 2. R1 finding — Anthropic's current (2026) terms on subscription OAuth in third-party tools
Anthropic's Claude Code "Legal and compliance" page (https://code.claude.com/docs/en/legal-and-compliance, fetched 2026-09-08) says, verbatim:
> "**OAuth authentication** is intended exclusively for purchasers of Claude Free, Pro, Max, Team, and Enterprise subscription plans and is designed to support ordinary use of Claude Code and other native Anthropic applications."
> "**Developers** building products or services that interact with Claude's capabilities, including those using the Agent SDK, should use API key authentication through Claude Console or a supported cloud provider. Anthropic does not permit third-party developers to offer Claude.ai login into their own applications, or to route requests through Free, Pro, or Max plan credentials on behalf of their users. Moreover, developers may not collect, store, or intermediate Claude.ai credentials or session tokens."
> "Nor does it prevent an end user from signing in to the unmodified Claude Code binary with their own Claude subscription."
History: the clarification landed 2026-02-19 (The Register, 2026-02-20: https://www.theregister.com/2026/02/20/anthropic_clarifies_ban_third_party_claude_access/); server-side enforcement against third-party harnesses (OpenClaw, OpenCode, etc.) began 2026-04-04 (https://kersai.com/anthropic-killed-third-party-claude-access-heres-every-workaround-that-still-works/, 2026).
**What this means for the list.** Anything that runs *inside* the unmodified Claude Code binary — hooks, skills, slash commands, plugins, MCP servers, CLAUDE.md — is "ordinary use of Claude Code" and passes R1. Anything that takes the subscription token *out* of Claude Code (Agent SDK workers, separate CLI executors, `ANTHROPIC_BASE_URL` proxies) needs an API key and fails R1 for us. That single line splits the list: LifeOS, SuperClaude, oh-my-claudecode, Basic Memory pass; Claude-Flow's executor and claude-mem's plan-provider fail; Letta's official "Claude Code memory proxy" is UNVERIFIED (page 404 on 2026-09-08) and, by design, would be a proxy.
## 3. Scoring table
Pains 0–3 each (max 12). Soft factors 0–3 each: Linux health / training-loop fit / maintenance burden (max 9). DQ = disqualified (rule named), still scored for information where meaningful.
| Candidate | R1 Pro OAuth | R2 merge | R3 FOSS | Context | Mem cap | Rules | Voice | Pain total | Linux | Train | Maint | Soft total | **Total /21** |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| **Baseline** (ours + CC native) | pass | n/a | Claude Code is proprietary but the layer we own is ours | 2 | 2 | 2 | 0 | 6 | 3 | 2 | 3 | 8 | **14** |
| LifeOS / PAI v7.40.4 | pass | pass (w/ 2026-07 Linux corruption history) | MIT | 1 | 1 | 2 | 1 | 5 | 1 | 2 | 1 | 4 | **9** |
| SuperClaude v4.3.0 | pass | UNVERIFIED | MIT | 0 | 1 | 1 | 0 | 2 | 1 | 0 | 0 | 1 | **3** (dormant) |
| Claude-Flow / Ruflo v3.38.23 | **DQ-R1** (executor needs `x-api-key`) | merges | MIT | 1 | 2 | 2 | 0 | 5 | 1 | 2 | 1 | 4 | DQ (9) |
| oh-my-claudecode v5.3.0 | pass | pass (merges; had duplicate-hook bug) | MIT | 1 | 1 | 2 | 0 | 4 | 2 | 2 | 2 | 6 | **10** |
| claude-mem v13.24.1 | **DQ-R1/R3** (plan provider = Agent SDK on plan creds; other providers paid) | pass (plugin) | Apache-2.0 + paid CMEM Pro | 2 | 2 | 0 | 0 | 4 | 1 | 2 | 1 | 4 | DQ (8) |
| Basic Memory v0.23.2 | pass | pass (MCP add / plugin) | AGPL-3.0 + paid Cloud (core OSS scored) | 2 | 3 | 1 | 0 | 6 | 2 | 1 | 2 | 5 | **11** |
| Letta (server 0.16.8) as memory server | pass via community MCP; official proxy UNVERIFIED | pass (MCP) | Apache-2.0 + paid Cloud | 2 | 2 | 0 | 0 | 4 | 1 | 2 | 1 | 4 | **8** |
Evidence per cell is in §4. Voice is 0 for every non-LifeOS row because none ships Linux voice at all.
## 4. Per-candidate notes
### 4.1 Baseline — our stack + Claude Code native on Pro (total 14)
- **Context 2:** Claude Code loads `CLAUDE.md` + first 200 lines/25 KB of `MEMORY.md` every session, but `.claude/rules/` with `paths:` frontmatter, skills, and memory topic files load on demand ("Claude Code doesn't load topic files ... at startup") — https://code.claude.com/docs/en/memory (fetched 2026-09-08). It cannot reduce what *we* inject in `context.md`/hook output; that is our own discipline.
- **Mem cap 2:** the documented cap is "first 200 lines of MEMORY.md, or the first 25KB, whichever comes first" (same page) — our ~24.4 KB observation matches; topic files + `semantic_recall.py` give retrieval-on-demand once the embed endpoint is fixed (synthesis Part 4 item 4).
- **Rules 2:** the docs are explicit that CLAUDE.md is "context, not enforced configuration. To block an action regardless of what Claude decides, use a PreToolUse hook" (same page) — we already have `security-enforcement.py`; the gap is writing enforcement hooks for checklist steps, not tooling.
- **Voice 0:** Claude Code has no voice on Linux; our Voice-Chat build is parked (synthesis, 2026-09-08).
- **1M context on Pro:** "Pro users need to enable usage credits to access the 1M token context window for Opus models" — https://support.claude.com/en/articles/8606394 (fetched 2026-09-08). Usage credits = extra spend against the $20 cap; treat as unavailable to us in practice.
- **Soft:** Linux is a first-class Claude Code platform (3); our hooks already emit JSONL-able logs (2); zero extra maintenance (3).
### 4.2 LifeOS / PAI — danielmiessler/LifeOS, pinned v7.40.4 (2026-08-14) (total 9)
- **Version/health:** MIT, 18,945 stars, pushed 2026-09-04, releases v6.0.5→v7.40.4 in ~6 weeks (GitHub API, 2026-09-08). 95+ commits / 7 authors in 90 days; 69 issues mentioning Linux/Debian/Arch/Fedora in 90 days, 25 open total.
- **R1 pass:** runs as hooks/skills inside Claude Code; needs bun, not an API key; ElevenLabs/Cloudflare are optional "full-doctrine" capabilities — https://ourlifeos.ai/install (fetched 2026-09-08).
- **R2 pass with scar:** installer "merges the hook set into settings.json, backing it up first" (same page) and FAQ: "only updates identity and version fields; your hooks, statusline, and custom config are preserved" (README). But issue #1484 (2026-07-14, v6.0.5): blind `HOME→/home/<user>` substitution *corrupted settings.json and 146 source files* on Linux; #1874 (2026-08-16) and #2061 (2026-09-04, open) are the same substitution family — https://github.com/danielmiessler/LifeOS/issues/1484.
- **Context 1:** skills "load per-session via context injection through hooks" plus a mandatory `LIFEOS_SYSTEM_PROMPT.md` via a `lifeos` launcher (install page) — this *adds* injection; v7.0.0 "Bitter Pill" reduced it (releases page) but net is still more than baseline.
- **Mem cap 1:** v7.28.3 "Cortex" memory consolidation exists (releases, 2026-08-01) — retrieval design UNVERIFIED beyond release notes.
- **Rules 2:** Doctor reconciles hooks on disk vs registered; failure-aware nudges (discussion #1112 / README) — genuine enforcement scaffolding beyond skills.
- **Voice 1:** Linux audio playback has `ffplay/mpg123/paplay/aplay` fallbacks, but the voice gate checks `elevenlabs_api_key` (cloud TTS) and desktop notifications "silently unavailable on Linux" reporting 200 OK until a user fix (issue #2024, 2026-08-30) — https://github.com/danielmiessler/LifeOS/issues/2024. STT/PTT on Linux: UNVERIFIED. Pulse (port 31337) needs a `systemd --user` unit on Linux (install page). VoiceServer PR #288 regression history per our §4 brief still applies in spirit.
- **Fabric relationship:** unchanged — Fabric = prompt patterns, LifeOS = operating layer (our §4 brief).
- **Soft:** Linux 1 (documented > real; no evidence of Linux CI — UNVERIFIED), training loop 2 (SessionHarvester mines session `*.jsonl`, issue #1913), maintenance 1 (single-author-driven churn, breaking restructures).
### 4.3 SuperClaude — SuperClaude-Org/SuperClaude_Framework v4.3.0 (2026-03-22) (total 3, dormant)
- MIT, 23,874 stars, last push 2026-08-21, **2 commits in 90 days**, last release 2026-03-22; v5 plugin system "No ETA has been set" (README, fetched 2026-09-08) — https://github.com/SuperClaude-Org/SuperClaude_Framework.
- Install: `pipx install superclaude && superclaude install` writes 30 slash commands + framework files into `~/.claude/`; how it treats an existing `settings.json`/`CLAUDE.md` is **UNVERIFIED** (installation doc URL 404; code search returned nothing).
- R1 pass (commands only; Tavily/Context7 MCP optional). Context 0: personas/commands framework files add injection. Mem 1: "ReflexionMemory" + optional Serena MCP. Rules 1: personas are prompts, not hooks. Zero Linux issues in 90 days because nothing is happening. Not worth a trial.
### 4.4 Claude-Flow / Ruflo — ruvnet/ruflo v3.38.23 (2026-09-07) — DQ on R1
- MIT, 71,698 stars, 955 open issues, ~daily releases, 100+ commits / 9 authors in 90 days (GitHub API 2026-09-08) — https://github.com/ruvnet/ruflo.
- **R1 fail:** issue #2236 (open, 2026-05-29): `agent_execute`, `workflow_*`, `hive-mind` "only speak the metered x-api-key API"; provider switch = Anthropic key / OpenRouter / Ollama; no subscription path — https://github.com/ruvnet/ruflo/issues/2236. The plugin-marketplace "Path A" (slash commands + agent definitions) would pass but is explicitly the reduced mode (README).
- R2: `init/upgrade` does a settings-merge (issue #3043, 2026-08-16: the merge "carries untrusted hooks/allow-rules" — a security finding against its own merge) — https://github.com/ruvnet/ruflo/issues/3043.
- Memory would score 2 (AgentDB/HNSW bridging `.claude/projects/*/memory/*.md`, CLAUDE.md), but 4 GB allocation failures in memory commands (#2948, open) and self-filed "Dream Cycle" audit issues show scale we do not want on an 8 GB box. **Steal:** the idea of indexing auto-memory topic files into a local vector store — we already have that in `semantic_recall.py`.
### 4.5 oh-my-claudecode — Yeachan-Heo/oh-my-claudecode v5.3.0 (2026-09-06) (total 10)
- MIT, 39,062 stars, 8 open issues, releases every few days, 100+ commits / 8 authors in 90 days — https://github.com/Yeachan-Heo/oh-my-claudecode.
- **R1 pass:** requirements "One of: Claude Max/Pro subscription (recommended for individuals) OR Anthropic API key" — https://github.com/Yeachan-Heo/oh-my-claudecode/blob/main/docs/REFERENCE.md (fetched 2026-09-08).
- **R2 pass:** installs 21 hook scripts across 11 lifecycle events into `~/.claude/settings.json`; a cleanup for "legacy duplicate hook entries left in settings.json" shipped (issue #3638, 2026-08-07) — so merging had rough edges but is maintained.
- Context 1: `session-start.mjs` + `project-memory-session.mjs` inject at every start, HUD statusline; net injection up. Mem 1: `.omc/project-memory.json`, `remember` skill, wiki — inject-at-start model. Rules 2: `pre-tool-enforcer.mjs`, `persistent-mode.mjs`, `keyword-detector`→`skill-injector` is real structured routing beyond skills. Voice 0.
- Soft: Linux 2 (bash hooks "fully portable across macOS and Linux", `flock` needed; 31 Linux-mention issues/90d, recent ones are macOS breakages), training 2 (`~/.omc/state/agent-replay-*.jsonl`, friction reports), maintenance 2 (very fast churn; 5.x weekly).
- **Steal:** keyword→skill auto-injection and a PreToolUse enforcer keyed to our checklist; replay JSONL as training data.
### 4.6 claude-mem — thedotmack/claude-mem v13.24.1 (2026-09-05) — DQ on R1 (and R3 for the alternatives)
- Apache-2.0, 93,519 stars, 355 open issues, 100+ commits / 4 authors in 90 days — https://github.com/thedotmack/claude-mem.
- **R1 fail:** observation compression uses the Claude Agent SDK; the free option `--provider claude` "shares your Claude plan usage" (https://docs.claude-mem.ai/installation, fetched 2026-09-08). Anthropic's legal page says Agent SDK developers "should use API key authentication". Corroboration that it burns plan quota: issues #3888 ("weekly limit"), #3870 (five_hour quota guard), #3906 ("Expired OAuth") — all Sept 2026. Other providers = CMEM Pro (paid after 30 days), OpenRouter, Gemini (paid keys); no Ollama/local provider (roadmap issue #2785, open since 2026-06-05).
- R2 pass: installs as a Claude Code plugin (`/plugin marketplace add thedotmack/claude-mem`), does not edit our settings.json; but #3871 (open, 2026-09-04): `UserPromptSubmit` hook "exits 2 and erases the prompt when the worker dies" — a hook that can eat user input.
- Would score Context 2 / Mem 2 (SQLite + Chroma, injects only relevant observations). **Steal:** lifecycle-hook observation capture into SQLite → exactly the training-loop shape we want, using our own `claude -p` only if ever allowed, otherwise Ollama.
### 4.7 Basic Memory — basicmachines-co/basic-memory v0.23.2 (2026-08-25) (total 11)
- AGPL-3.0, 3,900 stars, 57 open issues, 100+ commits / 10 authors in 90 days, releases 2026-08-24/25 — https://github.com/basicmachines-co/basic-memory.
- **R1 pass:** local MCP server (`claude mcp add basic-memory -- uvx basic-memory mcp`), FastEmbed embeddings locally, "not required" API keys for local installs (README, fetched 2026-09-08).
- **R2 pass:** MCP registration + optional `bm install claude-code` plugin; does not own settings.json.
- **R3:** AGPL-3.0 core; Basic Memory Cloud $15/mo — paid tier out, core scored.
- Context 2: knowledge stays on disk and is pulled by MCP tool calls; cost is the MCP tool schema in every session. Mem 3: retrieval-on-demand over Markdown that Obsidian reads directly ("point Obsidian at ~/basic-memory") — precisely the pain-2 shape. Rules 1: `basic-memory-skills` (reflection/defrag) are skills, nothing more. Voice 0.
- Soft: Linux 2 (10 Linux-ish issues/90d, uv cross-platform, WSL hook issue #1499 open; CI UNVERIFIED), training 1 (Markdown graph + SQLite index, not decision JSONL), maintenance 2.
- **Overlap warning:** this is functionally `semantic_recall.py` + Obsidian with a nicer MCP surface. Only trial it if fixing our embed endpoint does not close pain 2.
### 4.8 Letta (ex-MemGPT) as a memory server behind Claude Code (total 8)
- Apache-2.0, 24,667 stars; `letta-ai/letta` is now a landing page: "current source code lives in letta-ai/letta-code" (README, fetched 2026-09-08); server releases stopped at 0.16.8 (2026-05-14), 8 commits / 2 authors in 90 days — https://github.com/letta-ai/letta.
- R1: community MCP servers (e.g. oculairmedia/Letta-MCP-server) let Claude Code read/write memory blocks without an Anthropic key; Letta's own "Claude Code memory proxy" page https://docs.letta.com/guides/integrations/claude-code-proxy/ returned 404 on 2026-09-08 — **UNVERIFIED**, and a proxy in front of Claude Code would be credential intermediation (R1 fail by design).
- The memory agent itself needs an LLM; Ollama is supported (search result, 2026), which on an 8 GB 2060 Super competes with nomic-embed for VRAM. Needs Postgres + Docker; Letta Cloud is paid.
- Context 2 / Mem 2 on paper (core-memory blocks + archival retrieval), Rules 0, Voice 0. Heavy for what it adds over Basic Memory.
## 5. Sandboxed trial checklist (Incus VM on server-01) — for Basic Memory only, and only after `/recall` is fixed
1. Fresh LMDE/Debian-13 VM, Claude Code logged in with Pro OAuth, **no** `ANTHROPIC_API_KEY` in env; confirm `claude mcp list` shows basic-memory and `/context` shows no new session-start injection.
2. Copy a snapshot of `~/.claude/settings.json` in; run `bm install claude-code`; diff settings.json — must be byte-identical except additive MCP/plugin entries.
3. Point it at a read-only clone of the Obsidian vault; verify it never rewrites existing notes' frontmatter.
4. Measure session-start token cost with and without the MCP server (`/context`), target < 2 K tokens added.
5. Ask 10 recall questions that today need `MEMORY.md` tiers; score hit-rate vs `semantic_recall.py` on the same questions.
6. Confirm embeddings stay local (`ss -tnp` during a search: no egress beyond localhost).
7. Kill the MCP process mid-session; Claude Code must keep working (no hook exit-2 style prompt loss).
8. Log every MCP call as JSONL (via our `automation-detector.py`-style hook) and confirm the training-loop rule is satisfied.
## 6. What to steal even without adopting
- **oh-my-claudecode:** keyword→skill auto-injection hook (`skill-injector.mjs`) and a PreToolUse enforcer bound to checklist steps; `agent-replay-*.jsonl` as the training-log format.
- **LifeOS:** the Doctor pattern (reconcile hooks on disk vs registered, fail loudly instead of "200 OK" no-ops) and capability-aware "now/later/never" install prompts; TELOS-style intent file as one small on-demand skill, not injected context.
- **claude-mem:** lifecycle-hook observation capture (SessionStart/PostToolUse/Stop) into SQLite with later compression — implement with Ollama, never with plan credentials.
- **Claude-Flow:** nothing new; our `semantic_recall.py` already indexes memory topic files.
- **Basic Memory:** Markdown-with-frontmatter as the canonical memory unit that both Obsidian and the agent read — we already do this; adopt its `reflection`/`defrag` skill ideas for MEMORY.md tier upkeep.
## 7. Sources (all fetched 2026-09-08 unless noted)
- Anthropic, Claude Code Legal and compliance — https://code.claude.com/docs/en/legal-and-compliance
- Anthropic, How Claude remembers your project — https://code.claude.com/docs/en/memory
- Claude Help Center, context window on paid plans — https://support.claude.com/en/articles/8606394-how-large-is-the-context-window-on-paid-claude-plans
- The Register, 2026-02-20 — https://www.theregister.com/2026/02/20/anthropic_clarifies_ban_third_party_claude_access/
- GIGAZINE, 2026-02-20 — https://gigazine.net/gsc_news/en/20260220-anthropic-third-party-block/
- KERSAI (enforcement 2026-04-04) — https://kersai.com/anthropic-killed-third-party-claude-access-heres-every-workaround-that-still-works/
- LifeOS repo / releases / install / issues #1484, #2024, #1874, #2061 — https://github.com/danielmiessler/LifeOS · https://ourlifeos.ai/install
- SuperClaude — https://github.com/SuperClaude-Org/SuperClaude_Framework
- Ruflo repo, CLAUDE.md, issues #2236, #3043, #2948 — https://github.com/ruvnet/ruflo
- oh-my-claudecode repo, docs/REFERENCE.md, issue #3638 — https://github.com/Yeachan-Heo/oh-my-claudecode
- claude-mem repo, docs (installation, openrouter-provider), issues #3871, #3888, #3870, #3906, #2785 — https://github.com/thedotmack/claude-mem · https://docs.claude-mem.ai/installation
- Basic Memory — https://github.com/basicmachines-co/basic-memory
- Letta / letta-code — https://github.com/letta-ai/letta · https://github.com/letta-ai/letta-code · Letta-MCP-server https://github.com/oculairmedia/Letta-MCP-server
- GitHub REST API (stars, license, pushed_at, releases, issue search, commits since 2026-06-10) — queried 2026-09-08
- Prior local reading: `research/local-ai-coding-stack-research.md` §4–§6, `research/infrastructure-synthesis.md` Part 3 rows 6–7, `~/.claude/projects/-opt-appdata-docker/memory/reference_open_source_ai_tools.md`
@@ -0,0 +1,104 @@
# HyperAgent — can it join the marketing system?
Research-only brief, 2026-09-08 (Fable 5.1). Tracks business_projects row 41. No installs, no config
changes, no DB writes, no credentials were used. Every claim carries a URL + the date it was checked;
"UNVERIFIED" means the primary source could not be fetched and the claim rests on secondary sources.
## Verdict
**Reject for all three jobs, as of today.** The thing the user heard of — "an AI agent to supercharge
marketing and client acquisition" — is almost certainly **Airtable founder Howie Liu's Hyperagent
(hyperagent.com)**: a closed-source, cloud-only agent platform whose showcase use cases are prospect
research and personalised cold-email sequences. It fails the constraints outright: no self-hosting, credit
pricing where a single outreach run costs ~$4–$35 (a "personalised prospect outreach" is quoted at ~$8.82),
and it runs frontier models (Claude Opus 4.8 etc.) on its own metering — which would burn the entire $20/mo
cap in two or three runs. The open-source namesake, **Hyperbrowser's HyperAgent** (`@hyperbrowser/agent`,
AGPL-3.0, TypeScript on Playwright), *can* technically point at Ollama via `baseURL`, but its local browser
provider hard-codes `headless: false` + `channel: "chrome"` (needs Google Chrome + Xvfb in Docker), the
repo has had no substantive code commit since Feb 2026, and — the decisive point — every marketing task it
would perform for KDP/Etsy/LinkedIn means driving a logged-in browser session, which each of those platforms'
terms prohibit and which Etsy and Amazon enforce with permanent account termination. The API-business job
already has a working pipeline (GitHub search API → keyword filter → Claude gate → Brevo) that a browser
agent does not improve; the one thing it could add (visiting a lead's website for enrichment) is a 20-line
Playwright/requests script under N8N, not a new agent framework. If a browser-agent trial is ever wanted,
**browser-use** (MIT, documented Ollama support incl. `llama3.1:8b`, Docker) beats HyperAgent on every axis.
## What it is — disambiguation fact sheet
| Name | What | License / cost | Relevance |
|---|---|---|---|
| **Hyperagent (hyperagent.com)** — Howie Liu / Airtable spin-out | Closed-source cloud agent platform: isolated cloud env with real browser, shell, filesystem, 100s of integrations (Gmail, Slack, GitHub, Airtable, MCP). Announced 2026-02-19, public signups April 2026. Use cases marketed: prospect research + scoring, 4-touch cold-email sequences, competitive intel, lead qualification. | Proprietary. Subscription "from ~$20/mo" + usage credits; early-adopter 2.5× credit bonus; per-task cost ~$3.88–$35; example "personalised prospect outreach ≈ $8.82". No self-host, thread-scoped (no persistent always-on agent). Official pricing page returns 403 to fetch → exact tiers UNVERIFIED. | **This is the one the user heard of.** DQ: cloud-only, credit-metered frontier models, no BYO local model. |
| **HyperAgent (Hyperbrowser)** — `hyperbrowserai/HyperAgent`, npm `@hyperbrowser/agent` | "Playwright supercharged with AI": `executeTask()`, `page.ai()`, `page.extract()` (zod schema), custom actions, MCP client. Providers: openai / anthropic / gemini / deepseek. | **AGPL-3.0** (LICENSE: © 2025 S2 Labs Inc.). Free to run locally; optional Hyperbrowser cloud browsers (free 1,000 credits; 100 credits = $0.10 per browser-hour; Startup $30/mo). 1,560 stars; npm 1.1.2 published 2026-01-07; last push 2026-05-11 (PR templates only; last code-adjacent commit 2026-02-13). | Evaluated in depth below. |
| **HyperAgent (FSoft-AI4Code)** — arXiv 2409.16299 | Research paper: generalist multi-agent system for software-engineering tasks (issue resolution, code gen, bug repair). Not a product. | Academic. | Irrelevant to marketing. |
| **Hyper (hyperfx.ai)** | Proprietary "AI marketing agents" platform (ads, SEO, content, 80+ integrations). | Credits; "$10 free credits"; pricing not shown. | Same DQ as Airtable Hyperagent (cloud, metered). One-line mention only. |
## Constraint verdict (Hyperbrowser HyperAgent, the only self-hostable candidate)
| Constraint | Finding | Verdict |
|---|---|---|
| No Anthropic API key | `provider: "anthropic"` needs `ANTHROPIC_API_KEY`; not usable. `provider: "openai"` accepts `baseURL` (`src/llm/providers/index.ts` line 15: `baseURL?: string; // For OpenAI custom endpoints`; `openai.ts` passes it to `new OpenAI({apiKey, baseURL})`). So Ollama's `/v1` endpoint is reachable **in principle**. Zero GitHub issues mention "ollama" (search 2026-09-08) → nobody has reported it working or failing. Structured-output flow is "zod-first" and relies on OpenAI structured-output / tool-call fidelity. | **Conditional** — UNVERIFIED at runtime with `llama3.1:8b`. |
| $20/mo cap | Local run = $0 cloud. Hyperbrowser cloud browsers optional ($0.10/browser-hour, 1,000 free credits). | Pass (if local browser). |
| Docker / Linux headless | `src/browser-providers/local.ts` (main, 2026-09-08): `chromium.launch({ ..., channel: "chrome", headless: false, args: ["--disable-blink-features=AutomationControlled"] })` and the constructor type *omits* `headless` and `channel` from LaunchOptions — headless cannot be enabled without patching the package or providing a custom BrowserProvider. Requires Google Chrome (not bundled Chromium) + Xvfb inside the container. Deps include `patchright` (stealth Playwright fork) — an explicit anti-bot-detection posture. | **Conditional** — needs a fork/patch or Xvfb; no official Dockerfile in the repo tree. |
| 8B local model quality | No published benchmark for small models. Sibling tool browser-use warns that smaller models "may return incorrect action schema formats." HyperAgent's README recommends `gpt-4o` for MCP use. | **High risk** — expect action-loop failures at 8B. |
| Maintenance | npm last release 2026-01-07; repo last code-relevant commit 2026-02-13; 26 open issues. | Low activity — risk of abandonment. |
| License | AGPL-3.0 is fine for internal use; only matters if the tool were exposed as a network service to third parties. | Pass. |
## Fit table
| Job | Concrete task a browser agent would do | Pipeline position | Adds beyond N8N + Python + Claude gate | Platform-ToS / ban risk | 8B-model quality risk | Verdict |
|---|---|---|---|---|---|---|
| **A. API-business client acquisition** | (1) Visit each lead's repo homepage / linked site to enrich the lead (tech stack, contact page, pricing); (2) scan RapidAPI competitor listings for positioning; (3) LinkedIn prospecting. | (1) between `lead_pull.py` and the Claude gate as an enrichment step; (2) a new, occasional research pipeline; (3) new pipeline. | (1) Marginal: enrichment is a `requests`/Playwright fetch + the existing Claude gate; an LLM-driven browser loop adds cost and nondeterminism, not capability. (2) Same. (3) Only thing genuinely new — and it is prohibited. | GitHub AUP §7 already forbids using scraped info "for spamming purposes, including … sending unsolicited emails to users" (note: this is a latent risk for the *existing* pipeline, not a new one). LinkedIn bans "bots, browser plug-ins … headless browsers" outright; 2026 enforcement restricts accounts within days. | High: multi-step navigate→extract loops fail at 8B; the current Claude gate is a single-shot classify, which is where 8B might eventually work. | **Reject.** Enrichment (1) = tiny script under N8N if ever wanted. |
| **B. KDP book marketing (J.M. Hartley)** | Log into KDP to read sales/ads dashboards, run Amazon Ads keyword research, submit ad campaigns; scrape competitor listings/reviews for keywords; post to social/Goodreads. | New pipeline (nothing exists yet). | Everything here is either (a) a logged-in Amazon session or (b) Amazon scraping — both ToS-prohibited; the non-browser parts (keyword brainstorming, ad copy, blurbs) are plain `claude -p` / local-model text tasks that N8N already can run. | Amazon Conditions of Use prohibit "data mining, robots, or similar data gathering and extraction tools" (page returned 503 on fetch — UNVERIFIED verbatim, widely cited); KDP T&C page redirects to an auth-token URL (UNVERIFIED). KDP terminations are permanent and remove all books. | High, and irrelevant given the ToS block. | **Reject.** Use KDP's own reports export + Amazon Ads (manual or official API) instead. |
| **C. Etsy product marketing (ConfettiPrintCo)** | Bulk-list/edit listings, refresh tags, auto-renew, favorite/follow for visibility, message buyers, scrape competitor shops. | New pipeline. | Etsy has an official **Open API v3** for sellers (listings, shop, receipts) — every legitimate task here is API-doable from N8N; a browser bot adds only the prohibited parts (engagement automation, scraping). | Etsy ToS prohibits unauthorised crawling/scraping (Etsy legal pages returned 403 on fetch — UNVERIFIED verbatim; secondary sources 2026). Secondary reporting: 12,000+ shops suspended for bot activity in 2025; detection keys on "superhuman response times" and unnatural favorite/view velocity — exactly what a browser agent produces. Suspension before first sale would kill the business. | High. | **Reject.** Apply for Etsy Open API keys instead (terms UNVERIFIED — check developer agreement before build). |
## Jenkins / Hermes fit (only relevant if a browser-agent trial is ever approved)
- **Jenkins** = build the image (Node 20 + Google Chrome + Xvfb + `@hyperbrowser/agent` or, better, `browser-use`), inject the Ollama endpoint URL and any platform API keys from Vault at deploy time, `compose up`, rollback. Fits the standing Jenkins = deployments rule.
- **Hermes** = monitor run health: container up, Ollama reachable, run failure rate, and — critically — *ban-signal watch* (HTTP 403/429 rates, CAPTCHA pages, login challenges) with an ntfy escalation and a self-disarming circuit breaker that stops the agent after N anomalies (matches `feedback_autonomous_security_constrain_not_gate`). Hermes never redeploys; it triggers Jenkins.
- **N8N** stays the orchestrator: a workflow calls the agent container via webhook/HTTP, applies the Prepare+Gate dry-run pattern, and writes results to Postgres.
## Training-loop hook
Every agent run must be logged as training data regardless of tool. Proposed (no DB writes made here):
- New table `api_business.browser_agent_runs` (or a per-business schema when KDP/Etsy get theirs): `run_id, business, task_text, target_url, model, steps_json (action list), output_json, success bool, failure_reason, tokens_in/out, wall_seconds, human_verdict (approve/reject/edit), created_at`.
- The human_verdict column mirrors `lead_review_log` so the same "replace Claude with local model when accuracy ≥ X" evaluation can be run later.
- For job A enrichment (the only non-rejected fragment), log into the existing `lead_review_log` row rather than a new table — dedup rule applies.
## Alternatives (free / OSS)
| Tool | License / activity (checked 2026-09-08) | Ollama / local endpoint | Docker headless | Beats HyperAgent here? |
|---|---|---|---|---|
| **browser-use** (`browser-use/browser-use`, Python) | MIT; 113,650 stars; pushed 2026-09-07; PyPI 0.13.10 (2026-09-04) | Yes — docs show Ollama with `llama3.1:8b` and any OpenAI-compatible `base_url`; warns small models may emit bad action schemas | Yes (headless Playwright; Docker images) | **Yes** — same capability, Python (matches our stack), 70× the community, actively maintained, Ollama documented. Still subject to the same ToS bans. |
| **Skyvern** (`Skyvern-AI/skyvern`) | AGPL-3.0; 22,953 stars; pushed 2026-09-09 | Yes — Ollama + "OpenAI-compatible" via LiteLLM | Yes — `docker compose` path with bundled Postgres | Partly — heavier (Postgres, UI), designed for form-filling workflows; overkill for our jobs. |
| **Stagehand** (`browserbase/stagehand`, TS) | MIT; 24,177 stars; pushed 2026-09-09 | **No `baseURL` option**; local models only via a bring-your-own-LLM callback; explicit models need a provider API key | Local Playwright works with explicit model config | No — needs a cloud LLM key in the normal path; DQ under the no-API-key constraint. |
| **Plain Playwright / `requests` under N8N + existing Claude gate** | Already installed | n/a (deterministic) | Yes | **Yes for job A enrichment** — deterministic, zero LLM cost, loggable. |
## Proposed grill-me questions (before any build)
1. Which HyperAgent did you actually mean — Howie Liu's hyperagent.com (cloud, credits) or the open-source Hyperbrowser one? If the former, is the $20/mo cap negotiable for a credit-metered SaaS? (Assumed no.)
2. For the API business, is there any concrete outreach step today that fails *because* we cannot see a lead's website — i.e. is enrichment a real bottleneck or a nice-to-have?
3. Are you willing to accept any non-zero probability of a KDP or Etsy account suspension before first revenue? (If no, browser automation on those platforms is off the table permanently, not just for HyperAgent.)
4. For Etsy, is applying for an Open API v3 developer key acceptable, and who owns that application (needs shop to exist first)?
5. If a browser-agent trial is ever approved for public-page research only (no logins), do you want it on server-01 or primary, and is Google Chrome + Xvfb in a container acceptable, or must it be bundled Chromium (→ browser-use, not HyperAgent)?
6. What accuracy threshold on `browser_agent_runs.human_verdict` would justify letting `llama3.1:8b` run unsupervised, and who reviews the log weekly until then?
## Sources (all checked 2026-09-08 unless noted)
- Hyperbrowser HyperAgent repo — https://github.com/hyperbrowserai/HyperAgent (GitHub API: 1,560 stars, pushed 2026-05-11, license "Other"; LICENSE file = AGPL-3.0 © 2025 S2 Labs Inc.)
- Raw sources read: `README.md`, `LICENSE`, `src/llm/providers/index.ts`, `src/llm/providers/openai.ts`, `src/llm/types.ts`, `src/browser-providers/local.ts`, `src/types/config.ts`, `src/llm/AGENTS.md` — https://raw.githubusercontent.com/hyperbrowserai/HyperAgent/main/…
- Commits API — https://api.github.com/repos/hyperbrowserai/HyperAgent/commits (2026-05-11 "Add pull request templates"; 2026-02-13 "Add scoped AGENTS guidelines"; 2026-01-15)
- Issue search "ollama OR headless" — https://api.github.com/search/issues?q=repo:hyperbrowserai/HyperAgent+ollama+OR+headless → 0 results
- npm `@hyperbrowser/agent` registry JSON — https://registry.npmjs.org/@hyperbrowser/agent (latest 1.1.2, 2026-01-07; license AGPL-3.0; deps incl. `patchright`, `playwright-core`, `openai`, `@anthropic-ai/sdk`, `@google/genai`, `@hyperbrowser/sdk`)
- Hyperbrowser docs, HyperAgent cloud page — https://www.hyperbrowser.ai/docs/agents/hyperagent (BYO keys "only charged for browser usage")
- Hyperbrowser pricing (official page fetch returned only a title) — https://www.hyperbrowser.ai/pricing ; secondary: https://tooltrim.com/en/tool/hyperbrowser (verified 2026-05-08: free 1,000 credits / 1 concurrent; Startup ≈ $30/mo, 30,000 credits; 100 credits per browser-hour) and https://agenticindex.io/vendors/hyperbrowser
- Airtable Hyperagent — official site https://hyperagent.com and /pricing returned HTTP 403 (UNVERIFIED direct); secondary: https://www.aitoolssme.com/review/hyperagent (review 2026-06-18, tested 2026-05-04: from $20/mo, 2.5× credits, Claude primary, Hunter.io + Gmail outreach demo); https://sidsaladi.substack.com/p/hyperagent-101-the-complete-guide (2026-06-24: Opus 4.8, research $6–15/run, prospect research + cold-email sequences); https://www.gamut.so/blog/hyperagent-alternatives (2026-08-05: $3.88–$35 per task, closed source, thread-scoped); https://www.taskade.com/blog/history-of-airtable (2026-05-01: "personalised prospect outreach ≈ $8.82", cloud env with real browser); https://startupfortune.com/howie-liu-is-turning-hyperagent-credits-into-a-seed-stage-weapon/ (403, UNVERIFIED)
- FSoft-AI4Code HyperAgent paper — https://arxiv.org/abs/2409.16299 (v3 2025-09-05)
- Hyper (hyperfx.ai) — https://www.hyperfx.ai/ ($10 free credits, proprietary)
- GitHub Acceptable Use Policies — https://docs.github.com/en/site-policy/acceptable-use-policies/github-acceptable-use-policies (§4 spam/inauthentic activity; §7 scraped info not for "sending unsolicited emails to users")
- LinkedIn "Prohibited software and extensions" — https://www.linkedin.com/help/linkedin/answer/a1341387 (page states "last updated 2 years ago"); enforcement context: https://linkedinsider.blog/linkedin-automation-crackdown-2026
- Amazon Conditions of Use — https://www.amazon.com/gp/help/customer/display.html?nodeId=508088 (HTTP 503 on fetch → verbatim UNVERIFIED); KDP T&C — https://kdp.amazon.com/terms-and-conditions (redirects to tokenised agreement page → UNVERIFIED); secondary: https://kindlepreneur.com/amazon-kdp-account-suspension/ , https://www.octoparse.com/blog/is-it-legal-to-scrape-amazon-data
- Etsy Terms of Use — https://www.etsy.com/legal/terms-of-use and https://www.etsy.com/legal/api (both HTTP 403 on fetch → verbatim UNVERIFIED); secondary: https://www.shieldmyshop.com/blog/2026-03-26-etsy-suspension-2026-new-rules-what-changed (2026-03-26), https://www.insightagent.app/guides/avoid-etsy-shop-suspension , https://www.blackdown.org/how-to-scrape-etsy-intro/
- browser-use — https://github.com/browser-use/browser-use (MIT, 113,650 stars, pushed 2026-09-07); https://docs.browser-use.com/customize/supported-models (Ollama `llama3.1:8b`, custom `base_url`, small-model warning); PyPI https://pypi.org/pypi/browser-use/json (0.13.10, 2026-09-04)
- Skyvern — https://github.com/Skyvern-AI/skyvern (AGPL-3.0, 22,953 stars, pushed 2026-09-09; README: Ollama + OpenAI-compatible via LiteLLM; docker compose)
- Stagehand — https://github.com/browserbase/stagehand (MIT, 24,177 stars, pushed 2026-09-09); https://docs.stagehand.dev/configuration/models ("There is no base URL option")
- Local context — `/opt/appdata/docker/Business/API Idea/.claude/context.md` (read 2026-09-08)
@@ -0,0 +1,108 @@
# jcode vs Claude Code — claim test + executor ranking
**Date:** 2026-09-08 (Fable 5.1, research-only, 8 evidence turns). **Question:** (1) Does jcode give a real advantage over Claude Code for us? (2) Do its claimed advantages fix pain (a) context / pain (b) memory-injection cap? (3) Is there a better executor than both under R1 (Pro OAuth, no API key) / R2 (hooks + skills parity) / R3 (free + OSS)?
Everything below is as of 2026-09-08 and moves fast; re-verify before acting. UNVERIFIED = not confirmed against a primary source in this session.
> **NOTE 2026-09-08 23:27 (main session):** every "fix `/recall` embed endpoint" reference below was inherited from the harness report and is **void** — recall works on live test. Pain (b) remains only the MEMORY.md index cap; the defrag skill (personal_projects 244) is the fix.
## 1. Verdict
1. **No — jcode gives us no usable advantage.** It is a genuinely fast, RAM-light Rust harness (MIT, 19.4k stars), but the way it reaches Claude on a Pro plan is by reusing `~/.claude/.credentials.json` and *spoofing* Claude Code's `User-Agent`/system prompt (its own OAUTH.md says so) — exactly the "route requests through Pro credentials / intermediate session tokens" that Anthropic's legal page forbids and has server-side enforced since 2026-04-04. It fails R1, so its speed, swarm and memory features are unreachable for us with Claude; with a local 7–8B model they are reachable but the model, not the harness, is the bottleneck.
2. **Neither hope survives contact with the evidence.** "Bigger context window" is a **model/plan property, not a harness property**: jcode on Claude gets the same window Claude Code gets, and jcode documents only a manual `/compact` (no auto-compact threshold). Pain (a) is actually addressed *inside Claude Code today*: Sonnet 5 runs at native 1M on all plans including Pro, and `/autocompact` is tunable — but Opus 1M on Pro costs usage credits, which our $20 cap forbids. Pain (b) is a misread: the ~25 KB / 200-line cap applies only to the auto-memory index `MEMORY.md`; `CLAUDE.md` loads in full up to 4 MiB. jcode would sidestep the cap by loading `AGENTS.md` unbounded plus embedding-retrieved memory, but again only via a disallowed auth path.
3. **No alternative beats Claude Code under the rules; every OSS executor fails R1 for Claude.** OpenCode (the best-maintained one) removed its Pro/Max plugins under Anthropic's legal request; Aider/Goose/OpenHands are API-key only; Cline's "Claude Code provider" shells out to the `claude` binary on your subscription — a grey zone Anthropic has asked at least one fork (Roo Code) to remove. The only rule-clean addition is **Gemini CLI as a non-Claude secondary** (free personal tier, 1M context, 11 hook events, Apache-2.0) for long-context *reading* tasks. Best executor for daily Claude work: **Claude Code (baseline)**.
## 2. Claim-test table
| Pain | Claude Code today | jcode | Best alternative |
|---|---|---|---|
| **(a) Context** — "bigger window so the 80% checklist runs less often" | **Partially fixes.** Window is set by model: Sonnet 5 = native 1M on every plan incl. Pro, no credits; Opus 1M (`opus[1m]`) on Pro = **usage credits** (paid, violates $20 cap); Sonnet 4.6 1M = credits on all plans. Auto-compact default ≈967K on Sonnet 5, tunable via `/autocompact 500k`, `--autocompact`, `CLAUDE_CODE_AUTO_COMPACT_WINDOW`. Our 80% hook is keyed to a 200K assumption and needs the model's real window. Also: "resume from a summary" on Pro/Max. — https://code.claude.com/docs/en/model-config (2026-09-08); https://code.claude.com/docs/en/costs (2026-09-08) | **Does not fix.** Same Claude model ⇒ same window; jcode adds no tokens. Docs list `/compact` ("Compact, clear, or rewind") and `/transfer` ("Compact context into a fresh handoff session"); **no automatic compaction threshold is documented** — https://jcode.sh/docs (2026-09-08). v0.82.0 note "Remote turns report actual context compaction metrics" — https://github.com/1jehuang/jcode/releases (2026-09-06). And R1-fail means this is moot on Pro. | **Gemini CLI (secondary only):** 1M context on the free personal tier (60 req/min, 1,000/day) for read-heavy sweeps; `PreCompress` hook lets us save state before compression. Does not run Claude, so it doesn't replace the daily driver — https://github.com/google-gemini/gemini-cli (2026-09-08); https://geminicli.com/docs/hooks/ (2026-09-08) |
| **(b) Memory injection cap** — "fixes the CLAUDE.md size limitation" | **Partially fixes / mostly a misread.** Official: "The first 200 lines of `MEMORY.md`, or the first 25KB, whichever comes first, are loaded"; over-limit writes succeed but Claude is told to rewrite the index; **"This limit applies only to `MEMORY.md`. Claude Code loads a CLAUDE.md file of up to 4 MiB in full"**; topic files load on demand. So the cap is on the *index*, by design; the fix is on-demand retrieval (topic files + our `/recall`), not a bigger injector — https://code.claude.com/docs/en/memory (2026-09-08) | **Would sidestep, but unreachable.** Loads `AGENTS.md` + `~/AGENTS.md` "into every session" with **no documented size limit (UNVERIFIED — could be unbounded or silently truncated)**; does not read `MEMORY.md`; long-term memory is ONNX-embedding retrieval + "memory sideagent" extraction, i.e. retrieval-on-demand. Only usable with a local model or an API key — https://jcode.sh/docs (2026-09-08); https://github.com/1jehuang/jcode (README, 2026-09-08) | **None needed.** The harness-layer brief already concluded retrieval-on-demand (fix `/recall` embed endpoint; Basic Memory as fallback trial) is the R1-clean answer — research/ai-harness-layer-research.md (2026-09-08). Gemini CLI's `GEMINI.md` has no documented cap (UNVERIFIED) but is a different model. |
**Plain statement:** "bigger context window" turned out to be a model property, not a jcode property.
## 3. Executor scoring table
Hard rules: pass/fail. Soft scores 0–3: Ctx = context handling; Mem = memory handling; Par = hook/skill parity with our layer; Lin = Linux health (issues last 90 d); Mnt = maintenance (commits/maintainers last 90 d); Loc = local-model support for the 8 GB card. Soft max 18.
| Executor | R1 Pro OAuth | R2 hooks+skills | R3 FOSS (license) | Ctx | Mem | Par | Lin | Mnt | Loc | Soft /18 | Result |
|---|---|---|---|---|---|---|---|---|---|---|---|
| **Claude Code** (baseline) | **pass** (the unmodified binary is the one sanctioned path) | pass — native hooks (Pre/PostToolUse, SessionStart/End, PreCompact, …), skills, commands, plugins | fail as OSS (proprietary npm binary; free with Pro) — *baseline, exempt* | 2 | 2 | 3 | 3 | 3 | 1 | **14** | **KEEP** |
| **jcode** v0.84.0 | **FAIL** — reuses Claude Code creds + spoofs `claude-cli` UA/system prompt (OAUTH.md) | pass — `[hooks]` "shell commands to run at turn, session, and tool boundaries"; skills = `SKILL.md` dirs, `/skillname`; MCP | pass — MIT | 1 | 2 | 2 | 1 | 1 | 3 | 10 | **DQ (R1)** |
| **OpenCode** v1.18.30 | **FAIL** — "Anthropic explicitly prohibits this"; Pro/Max plugins removed as of 1.3.0 | pass — JS/TS plugins: `tool.execute.before/after`, `session.created/compacted`, `experimental.session.compacting`, …; AGENTS.md; skills | pass — MIT | 2 | 1 | 2 | 2 (UNVERIFIED) | 3 | 3 | 13 | **DQ (R1)** |
| **Aider** v0.86.0 | **FAIL** — `ANTHROPIC_API_KEY` only | fail — no lifecycle hooks; only `--lint-cmd`/`--test-cmd` + `--read CONVENTIONS.md` | pass — Apache-2.0 | 1 | 1 | 0 | 2 | 0 | 2 | 6 | **DQ (R1,R2)** |
| **Goose** v1.50.0 | **FAIL** — API key; OAuth request #3647 closed 2025-08-19 (outcome UNVERIFIED, pre-dates ban) | partial (UNVERIFIED) — recipes, `.goosehints`, MCP extensions; lifecycle hooks not confirmed | pass — Apache-2.0 | 1 | 1 | 1 | 2 | 3 | 3 | 11 | **DQ (R1)** |
| **Cline** v4.1.17 (VS Code/JetBrains) | **FAIL/grey** — "Claude Code" provider shells out to local `claude` using "your Claude subscription limits"; Anthropic asked Roo Code to remove the same provider (#10645, 2026-01-12) | pass — 6 hooks (PreToolUse, PostToolUse, UserPromptSubmit, TaskStart/Resume/Cancel) with `cancel` + `contextModification`; `.clinerules`, workflows, skills | pass — Apache-2.0 | 1 | 1 | 2 | 2 | 3 | 2 | 11 | **DQ (R1)** — also an editor, not a terminal |
| **OpenHands** v1.16.0 | **FAIL** — "any LLM supported by LiteLLM" = API keys; no subscription path | partial (UNVERIFIED) — skills/`AGENTS.md`/microagents; V1 SDK hooks referenced but not confirmed | pass — MIT | 1 | 1 | 1 | 2 | 3 | 2 | 10 | **DQ (R1)** |
| **Gemini CLI** v0.60 (non-Claude secondary) | n/a — free personal Google tier, no key | pass — 11 hook events incl. SessionStart/End, BeforeTool/AfterTool, PreCompress; custom commands; GEMINI.md | pass — Apache-2.0 | 3 | 1 | 2 | 3 | 3 | 0 | 12 | **SECONDARY** — long-context read-only sweeps (logs, repo audits, doc digests); never for Claude work |
Scoring notes: Claude Code Ctx=2 (1M free only on Sonnet 5; Opus 1M paid), Mem=2 (25 KB index cap, topic files on demand), Loc=1 (`ANTHROPIC_BASE_URL` to LM Studio/vLLM works per local-ai-coding-stack-research.md §7 but is API-key-shaped, not OAuth). jcode Lin=1: 155 Linux-keyword issues in 90 d incl. #703 IPC daemon hang, #811 installer edits `~/.claude/settings.json`, #1177 2,700+ tests never run in CI. jcode Mnt=1: one person = 7,284 of ~7,326 commits; 6 contributors total; 748 issues opened in 90 d; ~3,000 commits in 90 d — velocity without bus-factor.
## 4. jcode fact sheet
| Field | Value | Source (date) |
|---|---|---|
| Canonical repo | **github.com/1jehuang/jcode** — `jrish11/jcode` is a 0-star fork ("forked from 1jehuang/jcode") | GitHub (2026-09-08) |
| Language | **Rust** (Cargo workspace, `crates/`); the "Zig" description in prior notes was wrong | GitHub API + repo (2026-09-08) |
| License | MIT | GitHub API (2026-09-08) |
| Created | 2026-01-05 | GitHub API |
| Version / cadence | v0.84.0 (2026-09-07); v0.81.3 (Aug 30) → v0.84.0 in 8 days = ~daily releases; prior §3 "~v0.81.3" now stale | https://github.com/1jehuang/jcode/releases (2026-09-08) |
| Stars / forks / open issues | 19,364 / 2,226 / 411 | GitHub API (2026-09-08) |
| Maintainers | **1** (`1jehuang` 7,284 commits; next human 4); 6 contributors total | GitHub API contributors (2026-09-08) |
| Install size | UNVERIFIED (binary size not measured; no install performed) | — |
| RAM claim | Author's own Linux PSS benchmark: 27.8 MB/session (embeddings off), 167.1 MB (on) vs Claude Code 386.6 MB; 10 sessions 117 MB vs 2,300 MB. **Self-reported, not independently reproduced** (Wavect review tested on "one Linux machine" and repeats the numbers) | README (2026-09-08); https://wavect.io/blog/jcode-vs-claude-code-rust-agent-harness/ (2026-08-02) |
| Swarm claim | Confirmed as a feature: "two or more agents in the same repo", conflict handling, agent messaging, agents can spawn swarms; issue #1100 (2026-08-30, open): swarm worker "has broken bash (os error 2)" | README; GitHub issues (2026-09-08) |
| Claude auth | `jcode login --provider claude` (own OAuth) **or** reuse `~/.claude/.credentials.json` / `CLAUDE_CODE_OAUTH_TOKEN`; sends `User-Agent: claude-cli/1.0.0`, `anthropic-beta: oauth-2025-04-20,claude-code-20250219`, prepends "You are Claude Code, Anthropic's official CLI for Claude." | https://github.com/1jehuang/jcode/blob/master/OAUTH.md (2026-09-08) |
| Context mgmt | manual `/compact`, `/transfer`; agent-grep adaptive truncation; no auto-compact threshold documented | https://jcode.sh/docs (2026-09-08) |
| Memory files | `AGENTS.md` (repo) + `~/AGENTS.md` loaded every session; size limit undocumented (UNVERIFIED); semantic memory via local ONNX embeddings | https://jcode.sh/docs; README (2026-09-08) |
| Hooks / skills | `[hooks]` at turn/session/tool boundaries; skills `~/.jcode/skills/<name>/SKILL.md`, embedding auto-inject + `/skillname` | https://jcode.sh/docs (2026-09-08) |
| Safety flag | Issue #811 (open, 2026-08-05): `curl \| bash` installer injects a `SessionStart` hook into **`~/.claude/settings.json`** and `~/.codex/hooks.json` (ad notifications) and edits niri config, no consent/opt-out. Would collide with our hook layer. | https://github.com/1jehuang/jcode/issues/811 (2026-09-08) |
| Test discipline | Issue #1177 (open, 2026-09-04): "2,700+ core tests are compiled but never run" on CI | https://github.com/1jehuang/jcode/issues/1177 |
## 5. Per-candidate notes
**Claude Code.** R1 pass by definition (legal page: nothing "prevent[s] an end user from signing in to the unmodified Claude Code binary with their own Claude subscription" — reused from ai-harness-layer-research.md §2). Pro today: Sonnet 5 native 1M (no suffix, no credits); `opus[1m]`/`sonnet[1m]` on Pro need usage credits; no per-token surcharge beyond 200K; `/autocompact` + `--autocompact` + env var; `/compact` with custom focus; `--resume` / resume-from-summary; auto memory: `MEMORY.md` index 200 lines/25 KB + on-demand topic files; CLAUDE.md ≤4 MiB loaded in full, guidance <200 lines; hooks and skills native. Our `memory_tier_manager.py` thresholds (17/22 KB) are correctly aimed at the 25 KB index rule. Action: make the 80% checklist hook read the actual model window (1M on Sonnet 5) instead of assuming 200K.
**jcode.** See fact sheet. Net: impressive single-author engineering; wrong auth path for us; bus factor 1; installer touches our `~/.claude/settings.json`. With a local model it is a legitimate low-RAM multi-agent harness, but the 8 GB card limits that to 7–8B Q4, which is the binding constraint regardless of harness. Do not install on the primary; if ever trialled, do it inside the Incus VM (decided isolation boundary) and audit `~/.claude/settings.json` afterwards.
**OpenCode** (now `anomalyco/opencode`, 206k stars, MIT, v1.18.30 2026-09-09, 5,678 open issues). Providers page: Claude Pro/Max login mentioned, then "There are plugins that allow you to use your Claude Pro/Max models with OpenCode. Anthropic explicitly prohibits this… no longer the case as of 1.3.0" (https://opencode.ai/docs/providers/, 2026-09-08); PR #18186 "Remove anthropic references per legal requests" 2026-03-19 (https://ridakaddir.com/blog/post/did-anthropic-kill-opencode-claude-subscription-ban, 2026). Strong plugin hook surface (https://opencode.ai/docs/plugins/, 2026-09-08). Still the best-maintained *local-model* harness; keep it as the local/OSS-model executor per local-ai-coding-stack-research.md §7, not as a Claude executor.
**Aider.** Apache-2.0, Python. Anthropic = API key only (https://aider.chat/docs/llms/anthropic.html, 2026-09-08). Last release v0.86.0 **2025-08-09**, last push 2026-05-22 — effectively dormant; no hooks (lint/test commands only; https://aider.chat/docs/usage/lint-test.html). Drop from the shortlist.
**Goose** (now `aaif-goose/goose` under the Linux Foundation AAIF; Rust; Apache-2.0; v1.50.0 2026-09-08). Anthropic = `ANTHROPIC_API_KEY` (https://goose-docs.ai/docs/getting-started/providers/, 2026-09-08); "Anthropic OAuth Login for Claude subscription users" #3647 opened 2025-07-25, closed 2025-08-19 — resolution UNVERIFIED and now overtaken by Anthropic's 2026 policy. Hooks: UNVERIFIED (recipes/.goosehints/MCP extensions confirmed only via secondary sources). Good local-model support; healthy maintenance.
**Cline** (Apache-2.0, TypeScript, v4.1.17 2026-09-02, 67.7k stars). Hooks: PreToolUse, PostToolUse, UserPromptSubmit, TaskStart, TaskResume, TaskCancel; `cancel` + `contextModification` (https://cline.bot/blog/cline-v3-36-hooks, 2025-11-06). "Claude Code" provider: "Uses your Claude subscription limits instead of API token billing" by invoking the local `claude` CLI (https://docs.cline.bot/provider-config/claude-code, 2026-09-08). Legal page forbids developers routing requests "through Free, Pro, or Max plan credentials on behalf of their users"; Roo Code issue #10645 (2026-01-12): "Anthropic has indicated they want third-party integrations like the Claude Code provider to be removed" (https://github.com/RooCodeInc/Roo-Code/issues/10645). Treated as R1 fail. Also an IDE extension — we work in the terminal.
**OpenHands** (now `OpenHands/OpenHands`, MIT, v1.16.0 2026-08-27, 87k stars). LLM access "any LLM supported by LiteLLM" = keys (https://docs.openhands.dev/usage/llms/llms, 2026-09-08); local recommendation "Qwen3.6-35B-A3B" — far above 8 GB. Skills/`AGENTS.md`/microagents (https://docs.openhands.dev/overview/skills). V1 hooks UNVERIFIED. Heaviest of the set; no reason to move.
**Gemini CLI** (Apache-2.0, 107k stars, weekly stable releases, nightly 2026-09-09). Free personal tier "60 requests/min and 1,000 requests/day" with 1M context (https://github.com/google-gemini/gemini-cli, 2026-09-08). Hooks: SessionStart, SessionEnd, BeforeAgent, AfterAgent, BeforeModel, AfterModel, BeforeToolSelection, BeforeTool, AfterTool, PreCompress, Notification; configured in `.gemini/settings.json` / `~/.gemini/settings.json` / `/etc/gemini-cli/settings.json` (https://geminicli.com/docs/hooks/, 2026-09-08). Use: one-shot long-context reading (multi-MB logs, whole-repo audits, doc digests) whose *summary* is handed back to Claude Code. Not a Claude executor; no local-model path; Google account data terms apply (free tier may train on prompts — UNVERIFIED, check before feeding secrets/business data).
## 6. What would have to be true for switching to be worth it (triggers)
1. **Anthropic sanctions subscription OAuth in a third-party harness** (legal page changes, or an official "bring your plan" program). Until then every OSS executor is API-key-only for Claude.
2. **Anthropic API billing becomes acceptable** (feedback_no_claude_api.md says no: $20 cap, API billing OFF). Would also need per-month cost < Pro.
3. **A local model ≥ Claude-Sonnet-class fits 8 GB** (or the 128 GB MS-S1 Max lands — Horizon B). Then OpenCode/jcode/Goose become real *local* executors and jcode's RAM/swarm edge matters.
4. **Claude Code drops hooks/skills or auto memory** (no sign; the opposite is happening).
5. **jcode gains ≥3 sustained maintainers and CI actually runs its tests** (#1177 closed) and the installer stops writing to `~/.claude/settings.json` (#811 closed).
Until (1) or (2), the correct moves are inside Claude Code: switch to Sonnet 5 (1M, free) for long sessions when the Opus-4.8/medium default isn't needed; make the 80% hook window-aware; fix `/recall` so memory is retrieved, not injected.
## 7. Sources (all fetched 2026-09-08 unless dated otherwise)
- Anthropic legal page — https://code.claude.com/docs/en/legal-and-compliance (via ai-harness-layer-research.md §2); The Register 2026-02-20; enforcement 2026-04-04 (kersai.com guide)
- Claude Code model config (1M by plan, `/autocompact`) — https://code.claude.com/docs/en/model-config
- Claude Code memory (MEMORY.md 200 lines/25 KB; CLAUDE.md 4 MiB) — https://code.claude.com/docs/en/memory
- Claude Code costs (compaction, hooks/skills offload, resume-from-summary) — https://code.claude.com/docs/en/costs
- jcode repo/README — https://github.com/1jehuang/jcode ; fork — https://github.com/jrish11/jcode
- jcode OAUTH.md — https://github.com/1jehuang/jcode/blob/master/OAUTH.md
- jcode docs — https://jcode.sh/docs ; releases — https://github.com/1jehuang/jcode/releases ; DeepWiki — https://deepwiki.com/1jehuang/jcode
- jcode issues #811, #1177, #703, #1100 — https://github.com/1jehuang/jcode/issues/{811,1177,703,1100}
- Wavect jcode review (2026-08-02) — https://wavect.io/blog/jcode-vs-claude-code-rust-agent-harness/
- GitHub REST API (unauthenticated) for stars/license/releases/contributors of all repos
- OpenCode providers — https://opencode.ai/docs/providers/ ; plugins — https://opencode.ai/docs/plugins/ ; ban write-up — https://ridakaddir.com/blog/post/did-anthropic-kill-opencode-claude-subscription-ban
- Aider Anthropic — https://aider.chat/docs/llms/anthropic.html ; lint/test — https://aider.chat/docs/usage/lint-test.html
- Goose providers — https://goose-docs.ai/docs/getting-started/providers/ ; OAuth issue — https://github.com/block/goose/issues/3647
- Cline Claude Code provider — https://docs.cline.bot/provider-config/claude-code ; hooks — https://cline.bot/blog/cline-v3-36-hooks (2025-11-06) ; Roo Code #10645 — https://github.com/RooCodeInc/Roo-Code/issues/10645
- OpenHands LLMs — https://docs.openhands.dev/usage/llms/llms ; skills — https://docs.openhands.dev/overview/skills
- Gemini CLI — https://github.com/google-gemini/gemini-cli ; hooks — https://geminicli.com/docs/hooks/
- Prior local briefs — research/ai-harness-layer-research.md §2; research/local-ai-coding-stack-research.md §3, §7; memory reference_open_source_ai_tools.md (2026-05-20)