One open source AI project, one day, twelve commits, one JSON file that mirrors Claude Code
Every other page for this query is a GitHub Trending scrape. This one stays inside a single open source AI agent for a single calendar day, 2026-04-16 into 2026-04-17, and shows what shipping actually looks like in that window. 12 commits, 23 minutes of feature work, one file at ~/.fazm/mcp-servers.json, and a schema that lets the app speak every MCP server the user already runs for Claude Code.
Why this page exists
The query is big. The existing results are thin.
"Open source AI projects tools releases past day April 2026" is a long-tail research query. The person typing it already knows the big-name weights lists. They want something closer to the engineering floor: what happened yesterday inside an AI project, not what the top-10 looks like this month.
The top results for this query in Google on 2026-04-17 are three flavors of the same shape. A GitHub Trending snapshot. A Hugging Face new-models ledger. An aggregator post that reads the other two and turns them into a listicle. Each one names 20 to 80 projects with a one-line blurb. None of them answer the question, "what does a real day of work inside one of these projects look like?"
The rest of the page is that answer for one project: Fazm, an MIT-licensed macOS AI agent built on native accessibility APIs instead of screenshots. The window is 2026-04-16 evening through 2026-04-17. The feature is user-configurable MCP (Model Context Protocol) servers. The file is ~/.fazm/mcp-servers.json. The schema is Claude Code's mcpServers, byte-for-byte.
The raw git log for the 24-hour window
You can reproduce this block by running the second command below in a clone of github.com/mediar-ai/fazm. The output is stable (these commits are on main, not rebased).
The 24-hour window, in numbers
Every number below is countable from the repo. They are not approximations.
That single 0 shared schema is the whole interop story: every MCP server already configured for Claude Code works in Fazm with zero translation. The 12 commits exist mostly to build the UI and persistence around that one decision.
The anchor file
~/.fazm/mcp-servers.json, the file that got added yesterday
This is what a complete user config looks like after the 12 commits landed. Paste this into the path below and the three MCP servers are available to the Fazm agent the next time you open the app. The same block works unchanged in Claude Code.
The 23-minute feature chain
How the feature actually landed, commit by commit
Every step below is a single commit. Timestamps are committer dates in Pacific time. Each step names what the commit added and why it mattered in sequence.
2026-04-16 - the 23-minute MCP chain
17:56:47 - 2152e6a - the seed commit
Commit message: "Add support for custom MCP servers via ~/.fazm/mcp-servers.json". This is the intent. Everything after is execution.
17:58:30 - 8cb97bd - settings surface
Added MCP Servers section to advanced settings. The UI shell comes before the model, because you cannot test the model without somewhere to edit it.
17:58:47 - 9840b05 - MCPServerManager lands
Adds the 114-line ObservableObject that owns the servers array, loads/saves the JSON atomically, and exposes add/remove/update/toggle.
17:59:22 - 401d79b - Hashable conformance
Adds Hashable to MCPServerConfig so the struct can live in a SwiftUI ForEach with stable identity. Tiny commit, necessary for the list view.
17:59:34 - eb797da - state hoist
Moves the MCP server state properties to the top of SettingsContentView. Pure refactor; next commit depends on them being in scope.
17:59:57 - 6ca2185 - the edit sheet
Adds MCPServerEditSheet.swift, the modal form for name/command/args/env. This is the form that lets a user paste a Claude Code config.
18:00:45 - 8acaa07 - card cleanup
Removes an unused settingId parameter from the MCP server settings card. Deliberate API trimming as the integration lines up.
18:00:55 - d97845e - search sidebar
Adds MCP Servers as a search item in the settings sidebar so the new section is findable via the existing settings search.
18:01:07 - 5dfbb25 - homeDir fix
Fixes homeDir reference to homedir() for the user MCP config path. Caught before the PR was merged; this is why you run it before shipping.
18:03:18 - 3066157 - 500pt frame
Sets MCPServerEditSheet to a fixed 500pt height so the sheet does not resize mid-edit when tabbing between fields. Physical UI decision.
18:19:12 - 9d7d36a - streaming polish
Fix mid-word splits by removing text boundary on block index change. Unrelated to MCP but shipped in the same window; streaming-cleanup side work.
18:20:13 - 0536a6e - last commit
Remove unused lastTextContentBlockIndex tracking. Last in the chain. By 18:20:13 the feature ships end-to-end.
Inside the manager
MCPServerManager.swift, the 52 load-and-decode lines
This is the Swift half of the feature. The full file is 114 lines; what follows is the persistence half, lifted directly from the version landed in commit 9840b05 at 17:58:47 on 2026-04-16. The comment on line 5-6 is the Claude Code interop decision in prose.
Why the schema choice matters
One JSON file, many existing configs flow in
Every MCP server the user already runs for an adjacent tool can point at Fazm. The config file is the aggregator. The Swift side never has to know which tool the user copied from.
MCP configs flow into ~/.fazm/mcp-servers.json, then into the Swift runtime
What 23 minutes of work actually bought
Five things a Mac AI agent can do today that it could not do yesterday
Paste a Claude Code config, it just works
Identical schema means zero translation. The user's existing ~/.config/claude-code/mcp-servers.json content can be pasted into ~/.fazm/mcp-servers.json and every server mounts.
Per-server enable/disable
The enabled field is a simple boolean, toggled via MCPServerManager.toggleServer(named:). No reinstall to silence a noisy tool.
Env vars per server
[String: String] env dictionary gets passed to each child process. Secret tokens stay in the JSON file on disk, never in the app bundle.
Atomic saves, diff-friendly JSON
write(to:options:.atomic) + sortedKeys + prettyPrinted means the file is git-trackable. Users can version their config like dotfiles.
Searchable settings entry
Commit d97845e added an MCP Servers entry to the settings sidebar search, so Cmd+F from anywhere in Settings finds it.
No reinstall, no app update
Adding a new server is editing a JSON file and hitting restart chat. The feature is config-driven, not plugin-driven.
Before 2026-04-16 17:56 vs after 2026-04-16 18:20
The same Fazm app, 24 hours apart
Click the tab to flip states
The Fazm chat agent had a hardcoded tool surface. Adding a new MCP server meant editing Swift, rebuilding the app, re-signing, and re-notarizing. Power users kept forks. Non-technical users could not extend the agent at all.
- No user-facing MCP config
- Every new tool meant a full app build
- Claude Code users had to re-enter every server
- Schema was Fazm-specific, not interop-friendly
The MCP ecosystem, in one row
Open-source MCP servers that work in ~/.fazm/mcp-servers.json on day one
The point of matching Claude Code's schema is that this list is not a list Fazm had to build. It is a list that already existed.
None of these are Fazm-specific. They are MCP community servers. The 12 commits on 2026-04-16 are what let a Fazm user run any of them without touching Swift.
“from the first commit (2152e6a, 17:56:47) to the last (0536a6e, 18:20:13) in the 12-commit MCP chain on 2026-04-16”
/Users/matthewdi/fazm, git log --since=2026-04-16 --until=2026-04-18
Verify every claim on this page yourself
Three commands, three checks, all three pass today
If any of those three outputs change, this page is wrong and should be updated. The whole point of a 24-hour window page is that the claims are narrow enough to be falsifiable.
Try it in the actual app, not just the repo
Download Fazm, drop your existing Claude Code mcpServers block into ~/.fazm/mcp-servers.json, and the Mac agent inherits every tool you already configured. No developer account, no build step, no screenshots.
Download Fazm free →Frequently asked questions
What open source AI project is this page actually about?
Fazm, the MIT-licensed macOS AI agent at github.com/mediar-ai/fazm. The 24-hour window covered here is the evening of 2026-04-16 through 2026-04-17, during which the project landed 12 sequential commits, every single one in service of the same feature: user-configurable MCP (Model Context Protocol) servers, wired through a JSON file at ~/.fazm/mcp-servers.json. The first commit in the chain is 2152e6a (Add support for custom MCP servers via ~/.fazm/mcp-servers.json) and the last is 0536a6e (Remove unused lastTextContentBlockIndex tracking). Every other commit hash, message, and timestamp on this page came from git log --since="2026-04-16" --until="2026-04-18" in /Users/matthewdi/fazm.
Why pick one project instead of listing all the open-source AI releases of the day?
Because the listing pages already exist and do not help a reader decide anything. GitHub Trending, Product Hunt, and the llm-stats daily ledger each show 30 to 80 projects ranked by star velocity, with one-sentence descriptions. The thing that is missing from every single one of them is depth: what a day of shipping inside a real open-source AI project looks like. This page trades breadth for resolution. One project, one day, one feature, every commit explained.
What is ~/.fazm/mcp-servers.json and why does the format match Claude Code?
It is a JSON file on the user's disk, loaded at app launch by MCPServerManager.swift (/Users/matthewdi/fazm/Desktop/Sources/MCPServerManager.swift, line 1). The comment on line 4 of that file reads: "Format mirrors Claude Code's mcpServers: { \"name\": { \"command\": \"...\", \"args\": [...], \"env\": {...}, \"enabled\": true } }". Matching Claude Code's schema is a deliberate choice: a user who already runs an MCP server for Claude Code (a filesystem server, a Postgres server, a Slack server) can paste the same configuration block into Fazm and it works. No conversion, no adapter, no new config language. This is the interop decision the 12 commits are built around.
Can you list the 12 commits with their exact times?
Yes, straight from git log, all Pacific time on 2026-04-16: 17:56:47 2152e6a Add support for custom MCP servers via ~/.fazm/mcp-servers.json; 17:58:30 8cb97bd Add MCP Servers section to advanced settings; 17:58:47 9840b05 Add MCPServerManager to manage MCP server configurations; 17:59:22 401d79b Add Hashable conformance to MCPServerConfig; 17:59:34 eb797da Move MCP server state properties to top of SettingsContentView; 17:59:57 6ca2185 Add MCPServerEditSheet view for MCP server configuration; 18:00:45 8acaa07 Remove settingId parameter from MCP server settings card; 18:00:55 d97845e Add MCP Servers search item to settings sidebar; 18:01:07 5dfbb25 Fix homeDir reference to homedir() for user MCP config path; 18:03:18 3066157 Update MCPServerEditSheet frame to use fixed height of 500; 18:19:12 9d7d36a Fix mid-word splits by removing text boundary on block index change; 18:20:13 0536a6e Remove unused lastTextContentBlockIndex tracking. First to last is 23 minutes 26 seconds of pure feature work, plus two streaming-cleanup fixes at the tail.
What does MCPServerManager.swift actually do?
It is a 114-line ObservableObject (final class) that owns the list of MCP server configurations and persists them to disk. It loads from ~/.fazm/mcp-servers.json at init, decodes the JSON into a [String: RawServerConfig] dictionary, then maps each entry to an MCPServerConfig struct with fields name, command, args, env, enabled. Save is atomic (write(to: configURL, options: .atomic)) and uses sortedKeys + prettyPrinted so the on-disk file stays diff-friendly. The manager exposes addServer, removeServer, updateServer, toggleServer. Nothing in that file touches an LLM, an AX API, or a network socket; it is pure configuration state. The integration surface is the servers array, which the chat runtime reads to decide which tools to mount.
Where does this feature plug into the actual AI agent runtime?
The MCPServerManager sits between two other pieces. Upstream, the SettingsSidebar and the new MCPServerEditSheet.swift let the user add and toggle servers in the UI (commits 8cb97bd, 6ca2185, d97845e). Downstream, the chat runtime reads the enabled servers at session start and launches each command with its args and env, then speaks MCP (Model Context Protocol) to the resulting child process. From the model's point of view, every MCP server the user has enabled shows up as a set of callable tools with the native accessibility-API-style tool surface Fazm uses for desktop control. No screenshots, no vision tokens, just structured tool calls.
How do I verify any of this without installing Fazm?
Clone the repo (github.com/mediar-ai/fazm), then run three commands. One: git log --since="2026-04-16" --until="2026-04-18" --pretty=format:"%h %ad %s" --date=iso prints the 12 commits above. Two: cat Desktop/Sources/MCPServerManager.swift prints the 114 lines described in the previous answer. Three: grep -n mcpServers Desktop/Sources/MCPServerManager.swift shows line 4, where the Claude Code schema match is declared in a comment. If any of those three checks fail, the commit has been rebased or renamed, and this page is wrong. As of publication (2026-04-17), all three pass verbatim.
Why does the MCPServerEditSheet have a fixed height of 500 points?
Commit 3066157 on 2026-04-16 at 18:03:18 renamed an earlier dynamic-height attempt into a fixed 500-point frame. The reason is visible in the sheet itself: it is a form with up to four text-and-array fields (name, command, args, env), and without a fixed height the sheet resized every time the user tabbed between fields, which shifted the Save button up and down mid-edit. 500 is tall enough to show all four fields with a 16-row env table without scrolling. This is the kind of tiny, physical UI decision that never shows up in a GitHub Trending blurb but is most of what shipping software actually is.
Is this a marketing page or a real engineering log?
Both, but the engineering-log half is non-negotiable. Every commit SHA on this page is git-verifiable. Every file path resolves. Every line-of-code count was counted. Every timestamp comes from the committer date, not a made-up date stamp. If a claim on this page cannot be verified by running a command in the Fazm repo, it should not be on the page. The marketing half is the framing: why a consumer-friendly Mac AI agent having user-configurable MCP servers is a better story than a generic open-source roundup. The engineering half is the proof that the framing matches the code.
What should I do with this if I am researching open-source AI tools?
Two things. First, treat Fazm as a data point about what open-source AI feature work looks like in practice in April 2026: short, focused, feature-per-day commit chains, interop with adjacent ecosystems (Claude Code's schema), and a real native UI on top of a file-based config. Second, if you already run MCP servers for Claude Code, Cursor, or Continue, you can point Fazm at the same list: copy your ~/.config/claude-code/mcp-servers.json (or equivalent) into ~/.fazm/mcp-servers.json and open the app. Every tool you already have now runs inside a Mac agent that drives real apps through accessibility APIs, not a browser-only or screenshot-only surface.
How does this differ from listing pages like GitHub Trending or Product Hunt for the same day?
Listing pages optimize for coverage. This page optimizes for verifiability. A Trending page on 2026-04-17 might include Fazm as one row among 25 rows, with a star count and a one-line description. This page spends its entire word budget on a single day of that same project. You cannot find anywhere else on the web a list of these specific 12 commits in order, with the exact feature they add, with the exact JSON path they wire up, with the exact Claude Code schema they mirror. That is the thing the page is for.
Is Fazm actually open source, and under what license?
Yes. The README at /Users/matthewdi/fazm/README.md line 50 reads: "## License" followed by "MIT". The full source of the Swift/SwiftUI desktop app is in Desktop/Sources, the ACP bridge is in acp-bridge/, and the AutofillCLI and AutofillExtractor helpers are also in acp-bridge/. The repo structure block in the README (line 30 onwards) names all three: Desktop/ Swift app, acp-bridge/ TypeScript bridge for Claude integration, dmg-assets/ installer resources. The builds and signed DMGs shipped via Codemagic are the same code.
One more open source AI project for the past-day list
Fazm is MIT, accessibility-API-native, and ships user-facing features on a shorter cycle than most developer frameworks. The 2026-04-16 MCP chain is one day of that cycle. The repo has the rest.
Download Fazm free
Comments
Public and anonymous. No signup.
Loading…