z Zeron / Research
13 September 2026
ENGINEERING & PRODUCT REVIEW / 001

Zeron × Lody.

The same foundation.
Two different ideas of an agent workspace.

A candid look at where we lead, where they lead, and what we should learn from the team behind Loro.

Source-backed analysis8 sectionsCommit-pinned evidence
ZERON / MAIN30a9a953LODY / MAIN4a813a78
READING GUIDEVerdict → comparison → evidence
01 / THE VERDICT

Our advantage is control. Theirs is coordination.

Zeron is better positioned as a native controller for your own machines. Lody is further along as a workspace where people and agents coordinate work. The common CRDT foundation does not erase that product difference.

Where we have the edge

Assessment

More of the complete system is inspectable in one repository: Rust engine, native desktop, Swift iOS client and Cloudflare sync backend. Our queue has explicit cross-device editing and recovery rules, and Appshots collect context from other desktop applications.

Where they have the edge

Assessment

A substantially richer automation surface: scriptable sessions, durable multi-session operations, reusable agent roles, review/merge state machines and element-level browser feedback. Hosted Lody also documents real team sharing and more client surfaces.

Correct the easy comparison. Lody’s open-source desktop is also account-free and local-only. “We are local-first; they are cloud-only” is false. The sharper distinction is that their public local build disables cloud capabilities, while our repository includes the implementation of optional multi-device sync. Local platform ↗Capability boundary ↗Sync backend ↗
02 / AT A GLANCE

Different strengths, side by side.

Read this as a fit comparison. A native architecture is a design advantage for our target experience, not proof of lower CPU, memory or latency.

Capability comparison — scope and tradeoffs, not a numerical score
DimensionAdvantageZeronLody
Account-free local workBothLocal profile; sync selected on restart.Local desktop/CLI composition with cloud ports disabled.
Inspectable system scopeZeronDesktop, engine, iOS and edge source.Public CLI/desktop; hosted backend and web/mobile sources excluded.
Native execution & UIZeron fitRust/GPUI desktop; Swift iOS; headed or headless engine.Electron/React with Node CLI; shared component architecture.
Queue & recoveryZeron strengthMovable queue, protected edits, restart pause, durable publication outbox.Also has durable operations and local SQLite; no reliability winner established.
Session automationLodyInternal typed RPC; narrow user CLI.Session/project/machine CLI and durable batch orchestration.
Reusable roles & MCP catalogLodyHarness/model/account controls.Workspace Flock rows for roles and MCP configuration.
Review workflowLodyDiffs, source control and local comments.Review rounds, CI/head checks and explicit merge policy.
Visual feedbackSplitApp-window capture plus optional accessibility text.DOM-targeted preview annotations and anchor resolution.
Team collaborationLody productRegistry isolated per user, even within an organization.Documented team sharing; hosted authorization not audited here.
Browser / Android accessLody productNative desktop and iOS source; no equivalent app found.Web and Android documented; implementation outside public repo.
CRDT correctness / speedUnprovenCustom Rust + opaque relay approach.Loro Repo + Flock + Streams + Mirror approach.

Evidence and qualifications for each row follow below. “Product” means first-party documentation rather than a verified hosted implementation.

03 / WHERE ZERON LEADS

Keep the advantages we actually own.

The most defensible advantages are architectural scope and specific user workflows—not the number of supported agents.

01. A more complete inspectable stack

Code-backed

Our tree includes the Cloudflare Worker and room implementation, the Rust engine and the iOS client. Lody explicitly excludes hosted backends and web/mobile app sources. This gives us a stronger starting point for independent inspection and deployment work. It does not mean Zeron already offers a supported, turnkey self-hosting contract; our architecture explicitly defers that promise.

02. Native architecture aligned with a personal controller

Design advantage

The same Rust engine supports a desktop viewport and headless service. The transcript watch protocol carries changed entries and text appends, avoiding retransmission of the entire history on every streaming commit. This is a concrete efficiency mechanism. Lody’s Electron/React architecture favors UI reuse across surfaces; it also has subscription isolation and bounded prefetch. We cannot infer a performance win from the implementation language.

