open source AIApril 12-13, 2026shipping log

Open source AI updates, April 12-13, 2026: 86 commits, one desktop agent, four patterns

Every other roundup for this window stops at release numbers. llama.cpp b8779, Ollama v0.20.6, ComfyUI v0.19, Codex CLI 0.121.0-alpha.4. This page goes below the release note. One open-source AI desktop agent, 48 hours of git history, every anchor commit with its SHA and file path.

F
Fazm
9 min read
4.9from 200+
Every commit SHA verifiable in git log
Patterns match what other April 12-13 projects shipped
Real diffs, not release-note summaries

Why a single-project angle

Search "open source ai projects tools updates april 12-13 2026" and the first page returns news aggregators and "awesome" lists. They mention llama.cpp build b8779, Ollama v0.20.6, ComfyUI v0.19, CrewAI security patches, Codex CLI 0.121.0-alpha.4, Hermes Agent v0.8.0. All real. All already documented on their own release pages.

Below that layer is a question nobody answers: what does 48 hours of shipping look like on one concrete open-source AI project? Not a framework, not an inference engine, a consumer app. A Mac desktop agent with a public git history. This page is that log.

The project is Fazm. The window is 2026-04-12 00:00 through 2026-04-13 23:59. The command is one line of git log. The answer is 86 commits grouped into four patterns that are showing up across the ecosystem the same week.

The raw count, from one command

Everything on this page traces to this output. 86 commits total, 19 on April 12, 67 on April 13. Copy the command, rerun against the repo, and the numbers match.

git log --since='2026-04-12'

Why this is the anchor fact: the git log is ground truth. Release notes summarize. Blog posts interpret. The log is what actually landed, minute by minute, on the days the keyword targets. No other April-12-13 roundup includes a commit-level view.

Four patterns in the 48-hour window

Zoom out from the 86 commits and four themes dominate. Three of them are showing up across other open-source AI projects the same week. Per-session concurrency, watchdogs on tool execution, consolidation of backends, and the Opus-to-Sonnet default flip.

Per-session concurrency

15+ commits plumb a sessionKey through ACPBridge, ChatProvider, DetachedChatWindow, and every protocol message. Concurrent chats stop cross-contaminating.

Tool timeout watchdog

6 commits land a three-tier default (10s internal, 120s MCP, 300s other) plus a user override via the FAZM_TOOL_TIMEOUT_SECONDS env var.

Vertex AI removed

9 commits gut the Vertex fallback path. Single bundled-Anthropic backend remains, cost-capped at $10, with BYOK as the user-mode escape hatch.

Opus to Sonnet default

2 commits migrate the default selectedModel from Opus to Sonnet 4.6. Warmup sessions and onboarding chat follow in the same cluster.

Detached-window workspace

Each pop-out chat window carries its own workspace and CLAUDE.md state. 9c23ea11 persists per-window, 19bb4fee routes the cwd through the bridge.

v2.2.1 shipped

The one release tagged inside this window. Single changelog entry: fix duplicate AI response in pop-out and floating bar. Underlying fix: ab784283, 1884bf90.

The numbers behind the patterns

Every number below comes from either git rev-list --count or git show --stat against the anchor commits. No benchmarks, no invented figures.

0Commits April 12-13 in the Fazm repo
0Commits on April 13 alone
0 LOCTool timeout watchdog, single file
0Per-session state maps added to ACPBridge

For scale, the whole ACPBridge.swift file is about 1400 lines today. The per-session refactor touched it in 0+ commits. The watchdog is a single 0 line addition concentrated in one TypeScript file.

Deep dive 1: the tool timeout watchdog

Commit f3a8ca51, landed 17:45 PDT on April 13. File: acp-bridge/src/index.ts. Change: +96 lines. The whole watchdog is a single self-contained block. Here is the meat of it:

acp-bridge/src/index.ts (excerpt)

Three defaults, one escape hatch. Internal tools (ToolSearch) get 10 seconds. MCP tools get 2 minutes because they often shell out to other processes. Everything else gets 5 minutes. The FAZM_TOOL_TIMEOUT_SECONDS environment variable overrides all three uniformly.

The interesting detail is the failure path. When a tool trips the timer, the watchdog does not just kill it. It synthesizes a tool_activity completion so the spinner stops, emits a tool_result_display with a fazm://settings/tool-timeouts deep link, and logs the timeout so the Swift bridge decrements its running-tools counter. The user gets a visible, actionable error, not a hung chat.

Deep dive 2: per-session state in ACPBridge

Commit ebcbec43, 12:37 PDT April 13. File: Desktop/Sources/Chat/ACPBridge.swift. Change: +22/-6 across the actor's state. The old globals stay for backward compatibility. Five new per-session maps, all keyed by a String sessionKey, take over the hot path.

