Our last update followed continuity across the desktop, agent branches, mirrors, and ForkMesh World. This round goes one level deeper: give long-running work a narrower boundary, make public mirrors cheaper to keep ready, and expose enough state that recovery is a normal path rather than a mystery.
Public mirrors shed a resident desktop
The new forkmesh-mirror-node service moves headless mirror supervision into a small Go daemon. It owns synchronization, catalog publication, signed health helpers, gateway configuration, and gateway and tunnel restarts. Its operator API binds to loopback and separates “the event loop is alive” from “the gateway is running and a recent sync succeeded,” so automation can distinguish health from readiness without exposing credentials.
Collaboration intake is now demand-driven. The daemon watches a content-free pending counter and starts the Qt materialization bridge only when an issue, pull request, or discussion is waiting; after the queue drains, that companion exits. A public mirror can therefore remain clone-ready without paying the idle memory cost of a resident desktop process.
This work is released, not just merged. Version 0.7.14 introduced the service, 0.7.15 corrected its telemetry, and 0.7.16 made synchronization monotonic across round-robin peers. If the selected peer is briefly behind, a mirror keeps its newer local head instead of rewinding. Routing eligibility now follows current health evidence rather than a privileged Mirror2 endpoint, and the Go service renews signed endpoint leases itself.
Coding agents get a harder optional boundary
On Linux, ForkMesh can now leave the native desktop on the host while running configured coding agents and their subprocesses in a Lima QEMU/KVM guest. The guest receives one recorded launch directory at the same writable path, plus the linked-worktree metadata and temporary worktree root needed for agent branches. The host home directory, desktop sockets, SSH agent, and unrelated environment variables are not shared.
This is an opt-in mode with explicit limits, not a default sandbox claim. It requires Lima 2.0 or newer, QEMU, and read/write access to /dev/kvm; there is no software-emulation fallback. ForkMesh refuses a home-directory-wide workspace, rejects repositories outside the recorded boundary while the mode is active, and requires a relaunch when that boundary changes.
Session handling around that boundary is steadier too. Detached Codex sessions can be recovered, a run waits for its subprocesses before reporting Done, and a completed session offers a clear Continue action. Agent lists identify the selected account, expose bounded usage charts and refresh controls, and allow account edits without turning the session list into a settings page.
The desktop becomes a better witness
Diffs now describe the work an agent actually owns. Task-linked sessions scope their change view to task-owned files, while the shared renderer shows complete large diffs instead of silently truncating the evidence. Git operations continue moving off the interface thread, pull-request metadata no longer launches a process storm, and a stale HEAD.lock left by an interrupted operation can be recovered before merge.
Operational feedback has become more direct. A zoomable activity timeline groups log volume by category, the footer can expand into a live debug surface, and failed-action alerts open the relevant output. Background tasks stay visible while they run; restarts show a progress ring and caution border; stopped actions no longer produce false alarms. These are small controls, but together they make “busy,” “stopped,” and “failed” meaningfully different states.
The World opens up without getting heavier
The previous build used enclosure geometry to make districts legible and bound rendering work. This pass replaces several of those covers with distance-based level of detail, opening sightlines around the repository and member areas while reducing scene work farther from the visitor. Grass, textured ground, node-yard objects, and aquarium reef geometry are simpler; avatars remain full-detail, because people are the part worth keeping recognizable.
Movement starts faster and ramps more naturally, and an optional performance pill can show live scene cost while the World is being tuned. The result is not a new destination so much as a more open route through the places already there.
Mobile Git has an engine, not a green light
A substantial pure-Dart Git package has landed under the Flutter app. It includes owned implementations for object and ref storage, index v2, pack reading and writing, protocol framing, smart-HTTP building blocks, quarantine, cancellation, path confinement, and resource limits. Interoperability fixtures exercise repositories in both directions with system Git as a test oracle, without making system Git a runtime dependency.
The repository's own compatibility matrix labels this work implemented, awaiting review. Networked SHA-1 input remains fail-closed without an approved collision detector, Android and iOS execution gates have not passed, and catalog capabilities remain planned or blocked. In other words, this is serious mobile-node groundwork, but it is not yet a production mobile clone, commit, or push feature.
Labels are part of the product
Optional Supporter and Pro memberships have returned to pricing and account settings behind server-side Polar checkout. Signed, idempotent webhooks grant the existing supporting-member role; provider identifiers are encrypted, and plans remain free during launch. The integration still depends on server configuration, so an unconfigured deployment says so rather than pretending checkout is available.
Two other visible branches remain explicitly in progress. A separate /new-home design route has not replaced the main landing page. Cloudflare Workers AI model controls reached the clients, but the implementation record notes that production still lacked the /api/ai/ask route during this window. Neither is being counted here as a shipped default experience.
Get the latest desktop release, read the operating guides, or walk through ForkMesh World.