03. A carefully specified cross-device message queue

Code-backed

Queue rows retain identity through Loro moves. The host serializes delivery and protected editing; edit leases carry generations, stale edits require review, attachment messages wait for compatible turns, and recovered queues start paused. These are valuable details when a phone and desktop control the same running agent. Lody has durable orchestration too; our inspected evidence supports queue depth as a Zeron strength, not a blanket claim that Lody loses queued messages.

04. Context from applications outside the browser

Workflow advantage

Appshots capture another desktop application window, optionally enrich it with accessibility text, and stage it before sending. Lody’s inspected visual tools concentrate on web preview elements. Our advantage is the broader desktop context source. Capture is implemented for macOS and supported Linux paths; Windows capture is absent, and iOS displays received Appshots rather than capturing other apps.

04 / WHERE LODY LEADS

They turn agent sessions into a system of work.

These are the gaps worth taking seriously. Most are product primitives we can add without replacing our engine.

01. A real user-facing automation API

Code-backed

Lody exposes session, project, workspace, machine, agent-config, MCP, export and review commands. Its operation model supports batch session creation and messaging, deadlines, durable-input state, cancellation and parent/child results. Zeron’s CLI primarily manages the daemon, authentication, updates and sync diagnostics. Internal RPC and provider-native subagent display are useful foundations, but they do not give users an equivalent scriptable orchestration product.

02. Reusable roles, rather than repeated setup

Code-backed

Lody represents Agent Roles and MCP servers as workspace Flock rows. Accepted operations capture resolved role configuration so later edits do not silently change an accepted request. This is a stronger reusable-workflow model than repeatedly choosing a harness and model. Private visibility is not a secret-storage guarantee: their own documentation notes that underlying role rows can reach workspace clients.

03. Review is a first-class workflow

Code-backed

Their review planner models review-only versus review-and-merge, round budgets, reviewer availability, human intervention, CI state and the approved commit SHA. The code shows much more workflow depth than our diff/comment surfaces. The practical lesson is to adopt the durable review state machine and exact-commit checks before considering automatic merges. Hosted GitHub integration remains a separate capability; source presence does not prove every mode works in the public local build.

04. More precise feedback for web UI work

Code + scoped absence

Lody’s preview feedback carries element targets, selectors/XPath, viewport geometry and anchor re-resolution, with dedicated annotation composer and overlay components. Zeron has project discovery, a browser and remote preview transport, but I found no corresponding DOM-anchored annotation workflow in the inspected browser/preview code. Appshots and DOM annotations solve complementary problems; keep the former and borrow the latter.

05. Team sharing and broader access surfaces

Documented product

Hosted Lody documents shared machines, projects and conversations, plus web, iOS and Android access. Our registry route creates a per-user room, so an organization is not automatically a shared team workspace. The team-product advantage is clear in intent and public client contracts, but the hosted access-control implementation and mobile quality cannot be verified from this repository. Zeron’s iOS implementation is inspectable; that is a different advantage from platform breadth.

05 / THE LORO QUESTION

Same foundation. Different maintenance bets.

Being close to Loro’s authors is relevant expertise. It is not evidence that every application-level delivery, storage or permission invariant is automatically correct.

Loro names Zixuan Chen and Leon Zhao as its creators. The reviewed Lody commit is authored by Zixuan Chen, supporting the creator overlap behind your observation. The consequential technical difference is how much of the surrounding stack each application adopts. Loro authors ↗Reviewed Lody commit ↗

ZERON

Own the narrow path

GPUI / Swift viewport
↕ typed RPC / native sync
Rust engine · Loro documents · SQLite
↕ custom row protocol
Cloudflare rooms · opaque log + checkpoints
LODY

Compose the Loro stack

React / Electron · Mirror readers
↕ local data plane
Node CLI · Loro Repo · Flock · SQLite
↕ optional Streams bridge
Hosted sync · backend outside public tree

