A · Home / Dashboard
editorzero
NA
ORIGIN · acme-internal.editorzero.host

Start from zero.

Your self-hosted knowledge field. Humans and agents co-author here as peers — every edit attributed, every mutation in the audit log.

NODE  0,0
UPTIME  142d 06h
DOCS  1,284
AGENTS  07 active
Documents
1,284
▲ 38 this week
Live sessions
12open
3 docs co-edited now
Agent edits / 24h
412
◇ 84 suggestions pending
Audit events
96k
100% reconstructable

Recently touched

SORT · updated_at ▾
RFC
Realtime sync protocol — v3 RFC
engineering / protocols · edited 4m ago
NA
JC
LIVE
DOC
Onboarding playbook 2026
people / handbook · edited 22m ago by ◇ scribe
MO
DRAFT
API
Capability registry — reference
platform / api · edited 1h ago
NA
PUBLISHED
SEC
Threat model — tenant isolation
security / reviews · edited 3h ago
JC
REVIEW

Spaces

05 TOTAL
E Engineering428 docs
62% human38% agent
P Platform311 docs
48% human52% agent
S Security96 docs
81% human19% agent
D Design204 docs
70% human30% agent
B · Space / Documents
engineering / protocols / sync

Sync

CRDT replication, presence, and offline reconciliation. Co-maintained by the platform guild and ◇ docwright.

All · 12 Edited by human Edited by agent Live now · 2 Published VIEW · table
DocumentStatusLast editorUpdatedRev
RFC
Realtime sync protocol — v3
/protocols/sync/realtime-v3
live · 3
NA
nomi.ali
4m ago r.482
Conflict resolution model
/protocols/sync/conflicts
draft
docwright
18m ago r.119
DOC
Presence + awareness channel
/protocols/sync/presence
published
JC
j.chen
2h ago r.301
DOC
Offline reconciliation strategy
/protocols/sync/offline
live · 1
scribe
just now r.064
SPEC
Yjs update encoding notes
/protocols/sync/yjs-encoding
draft
MO
m.osei
1d ago r.207
DOC
Snapshot + checkpoint cadence
/protocols/sync/snapshots
published
docwright
2d ago r.155
C · Document · Reading
engineering / protocols published REV r.482

Realtime sync protocol — v3

How editorzero converges concurrent edits from humans and agents into a single causal history — without a central lock, and with every keystroke attributable in the audit log.

Every document in editorzero is a conflict-free replicated data type (CRDT). Replicas hold their own copy of the doc and exchange compact update messages; the merge function is commutative, so the order of arrival never changes the result. Two editors — a person in the browser and an agent on the API — can both write into the same paragraph and converge to the same bytes.

01The causal model

Each update carries a logical clock. We never overwrite; we accumulate. A delete is itself an operation, tombstoned rather than erased, so that a replica which was offline can still reconcile cleanly when it returns to the field.

◇ Agent annotation · docwright

Verified against the durability property test: snapshot + replayed updates reproduce the live Y.Doc byte-for-byte. This claim is safe to publish.

02Presence & attribution

Awareness state rides a side channel — cursors, selections, and the principal behind each one. Humans render in cyan, agents in violet, everywhere in the product. Attribution is not cosmetic: it maps to a row in the audit log.

  • Human principals — session-scoped, MFA-gated, cursor labelled by handle.
  • Agent principals — token-scoped, rate-limited, revocable, every mutation signed with the agent's identity.
  • Suggestions — agents may propose tracked changes that a human accepts or rejects before they land.

03The wire format

Updates are length-prefixed binary frames. The reference encoder is small enough to read in one sitting:

// encode a single update frame
export function encodeFrame(u: Update): Uint8Array {
  const body = Y.encodeStateAsUpdate(u.doc)
  return frame("sync/v3", u.clock, body)
}

That is the entire contract a new surface needs to speak. The CLI, the MCP server, and the web client all encode the same frame — parity is a property test, not a promise.

D · Document · Editor — live co-edit
◇ docwright · co-editing
/protocols/sync/conflicts ◇ draft r.119 2 EDITING

When two replicas edit the same block, the merge is deterministic: operations are ordered by their logical clock, ties broken by replica id.

Tombstones over deletion

A delete never removes a character from history. Instead we mark it as a tombstone, so an offline replica can still reconcile its own edits against ours when it reconnects to the field.

Tracked suggestion · docwright just now · awaiting review by nomi.ali
Garbage collection compacts tombstones only after all replicas every known replica has acknowledged the snapshot sequence, which guarantees no live edit can reference a reaped operation.
✓ Accept ✕ Reject ↳ Reply diff · +14 −2 chars

Type / for blocks, or @docwright to ask the agent…

Blocks
H1 Heading 1 #
Text
<> Code block ```
Callout
AI
Ask docwright to draft…
Rewrite selection
E · Admin · Members

Members & agents

acme-internal.editorzero.host · 41 humans · 7 agents · self-hosted
All · 48 Humans · 41 ◇ Agents · 7 Pending · 3
PrincipalRoleTeamsRate / statusLast active
NA
Nomi Ali
nomi.ali@acme.dev
owner Platform · Eng session active now
docwright agent
agent · tok_4f…a91 · suggest+write
agent Eng · Platform 240 req/min · 84 pending 12s ago
JC
June Chen
j.chen@acme.dev
editor Security session active 6m ago
scribe agent
agent · tok_9b…c20 · suggest-only
agent People 60 req/min · idle 2m ago
MO
Mara Osei
m.osei@acme.dev
editor Engineering offline 1d ago
RV
Rafa Vidal
r.vidal@acme.dev · invite sent
pending awaiting accept