Your work shouldn't belong to your coding agent.
Harnie reads Pi, OpenCode, and Codex sessions without mutating them, stores observed work in SQLite, and emits Markdown continuation handoffs.
Local-first. Harness-independent. Your agents do the work. Harnie keeps the state.
Requires Node.js 22.23+. Then harnie init.
- Goal
- Search the log once, then replace OLD_VALUE with NEW_VALUE
- Findings
- Searched the log and replaced OLD_VALUE with NEW_VALUE
- Current state
- Edits reported success. Verification not recorded.
- Next
- Verify the edits on src/example.txt. Do not re-edit.
- Provenance
- observed
Same work. Different agent.
Pi started it. Harnie observed it. OpenCode continues from the handoff package.
The session isn't the work.
Coding agents keep their own sessions, histories, tool activity, and context. Switch harnesses and that continuity disappears with them.
Harnie separates the work from the agent that performed it.
The work persists. The execution can change.
This is all it takes.
No new coding agent. No new harness. No control plane. Harnie works beside the tools you already use.
// harnie sessions lists importable rows
harnie import pi <session.jsonl>// Goal, findings, next steps, provenance
harnie show work:pi:cfef1a72-…// Markdown package → stdout + handoffs/
harnie handoff <work> --to opencodeYour work stays yours.
Harnie starts local. Observed events and derived claims live in $HARNIE_HOME/harnie.db. Continuation packages land in $HARNIE_HOME/handoffs/ — regenerable, safe to exclude from backups.
Pi session (read-only)
↓
harnie.db (SQLite)
↓
Markdown handoff
↓
OpenCode (fresh session)// Nothing to send. Nowhere to send it.
if (cloud) return null;No Harnie account. No hosted runtime. No requirement to send your engineering history somewhere else just to continue your work.
Import. Understand.
Continue.
Import
Harnie reads structured session evidence your coding agent already persists — Pi JSONL, OpenCode sessions, Codex rollouts — without writing back to them.
Understand
Rule-derived claims — goal, findings, next steps, operations — with per-claim provenance back to observed events in SQLite.
Continue
Emit a Markdown continuation package for a fresh agent session. Harnie does not resume sessions natively inside any harness.
Harnesses execute. Harnie keeps continuity.
Know where the state came from.
Harnie doesn't flatten agent history into an opaque summary. Observed events stay distinct from rule-derived claims, with provenance back to the source session.
Observed. Derived. Traceable.
Rule-derived claims with per-claim provenance — traceable, but not necessarily true, current, or settled.
What do you get?
A durable record of coding work that isn't owned by the agent that happened to perform it.
Portable work
Goals, findings, next steps, and operations survive in a local SQLite archive — independent of the harness that performed the work.
Cross-agent handoff
Start in Pi. Continue in OpenCode. Paste the Markdown handoff into a fresh session — validated in limited scenarios, expanding over time.
Evidence-backed state
Every derived claim links back to observed events — traceable, not an untraceable LLM summary.
Agents are temporary. Work isn't.
AI coding work should outlive the agent that performed it.
Models change. Harnesses change. Developers switch tools. The engineering work underneath shouldn't have to start over every time.
Stop starting over.
Keep the work. Change the agent.
Then harnie import pi <session.jsonl>.