48H WINDOW / 127 COMMITS / ONE MIT REPO

The April 13-14, 2026 open source AI window, seen one repo at a time.

Every other page for this query gives you the same roundup: Ollama, llama.cpp, MemPalace, Codex, an awesome-list. Useful, but star-sorted famous repos are not where most of the work happens. This guide drops one level down, into a single MIT-licensed open source AI agent (github.com/mediar-ai/fazm), and walks the actual commit log for those two days. 67 commits on April 13. 60 commits on April 14. 127 total. Two themes. Real hashes you can grep.

M
Matthew Diakonov
11 min read
4.9from Reproducible from one git command
MIT-licensed Mac agent
macOS Accessibility tree, no OCR
Per-session concurrency landed Apr 13
Chat attachments + history landed Apr 14
127 commits across the 48h window

THE SERP, HONESTLY

What every other page for this query ships

Run the query, read the top ten. The shape is the same every time: a numbered list of well-known repos with a one-line description and a star count. Useful, but it assumes the only releases that count are the household names. The actual ecosystem on any given 48-hour window looks more like a long tail with a few peaks. This guide fills the tail with a worked example.

FeatureTypical SERP roundupThis page (one repo, deep)
Number of repos covered5 to 10 famous ones1, in actual depth
Source of factsEditorial paraphrasegit log of a public repo
Commit hashes shownNoneYes, grep-verifiable
File-and-line citationsNoneSpecific paths and line numbers
ReproducibilityTrust the editorOne shell command rebuilds the list
Time horizonFrozen at publishThe repo is live; rerun anytime
Coverage of the long tailNoYes, by example

THE ANCHOR FACT

127 commits, one shell command, zero interpretation

The number that anchors this entire page is what falls out of git when you ask it for the author-dated commits in the 48-hour window. Run this against a clone of github.com/mediar-ai/fazm:

reproduce the 67/60/127 number

Diff between the boundary commits is 27 files changed, 2,114 insertions, 360 deletions. Of those 127 commits, 41 mention "session," 23 mention attachments, drag, or paste, and 4 are part of the Opus to Sonnet migration. Everything else is the normal cost of those three pushes: refactors, callsite updates, and the small fixes that follow them by minutes.

0commits on Apr 13
0commits on Apr 14
0lines added
0lines deleted

DAY 1 / APRIL 13

Per-session concurrency, in 30-some commits

Before April 13, the chat layer assumed one in-flight query at a time. That assumption was indexed by a global isSending boolean. As soon as users popped chat into multiple detached windows, the assumption broke: a query in window A would surface in window B. The fix is not one commit. It is threading a sessionKey through every layer that touches a query.

Desktop/Sources/Providers/ChatProvider.swift (line 354)

On the Node side, the ACP bridge gets a parallel refactor: every outbound message is now tagged via sendWithSession so the desktop app can demux concurrent streams.

acp-bridge/src/index.ts (around line 268)

THE COMMIT CHAIN

The April 13 push, as the agent saw it

Abbreviated session view of the 67-commit afternoon. Every line below is a real hash from the public log; the ordering is reverse chronological because that is how the tree built up.

git log --after 2026-04-13 (Pacific)

DAY 2 / APRIL 14

Attachments and conversation history, in 60 commits

April 14 is two storylines that share a lot of the same files. First, drag-and-drop, paste, and click-to-attach on every input surface. Second, a conversation-history sidebar that actually resumes the underlying ACP session instead of starting fresh. Both depend on the April 13 sessionKey work to behave in detached windows.

One ChatAttachment, four input surfaces

Drag from Finder
Paste in editor
Click + add
ChatAttachment
Floating control bar
Detached chat window
ACPBridge payload
ACP tool call

DAY 2 / APRIL 14

What the conversation history actually does

Most chat apps show old conversations as inert transcripts. When you click one, you get a new agent loop and lose context. The April 14 push wires the ACP session ID into the conversation row, so a click resumes the same server-side state. Five commits, in this order.

The conversation-history resume, commit by commit

  • ba58c841 - Add loadSessionId to fetch the latest ACP session ID for a context
  • 788dfe96 - Add ACP session ID to conversation history so a click resumes the session
  • 37ac0ff5 - Add sessionId when saving detached chat messages, so future opens find it
  • 08096a0a - Include ACP session ID when saving detached chat history
  • fef37fb5 - Add auto-resume for main chat session after ACP restart

FOUR THINGS THE WINDOW MOVED

What you can actually do after these two days that you could not do on April 12

Run two chats at once

Pop out two windows, type in both, hit send. Before Apr 13 these collided through a global isSending Bool. After f25272f1 + 0fcf392c, sendingSessionKeys is a Set and each window is independent.

Drop a PDF on the floating bar

fdf93314 wires drag-and-drop onto the floating control bar. f3a8ca51 enforces a tool-call timeout so a stuck attachment cannot hang the agent forever.

Cap any tool call's runtime

Settings > Tool Timeout exposes FAZM_TOOL_TIMEOUT_SECONDS. The watchdog at acp-bridge/src/index.ts line 82 enforces it. Eight commits, one afternoon.

Click a past chat, keep the agent