Desktop/Sources/Chat/ACPBridge.swift (excerpt)

The refactor alone is not useful without plumbing. Follow-up commits threaded sessionKey through every protocol message (8c141706, 615a2519, dde0aaea), every tool_use request (ecded1db, 5223880f), every outbound send via sendWithSession (08d5b426, 7103543a, 00286fa5), and every session-scoped interrupt (8416a59f, df89ac82, 162d8b43). That is the unglamorous 80 percent of a concurrency refactor. This page shows the 20 percent that is fun to read.

Minute-by-minute, April 12-13, 2026

1

2026-04-12, morning: bug squashing for v2.2.1

Commits 72cd5c31 through 4cf10b73 fix the duplicate AI response bug in pop-out windows. ab784283 narrows the subscription to newly added messages. Release a3c9e674 tags v2.2.1.

Small, surgical release. Single changelog line. The real work of the day was further down.
2

2026-04-12, afternoon: Vertex AI cleanup

Nine commits between 02ccd919 and 77fbeb3d strip Vertex from ACPBridge, ChatProvider, and onboarding. VertexTokenManager is deleted. Cost cap adjusted from $10 up to $10000 then back down to $10.

The fallback path disappears. One bundled Anthropic key with a hard cost cap, BYOK as the user-mode exit. Less configuration surface, fewer mode transitions.
3

2026-04-13, morning: the concurrency refactor begins

Starting at 11:45 PDT, d7e70bec adds a compactingSessionKey to track session during compaction. Within two hours the full per-session state pattern lands in ebcbec43.

The driver is a concrete UX bug: running a query in one pop-out window freezes the others. The fix is the five-map per-session design.
4

2026-04-13, noon: sendWithSession everywhere

08d5b426, 7103543a, 00286fa5, 5223880f route every outbound message through a sessionKey-aware send. 663b9a83 fixes missing sessionId in tool_use_summary, rate_limit, and api_retry paths.

This is the unglamorous half of a concurrency refactor. Every send path has to learn which session it belongs to or events leak across chats.
5

2026-04-13, afternoon: detached-window workspace state

a8a4f20b adds workspace + CLAUDE.md state to FloatingControlBarState. 2e94ce7e, 19bb4fee, 9c23ea11 persist per-window workspace and route the cwd through sendMessage.

Each pop-out chat becomes its own project. You can open Fazm with three windows pointing at three different repos and they stay independent.
6

2026-04-13, late afternoon: the watchdog lands

f3a8ca51 adds the tool timeout watchdog: +96 lines in acp-bridge/src/index.ts. Follow-ups e2dda7bb and 0243ea72 surface the setting in the UI. c5e49f1b and 38a7980d wire deep-link navigation to it.

A wedged MCP tool used to block the whole session. Now it is bounded, recoverable, and there is a fazm://settings/tool-timeouts deep link baked into the timeout message.
7

2026-04-13, 17:20 PDT: Opus to Sonnet flip

122c5624 changes the default selectedModel to Sonnet. f50ec22b flips warmup sessions to claude-sonnet-4-6. 1a568fef does the same in the onboarding chat.

Sonnet 4.6 is now the Pareto-optimal default for tool-using agents. The flip takes three commits. The one-time migration guard comes later in 3bc92bd8.

How the four patterns land in the same binary

The four patterns above are not independent features. They converge on the same runtime boundary: the ACP bridge that sits between the Swift app and the language model's tool loop. Here is the shape of that convergence.

Four April 12-13 patterns, one bridge

Swift app
User settings
macOS
acp-bridge (Node)
Anthropic API
MCP tools
Per-session UI

Verify the commits yourself

Three commands, four anchor SHAs. If any of these return empty, the repo has moved, not the history. These SHAs are immutable.

anchor commit verification

Commits in the 48-hour window, by headline

Every pill below is a real commit message. Scroll the strip to see the shape of the work.

Add per-session state to ACPBridge for concurrent query support
Add tool timeout watchdog to enforce per-tool execution limits
Remove Vertex bridge mode from ACPBridge
Migrate selected model from Opus to Sonnet
Add per-window workspace persistence to detached chat windows
Add tool timeout preference to settings page
Add FAZM_SESSION_KEY to tool_use request payload if present
Release changelog for v2.2.1
Update handleSessionUpdate to use sendWithSession
Add per-session interrupt support via sessionKey
Remove VertexTokenManager
Add deep link handling to navigate to specific settings
Update warmup session models to claude-sonnet-4-6

The single most uncopyable line

If this page has one line no other roundup can run, it is this one. Pipe it into your terminal against a clone of the repo and the number matches:

git rev-list --count HEAD --since='2026-04-12 00:00' --until='2026-04-13 23:59'

Returns: 86. The rest of this page is annotation.

This page vs the rest of the SERP

For the same keyword, this page exposes a layer other roundups do not touch.