Simplified state paths, not complete network topology. Zeron’s preview transport and Lody’s RPC/control paths have additional mechanisms.

Our approach: small relay, more responsibility in clients

Code-backed

Session text uses LoroText appends. The current ChatRoom stores opaque updates and host-built checkpoints without materializing Loro in the Durable Object. That removes a class of server-side CRDT import/export work. The price is ownership of framing, cursor recovery, checkpoint coverage, deduplication and cross-language compatibility. A transport that does not parse Loro bytes is also not, by itself, end-to-end encryption.

Their approach: more reusable upstream infrastructure

Code-backed

Lody uses Loro Repo with a SQLite store, Flock for keyed catalogs, Streams for remote transport and Mirror for projection. Its local/cloud planes are separated, reconnect sends version-vector deltas, and large local doc updates are chunked. This is a stronger reuse strategy than hand-owning every layer. It still carries adapters, a loro-repo patch, cursor URL aliases and lifecycle fixes; “uses the official stack” does not mean zero integration burden.

The latest pull fixes a real gap in our publication lifecycle

Code-backed

Zeron now journals local updates in a SQLite outbox before network admission, replays stable batch IDs across client recreation, and retains rejected batches until checkpoint coverage succeeds. Regression tests cover eviction, disconnected cleanup and failed-checkpoint retry. This is meaningful recovery engineering, but it also shows why CRDT convergence is insufficient: replicas cannot merge operations that never arrive. These tests were inspected, not rerun for this report; no head-to-head reliability claim follows.

A deliberate tradeoff: thin synced tool history

Explicit tradeoff

Our main event-fold path still parks tool-output sidecar uploads and keeps summaries in the document, with fuller outputs in the host journal. Small replicated documents help constrained links, but remote users cannot assume the synced transcript contains all tool evidence. Other upload call sites exist, so this finding concerns the ordinary event-fold path specifically. Lody’s public code supports richer history/review structures, but this review did not establish identical output retention across every provider.

Recommendation: Keep Loro and keep the current relay for now. Evaluate upstream components against one bounded workload before migrating anything. We should borrow proven abstractions and regression scenarios, not undertake a wholesale sync rewrite because the competitor’s founders wrote the library.
06 / WHAT TO DO NEXT

Borrow the workflow. Preserve the engine.

Proposed order, not delivery estimates. Reliability evidence and a scriptable session API should come before a platform rewrite.

P0

Measure recovery under failure

Run the same offline-send, lost-ACK, host-kill, checkpoint-rejection and two-viewer workloads on pinned builds. Check exact transcript equality, duplicate execution and recovery time. Extend our existing publication fixtures rather than inventing a new sync architecture.

P1

Expose sessions through the CLI

Add session list/create/send/history/status/cancel with structured JSON output, reusing typed engine RPC. Include target-device selection and stable request IDs. This unlocks scripts and external agents before we build a large orchestration UI.

P1

Add reusable agent roles

Start with named, inspectable presets for agent, model, permissions and instructions. Snapshot the resolved preset when a request is accepted. Keep credentials out of synchronized role data.

P1

Make web feedback actionable

Add DOM selection and annotation context to the existing browser/preview surface. Preserve Appshots for non-browser applications. Success means an agent gets the exact element and viewport plus the user’s comment.

P2

Build a review loop users can inspect

Start with review-only child sessions, durable findings and a verdict tied to a commit SHA. Add CI and merge actions only when their authorization and recovery behavior are explicit.

Decision

Choose whether teams are the target

If yes, design server-enforced membership, sharing and revocation before widening the registry. If no, invest in the fastest dependable personal multi-device workflow. Lody’s broader surface is not automatically our roadmap.

07 / CONFIDENCE & METHOD

What this report can—and cannot—establish.

Static source comparison at two exact commits, supplemented by first-party product documentation. Findings distinguish implementation, documented behavior and assessment.

Reviewed: local profiles, CLI surfaces, queue/command ownership, transcript projection, sync persistence and recovery, platform gates, roles, orchestration, review policy, visual feedback and selected regression tests.