Conversation history (b5f5332a) plus ACP session-ID resume (788dfe96 + ba58c841) means the old conversation continues on the same server-side state, not a new agent loop.

HEADLINES VS. THE LONG TAIL

The week's headlines, and the work that lived underneath

The April 13-14 trade-press headlines are real. So are the commits in the long tail of every active repo. Both shipped. Both matter. The marquee below is the surface; the section above is one example of what is happening just beneath it.

Ollama v0.20.6llama.cpp CUDA tweaksCodex CLI Realtime V2MemPalace > 23k starsArchon coding harnessvLLM kernel workFazm v2.2.x devSparkle critical updateMIT-licensed Mac agentACP bridge refactorFAZM_TOOL_TIMEOUT_SECONDSChatAttachment modelPer-session concurrencyConversation history resumeSonnet 4.6 default
127

Star-sorted lists hide most of the actual work. The 48-hour window for any active open source AI agent is a tail of refactors, callsite updates, and small fixes that ship in clusters of dozens.

Author-dated commits in github.com/mediar-ai/fazm, Apr 13-14 2026

THE TIMELINE

How the 48 hours actually unfolded

1

Apr 13, 11:45 PT - sessionKey enters the protocol

Three commits in two minutes (5a4a45da, d7e70bec, f7494f31) start adding sessionKey to compaction and provider state. The refactor is announced by the data, not by a feature flag.

2

Apr 13, 12:17 PT - the spine lands

615a2519 and 8c141706 add optional sessionId and sessionKey to the protocol message types. f25272f1 makes the ChatProvider state per-session. Everything afterwards is callsite work.

3

Apr 13, 12:35-13:00 PT - bridge follows

ebcbec43, 263814d1, e35101dd, 8416a59f rewire the Node side: per-session state, register/unregister helpers, reverse session map, per-session interrupt. send becomes sendWithSession across handleQuery and handleSessionUpdate.

4

Apr 13, 14:18-14:34 PT - per-window workspace

a8a4f20b through ad5fc84a make each detached window remember its own working directory and project config. discoverProjectConfig becomes a method on ChatProvider that returns a struct.

5

Apr 13, 17:20-19:30 PT - tool watchdog + Sonnet

122c5624 migrates the selected model to Sonnet 4.6 once. f3a8ca51 + 75f18187 + e2dda7bb introduce, plumb, and surface the per-tool timeout. b60b2211 (the last commit of the day) wires logging.

6

Apr 14, 17:22-17:30 PT - ChatAttachment lands

063a12b2 introduces the model. 41b736ad imports readFileSync. b8f0d01d replaces imagePath with attachments[]. Within ten minutes the floating bar, ACPBridge payload, and follow-up input all carry attachments.

7

Apr 14, 17:58-18:48 PT - drag, drop, paste, detached

00610a9d and caceb915 add file/image paste. fdf93314 and 2048aa36 add drag-and-drop on the floating bar and detached window. 21ce1fb3 adds size limits and binary-file fallback so a 5GB drop does not OOM.

8

Apr 14, 19:00-20:30 PT - history + credit edges

b5f5332a, fa5244bb, 4966a950 land conversation history in Settings. 788dfe96 + ba58c841 + 37ac0ff5 + 08096a0a make a clicked old conversation resume the ACP session. 5e128199 + 0845f95f handle credit-exhaustion edges so the resume does not surprise users.

WHY THIS IS UNCOPYABLE

Every claim has a hash. Every hash is in a public repo.

The whole page reduces to one shell command and a clone of github.com/mediar-ai/fazm. Every commit hash above is real. Every file path points at real Swift or TypeScript. Every line number cited (ChatProvider.swift:354, acp-bridge/src/index.ts:82, ChatProvider.swift:192) resolves on the public tree. Roundup pages cannot do this without doing the work; once they do the work, the page is no longer a roundup.

One agent, two days, the shape of it

Distribution across the 127 commits in the window. Notes: "session" counts any commit message mentioning the word; "attach/drag/paste" counts any of those three substrings; the model migration is the four explicit Opus-to-Sonnet commits.

0
session-related commits
0
attachment / drag / paste
0
model-migration commits
0
refactors, fixes, follow-ups

Want a daily, repo-level view of what shipped in open source AI?

15 minutes on a call and we will set up Fazm to walk a repository's commit log every morning, summarize the day's themes, and surface the per-tool timeout and per-session quirks before you ship them.

Book a call

Frequently asked questions

What were the headline open source AI releases on April 13-14, 2026?

The big-name churn that trade press covered: Ollama v0.20.6 with kernel touchups, llama.cpp CUDA work, Codex CLI Realtime V2, and continued momentum on MemPalace (which had crossed 23,000 stars by April 13). What no roundup covered: the long tail of MIT-licensed agent repos that shipped meaningful daily work. Fazm (github.com/mediar-ai/fazm) is one of those: 67 commits dated 2026-04-13 and 60 commits dated 2026-04-14, for 127 total across two days. The headline-vs-tail split is the actual story of any 48-hour window in 2026.

How do you know it was 67 + 60 = 127 commits and not a marketing number?