FeatureStandard roundup postsThis page (commit log)
SourceRelease notes, changelogs, GitHub release pagesCommit log on a real repo
GranularityOne line per release, no file paths86 commits with SHAs and file paths
In-between workInvisible unless you clone the repoVisible (pattern is the interesting part)
VerificationTrust the writer's summaryAnyone can rerun `git log --since='2026-04-12'`
Patterns surfaced'Faster', 'better UX', 'new model support'Per-session, watchdogs, Vertex cleanup, model flip

Why these patterns are not just Fazm

The interesting part is not that one small AI project shipped these four patterns in 48 hours. It is that the same patterns are turning up in the big-name projects the same week.

Per-session concurrency: Codex CLI 0.121.0-alpha.4 shipped on April 13 with Realtime V2 background agent streaming. Hermes Agent v0.8.0 shipped as an intelligence release with 209 merged PRs including async Browser Use integration. Agent frameworks are uniformly moving from single-active-query to many-concurrent-queries.

Tool timeout watchdogs: every production agent framework grows one sooner or later. A single wedged MCP tool otherwise locks the session. Fazm's version uses three tiered defaults with a user override. Other projects use a single timeout knob. The pattern is the same shape.

Backend consolidation with bundled keys and BYOK: cost-capped bundled keys are becoming the default for consumer AI apps because they remove the OpenAI-signup wall on first launch. Vertex AI removal in this repo is a small example of that broader consolidation.

Opus to Sonnet default flip: Sonnet 4.6 is now Pareto-optimal on cost vs quality for tool-using agents. Projects that were defaulting to Opus are flipping this week, and Fazm flipped it in three commits at 17:19 PDT on April 13.

Want to see this commit log in action?

30 minutes on a call. We walk the April 12-13 diff live on your Mac and show which patterns apply to the agents you are building.

Book a call

Frequently asked questions

Why does this roundup only cover one project instead of the usual dozen?

Because the roundups that cover llama.cpp, Ollama, ComfyUI, Transformers, CrewAI, Codex CLI, Hermes Agent, and MemPalace in one post never get below the release-note surface. You learn that llama.cpp shipped build b8779 with a Vulkan flash attention shader. You do not learn what a single team actually did in 48 hours of real shipping. This page picks one concrete open-source consumer AI agent (Fazm) and dumps the whole commit log: 86 commits, April 12 through April 13, 2026, with SHAs and file paths. If you want the broad aggregation, crescendo.ai and llm-stats.com have it. If you want to see what a real-world AI shipping week looks like, read on.

What is the exact number of commits on April 12-13, 2026?

86 commits. 19 landed on 2026-04-12, 67 landed on 2026-04-13. That was verified with `git log --since='2026-04-12 00:00' --until='2026-04-13 23:59' --format='%H' | wc -l` against the Fazm repository. The cluster breaks down roughly as: 15+ commits on the per-session concurrency refactor (sessionKey plumbed through ACPBridge, ChatProvider, DetachedChatWindow, protocol messages), 6 commits on the tool timeout watchdog (watchdog, timer clearing, settings UI, environment override, deep link), 9 commits on Vertex AI removal and bundled Anthropic fallback, 2 commits on the Opus to Sonnet migration, and the remainder spread across detached-window workspace persistence, session-scoped interrupts, skip-button timing, push-to-talk spinner, and a release commit for v2.2.1.

What does the tool timeout watchdog actually do?

Commit f3a8ca51 on 2026-04-13 added roughly 96 lines to `acp-bridge/src/index.ts`. Three constants define the default tiers: TOOL_TIMEOUT_INTERNAL_MS = 10_000 (ToolSearch and similar), TOOL_TIMEOUT_MCP_MS = 120_000 (any MCP tool), TOOL_TIMEOUT_DEFAULT_MS = 300_000 (everything else). When a tool exceeds its tier, the watchdog synthesizes a completion event so the UI stops spinning, emits a visible error with a `fazm://settings/tool-timeouts` deep link to the setting, and logs the timeout so the Swift bridge can decrement its acpToolsRunning counter. Users can override every tier by setting FAZM_TOOL_TIMEOUT_SECONDS in Settings > Advanced > Tool Timeout. The shipping reason for this is simple: a wedged MCP tool used to block the whole chat session forever. With the watchdog, it is bounded and recoverable.

What is 'per-session state' and why did it need its own refactor?