Not performed: full application builds, native runtime comparisons, provider adapter submodule audits, authenticated hosted Lody testing or a security audit. Lody’s public sources omit hosted backend and mobile/web app implementations. Existing test reports are not new test results.

No unsupported winners: no claim of lower latency, lower RAM, lower cost, stronger end-to-end encryption or generally superior reliability. Both projects have rendering and persistence optimizations; benchmark them on the same hardware and workloads.

Stale-document checks: our architecture still contains old exclusions for mobile and token usage, while current code includes iOS and context occupancy. The chat2 design document still says “planned,” while ChatRoom is implemented. Current source takes precedence. Current context meter ↗Native iOS sync ↗

Scope of absence: “not found” means no equivalent in the inspected public/current source. It does not rule out private implementations, unreleased work or provider features. Competitor source was read without modification.

08 / EVIDENCE INDEX

Follow the code.

Code links point to the exact reviewed revisions. Product documentation is live and may change after this report.

ZeronProfile isolationcrates/engine/src/profile.rsZeronQueue contractdocs/reference/message-queue.mdZeronAppshotsdocs/appshots.mdLodyCLI commandsapps/cli/src/index.tsLodyOperation modelpackages/shared/src/session-orchestration.tsLodyReview policyapps/cli/src/lib/review-automation/review-automation-plan.tsLodyLocal platformpackages/platform/src/local.tsLodyCapability boundarypackages/platform/src/capabilities.tsZeronSync backendedge/src/index.tsZeronChat relayedge/src/chat-room.tsZeroniOS sourceapps/ios/README.mdLodyPublic-source boundaryAGENTS.mdZeronSelf-hosting limitationARCHITECTURE.mdZeronHeaded/headless entryapps/zeron/src/main.rsZeronIncremental transcriptcrates/doc/src/transcript_delta.rsLodyLody rendering constraints.agents/docs/sessions-render-cost.mdZeronQueue implementationcrates/doc/src/queue.rsZeronBehavioral regression suitecrates/engine/tests/message_queue.rsZeronmacOS capturecrates/ui/src/appshots/macos.rsZeronLinux capturecrates/ui/src/appshots/linux/mod.rsLodyLody annotation modelpackages/shared/src/visual-annotation-types.tsLodyCoordinatorapps/cli/src/orchestration/operation-coordinator.tsZeronOur command enumapps/zeron/src/main.rsLodyRoles and MCP rowspackages/shared/src/workspace-flock.tsLodyDurability and privacy.agents/docs/workspace-catalog-durability.mdLodyReview convergenceapps/cli/src/lib/review-automation/review-automation-submit.tsZeronOur changes surfacecrates/ui/src/changes.rsZeronOur comment UIcrates/ui/src/comment_ui.rsLodyAnnotation composerpackages/components/src/components/preview/visual-annotation-draft-composer.tsxZeronOur preview implementationdocs/preview-networking.mdPrimary documentationTeam documentationhttps://lody.ai/docs/team/Primary documentationClient surfaceshttps://lody.ai/docs/quickstart/ZeronPrivate registry routingedge/src/index.tsPrimary documentationLoro authorshttps://www.loro.dev/aboutZeronLoroText schemacrates/doc/src/schema.rsZeronClient sync implementationcrates/sync/src/chat_client.rsLodyLoro dependenciespnpm-workspace.yamlLodySQLite and cursor aliasesapps/cli/src/lib/loro/sqlite-repo-store.tsLodyLocal transportpackages/shared/src/local-loro-transport.tsLodyRepo patchpatches/loro-repo.patchZeronDurable outboxcrates/sync/src/store.rsZeronPublication regressionscrates/engine/tests/session_publication.rsZeronIncident and fixdocs/session-publication.mdZeronParked sidecar pathcrates/engine/src/sessions.rsLodyHistory write boundarypackages/shared/src/session-mirror.tsZeronCurrent context meterdocs/context-usage.mdZeronNative iOS syncapps/ios/Zeron/Sync/ChatRoomClient.swift