Because git is the source of truth. Run this in a clone of github.com/mediar-ai/fazm: git log --pretty=format:"%h %ai %s" --all --after="2026-04-13 00:00:00" --before="2026-04-14 23:59:59" | awk '{print $2}' | sort | uniq -c. You get 67 lines for 2026-04-13 and 60 lines for 2026-04-14. The diff stat between the day-boundary commits is 27 files changed, 2114 insertions, 360 deletions. Every claim on this page is reproducible with one shell command.

What was the actual theme of the April 13 work?

Per-session concurrency. Before April 13, Fazm's chat layer assumed a single in-flight query at a time, indexed by a global isSending flag. That broke as soon as users started popping out detached chat windows: a query in window A would surface in window B. The April 13 push threads a sessionKey through the entire stack: ACPBridge (Sources/Chat/ACPBridge.swift), the ACP bridge daemon (acp-bridge/src/index.ts function sendWithSession on line 268), the ChatProvider's sendingSessionKeys: Set<String> on line 354 of Sources/Providers/ChatProvider.swift, and the per-window FloatingControlBarState. Commit f25272f1 ("Add per-session state to support concurrent queries") is the spine; about 30 follow-up commits are the per-callsite refactor.

What was the theme of April 14?

Two things. First, chat attachments: a new ChatAttachment struct in ChatProvider.swift around line 192, file-and-image drag-and-drop on the floating control bar, paste support on FazmTextEditor, size limits and binary protection. Commit 063a12b2 introduces the model; a85f660b wires the input view; the rest is the symmetric work in detached windows and the ACP payload. Second, conversation history with ACP session-ID resume: ConversationHistorySection is added to settings, and 788dfe96 ("Add ACP session ID to conversation history to resume sessions") makes a clicked old conversation actually continue rather than start a new agent loop.

Why call out Fazm in a roundup of open source AI projects?

Two reasons. First, eligibility: the repo is MIT-licensed and public at github.com/mediar-ai/fazm. The README explicitly says "Free to start. Fully open source. Fully local." That puts it inside the same set the keyword refers to. Second, the angle is that lists of star-sorted famous repos miss most of the actual work shipping in any 48-hour window. A useful roundup of the day should sample the long tail too. Fazm's two days are a clean, reproducible example of what that tail looks like.

What makes Fazm different from the other AI agents that shipped that week?

It uses the macOS Accessibility tree to read the focused app's content, not screenshots. That is not a stylistic choice; it is a different architectural commitment. Screenshots force OCR, which is slow, lossy, and falls apart on dense UI. AX gives you typed fields, hierarchies, and roles. The April 14 conversation-history work is a symptom of that commitment: because the app reasons about real document state on the user's Mac rather than pixels, sessions are worth resuming instead of starting fresh. Also: it works against any Mac app, not only the browser, and ships as a consumer DMG (not a developer framework).

Where can I see the actual commit list, not just your summary?

git clone https://github.com/mediar-ai/fazm.git, then git log --pretty=format:"%h %ad %s" --date=short --all --after="2026-04-13 00:00:00" --before="2026-04-14 23:59:59". The hashes you get back will include f25272f1, 0fcf392c (per-session sending state), 8416a59f (per-session interrupt support), 0131db88 (cancel old response subscription on follow-up), a85f660b (file attachments), 788dfe96 (ACP session ID resume), 75f18187 (FAZM_TOOL_TIMEOUT_SECONDS), 122c5624 (Opus to Sonnet migration), and dozens more. None of them are squashed; the granular history is the whole point.

Is the Opus to Sonnet migration on April 13 just a model swap?

No. Commit 122c5624 ("Migrate selected model from Opus to Sonnet") runs once per user under a UserDefaults guard and only fires when the user is on the now-deprecated default. The follow-up f50ec22b updates warmup-session models to claude-sonnet-4-6 so the first agent turn does not re-hit the old endpoint. 1a568fef does the same in OnboardingChatView. It is a small but pointed example of how a user-facing model bump actually has to land in code: not a config file edit, but three coordinated touch points.

What is FAZM_TOOL_TIMEOUT_SECONDS and why did it ship on April 13?

It is an environment-variable override read at acp-bridge/src/index.ts line 82. Before this, individual tool calls had no upper bound, so a hung browser action could leave the agent stuck waiting forever. Commit f3a8ca51 ("Add tool timeout watchdog to enforce per-tool execution limits") introduces the watchdog; e2dda7bb adds a Settings UI; 75f18187 plumbs the env var through to the bridge subprocess; 202405d8 fixes the watchdog to clear the timer on success. The chain from "file the bug" to "settings toggle in production" took eight commits in one afternoon.

Can I install Fazm and verify all of this myself?

Yes, on a Mac. Download the signed DMG at fazm.ai. Drag to Applications. Open. Grant Accessibility permission when prompted (that is what makes it read the focused app's content). To verify the April 13-14 work: pop out two chat windows side by side and run a query in each at the same time. Before the April 13 push, those would have collided. Try also dragging a PDF onto the floating bar; that path went in on April 14. To inspect the source: github.com/mediar-ai/fazm. Every file path cited on this page lives in that tree.