1
2
Open format
Any tool, any model, any teammate
3
4
#

The system of record for AI-driven development.

5
6

Your agents and team do the work. Sofar tracks every initiative, session, and decision. Assign tasks to anyone; they can pick up from where it truly stands, on any tool they use.

7
8
9
$ npx sofar.sh
10
00000
12
13
14
One record, two surfaceslive from this repo
Claude
Codex
Cursor
OpenCode
Session • @jins
Claude Code v2.1.216 Fable 5 with xhigh effort · Claude Max ~/IO/sofar-cloud
$ sofar status v2-sync-team · 27/29 done (93%) recent: • decision: invite-first pilot onboarding 7.1 ship telemetry — @jins next: 7.2 onboard design partners onto sync|
>
Fable 5 · ▸ sofar-cloud ⎇ main · ◕ v2-sync-team 27/29 · $0.00 Manual mode on · ← 1 agent
app.sofar.sh
Team
Owner • @alignlabs
sofar-cloud
Initiatives: 6
Mac App
87%
Phase 2 — Menu-bar pulse MVP
3/3
Phase 3 — Release pipeline
5/5
Phase 4 — Hardening + polish
2/4
4.1
macOS 27 beta tray check
4.2
Full-fidelity icon recompile
4.3
Panel polish + window chrome
4.4
Shared view package extraction
15
16
17
Logsevents.jsonl — append-only
one record · both surfaces write to it
01KXTE3DPS…decision_loggedClaude Code · just now
J
01KXTEMPCG…task_status_changedapp.sofar.sh · 6.4 → done · 2 min ago
A
01KXTN4C0B…session_startedCursor · resumed from record · 15 min ago
J
18
19
##

The record outlives the tool that wrote it.

20
21

You will change agents, models, and teammates. The record is built so that none of those changes cost you the work’s history.

22
23

Every tool writes to it.

One MCP server and one CLI — not a plugin per vendor. Claude Code, Cursor, OpenCode and Codex all read and write the same record.

Just files in your repo.

Markdown and JSONL in a .sofar/ folder beside your code. It diffs in a pull request, travels in a clone, and opens in any editor.

No lock-in, by design.

Sofar’s format and CLI are MIT-licensed. There is nothing to export, because nothing was ever held anywhere but your repository.

24
25
##

What won, what lost, what settled it.

26
27

A chat log remembers what was said. The record remembers what was settled — every future session, tool, and teammate picks up from there. Closed questions stay closed. Rejected approaches stay rejected.

28
29
>
chose
Drop @dot-loaders entirely and draw the activity indicator in-house — CSS keyframes over static SVG.
30
>
over
Adding ‘unsafe-eval’ to the desktop CSP so @dot-loaders/core’s ajv codegen can run.
31
>
because
The EvalError landed during module evaluation, before ReactDOM.createRoot, so nothing mounted and both windows painted OS-white — desktop 0.3.0 was dead on arrival for every user.
32
33
>
01KXTQ7KGK · decision_logged · app-redesign · 2026-07-22 · excerpt, shortened to fit
34
35
##

More of your software is built by agents every week. The story of that work disappears as it happens.

36
37

Sessions end. Context dies.

An agent works for hours — planning, trying, deciding. The code lands in git. Everything else leaves with the session.

Memory stops at each vendor’s wall.

One tool cannot resume another tool’s work. No agent vendor will fix this: their memory is their lock‑in.

And the questions are coming.

What did the AI build? Under whose direction? Why this way? Right now that answer lives nowhere. Soon “nowhere” won’t be acceptable — to your lead, your auditor, or your customer.

38
39
##

One record of the work, next to the code it produced.

40
41

Sofar keeps a working record in your repository, beside the code. What the work is trying to achieve. Where it stands. What comes next. And the decision trail — what was chosen, what was rejected, and what settled it.

42
43

Agents write it as they go, through a protocol every major coding tool speaks. It is versioned in git, readable as plain text, and owned by you.

44
45
```
46
.sofar/
47
├─ repo.md
48
├─ bindings.json
49
└─ initiatives/v2-sync-team/
50
├─ events.jsonl ← the truth, append-only
51
├─ plan.md
52
├─ decisions.md
53
└─ sessions/
54
```
55
56
Works today with Claude Code · Cursor · OpenCode · Codex
57
58
##

One record. It grows with the work.

59
60

Follow the same piece of work as it scales.

61
62
  1. 01 · For you

    Work that survives anything.

    Close the terminal. Switch models. Change tools mid‑week. The next session reads the record and continues where the last one stopped — no re‑explaining, in any CLI.

  2. 02 · For your team

    One view of who’s doing what.

    Initiatives are shared. People are assigned to the work; every session is attributed to the person who ran it, automatically. A lead sees where everything stands — across tools, agents, and teammates — in one glance.

  3. 03 · For your organization

    Proof, not recollection.

    Every initiative carries its chain: intent → plan → execution → result. When compliance, customers, or counsel ask what your AI built and how it was directed, you answer from the ledger — with retention policies and SSO where you need them.

  4. 04 · For the industry

    An open standard.

    The format is open and MIT‑licensed. Any tool can read and write it; viewers and integrations we didn’t build are welcome. Your record is never hostage to a vendor — including us.

63
64
##

Half the cost to pick the work back up.

65
66

A paired test on real backend work — same repository, same model, same prompt: a session resuming from a Sofar record against the strongest free alternative. Both resumed correctly. The cost didn’t compare.

67
68
![evidence: one paired run](sofar:benchmarks)raw units · zero-based axes

174 seconds from the record vs 386 from the baseline. The session orients in under three minutes.

One paired run, independently graded. Not a benchmark suite — one honest measurement, published in full. We want more repos to measure on.

seconds · lower is better
Sofar recordFree baseline
Time to resume (seconds, lower is better)
Sofar record174s
Free baseline386s

The handoff also holds across vendors: work started in Claude Code has been resumed by a different CLI, on different models, from an eleven-word prompt.

69
70
##

What Sofar will never do.

71
72

Rejected approaches are first-class entries in a Sofar record. These are ours.

73
74
rejected · 01

Run your agents.

Sofar is a record beside your tools, never a layer between you and them. A record can go stale; an orchestrator can break your work.

75
rejected · 02

Watch sessions live.

Your agent vendors already ship that, in‑tool. Sofar owns the story across sessions, tools, and time — not the play‑by‑play of one window.

76
rejected · 03

Guess your progress.

Agents declare their state to the record. Nothing is inferred from commit noise. A confidently wrong 72% is worse than no number.

77
78
##

Your code has a history. Give the work one too.

79
80
Get started — freeone command per repo · free for individuals
81