Before April 13, Fazm's ACPBridge tracked one query at a time: a single pending message queue, a single continuation box, a single acpToolsRunning counter. If you popped out a chat into a detached window and sent a second query while the first was still streaming, the two queries would cross-contaminate. Tool events for chat A would end up in chat B. Commit ebcbec43 introduced five per-session maps keyed by a sessionKey string: sessionContinuations, sessionPendingMessages, sessionMessageGenerations, sessionInterrupted, and sessionAcpToolsRunning. Follow-up commits then plumbed sessionKey through every outbound and inbound protocol message (8c141706, 615a2519, dde0aaea), through tool_use request payloads (ecded1db), through ACPBridge send paths via sendWithSession (08d5b426, 7103543a, 00286fa5), and finally cleaned up the legacy global state on interrupt (162d8b43). Result: you can run a chat per window, concurrently, with the per-window workspace persistence that landed in the same cluster (9c23ea11).

Why did Fazm remove Vertex AI on April 12?

Commits 02ccd919, 36c089d2, and f095d7b2 on 2026-04-12 deleted Vertex bridge mode from ACPBridge.swift (-11 lines), removed VertexTokenManager entirely, and dropped the Vertex fallback from ChatProvider. The onboarding bridge was switched to a bundled Anthropic API key in 0fc51f4b. Related commits renamed Omi to Fazm in ACP mode logging (68459563), moved the built-in API cost cap from $10000 down to $10 (77fbeb3d reverted an earlier 06b5f97c), and updated migration comments and documentation. Interpretation: the project consolidated its backend to a single bundled Anthropic path, removing the Google Cloud Vertex fallback that was adding configuration surface without pulling its weight. This is the kind of cleanup that does not show up in release notes but shows up in commit logs.

Where exactly can I verify these commits?

All of this came from one command: `git log --since='2026-04-12 00:00' --until='2026-04-13 23:59' --format='%h|%ad|%s' --date=iso` against the Fazm repository. Every commit SHA in this page is the short 7-character form from that log. Specific anchor commits: f3a8ca51 (tool timeout watchdog, +96 lines in acp-bridge/src/index.ts), ebcbec43 (per-session state, +22/-6 in Desktop/Sources/Chat/ACPBridge.swift), 02ccd919 (Vertex removal, -11 lines in ACPBridge.swift), 122c5624 (Opus to Sonnet, +8 lines in ShortcutSettings.swift), a3c9e674 (v2.2.1 release commit), b60b2211 (final commit of the 48h window on 2026-04-13 19:30 PDT).

What landed in Fazm 2.2.1, the actual release from this window?

Version 2.2.1 shipped on 2026-04-12 with a single changelog entry: 'Fixed duplicate AI response appearing in pop-out and floating bar when sending follow-up messages.' The underlying fix is commits 1884bf90 and ab784283 earlier that day, which change the AI response subscription to only search newly added messages instead of the whole transcript. Small release, but it is the one tagged inside the 48 hour window. The bigger per-session and watchdog work landed during April 13 and rolled into 2.3.x.

Is Fazm actually open source?

The desktop app source ships with the product: when you install Fazm, the acp-bridge TypeScript sources are on disk inside the app bundle and you can inspect them directly. The Swift binary that drives macOS control (mcp-server-macos-use) is open source at github.com/matthew-heartful/macos-use. Four of the five MCP servers Fazm bundles (macos-use, Playwright MCP, Google Workspace MCP, WhatsApp MCP) are open source. That is the sense in which this is an 'open source AI project update' entry for April 12-13, 2026. The product is a consumer app, not a developer framework: you install it, grant Accessibility permission once, and start talking to your Mac in English.

What about the big releases that day: llama.cpp b8779, Codex CLI 0.121.0-alpha.4, Ollama v0.20.6?

Those are real and they ship on the same days. They matter. They also already have their own release notes, changelogs, and GitHub release pages. Search any of them and the SERP is saturated. What is not saturated is the question: in a 48-hour window, what does a small real open-source AI app ship between releases? That is the gap this page fills. If you want the meta-roundup, read Fazm's earlier blog posts at /blog/new-open-source-ai-projects-github-hugging-face-april-2026 or the Crescendo AI news stream. If you want one actual commit log, you are in the right place.

Why do these patterns matter for other open-source AI projects in April 2026?

Three of the four patterns in this window are showing up across the ecosystem right now. (1) Per-session concurrency: Codex CLI shipped 'Realtime V2 background agent streaming' the same day and Hermes Agent v0.8.0 shipped async agent support (209 merged PRs). Agent frameworks are uniformly moving from single-active-query to many-concurrent-queries. (2) Tool timeout watchdogs: every production agent framework eventually grows one, because a single wedged tool call otherwise freezes the session. (3) Cost-capped bundled API keys with a fallback to user BYOK: this is becoming the default for consumer AI apps because it removes the sign-up-for-OpenAI wall on first launch. (4) Opus to Sonnet default migration: Sonnet 4.6 is now the Pareto-optimal default for tool-using agents on cost versus quality, and many projects are switching their defaults.

How did this page land for you?

React to reveal totals

Comments ()

Leave a comment to see what others are saying.

Public and anonymous. No signup.