← All posts

An office in the mesh — and a handshake with Nextcloud

The biggest building week in a while, and it produced two things I've wanted for a long time: MeshHold grew a real office — documents, spreadsheets and text, editable in the browser and collaborative over the mesh — and it learned to federate with Nextcloud and ownCloud.

A document and a spreadsheet edited together in the browser, backed by the mesh

This was the biggest building week in a while, and it produced two things I've wanted for a long time: MeshHold grew a real office, and it learned to talk to the rest of the self-hosted world.

An office, in the mesh

You can now open a document, a spreadsheet, or a text file straight in MeshHold and edit it in the browser — without downloading it first.

The word processor is real ODF, not a toy: headings and lists, tables, footnotes, a table of contents, pictures that sit where the document put them, hyperlinks, page setup, and pagination that behaves — no line stranded alone at the top of a page, no footnote drifting away from its marker. It reads comments and tracked-change suggestions, and lets you make them and accept or reject them. The spreadsheet has formulas that actually recalculate, an evaluator that does lookups, text and dates, plus charts, conditional formatting, data validation, sort and filter, and a find-and-replace that knows what it must not touch. And the plain-text editor is byte-exact — it respects your file's encoding and line endings and won't quietly "fix" them — with syntax colour for the types we already claimed to open.

All three sit in one shell now, sharing a File tab and a ribbon, so it feels like one program rather than three. And a save doesn't ship the whole file back — it names what changed, which matters a great deal when the file lives on the mesh.

The unglamorous secret behind all of it: LibreOffice is the oracle. Every feature is checked against what LibreOffice actually does with the same file, so a document you edit here still opens correctly everywhere else. It turns out "invents nothing" is a surprisingly large amount of work.

Two people, one document

Because these are mesh files, editing them is collaborative for free. A document relay pushes your edit to every other node that has the file open the moment you type it; a small presence indicator shows who else is in there; and when two people change the same thing, the conflict resolves by merging the underlying CRDT rather than picking a winner and throwing the other's work away. A save no longer ends the session everyone's sharing, either — that was a rough edge, and it's gone.

One more, because the pieces were all there: you can point an AI agent at a document — or just a selection — and ask it a question about what you're looking at.

Federating with the rest of the world

The other big one: MeshHold now speaks Open Cloud Mesh, the protocol Nextcloud and ownCloud use to share folders between servers. You can invite a partner running one of those, offer them a folder, and accept what they offer you — with a real Nextcloud on the other end, write-back and all, gated by a per-vault access list you control. A private mesh is a fine thing, but it shouldn't be an island; now it isn't.

And the usual tail

The public share page got a proper rebuild around last week's links — a real file viewer, a "download all," resumable transfers, and a gateway that can serve a shared link holding no vault key with nobody's node even awake. Underneath, "lazy hydration" lets a node list and offer a file it hasn't fetched yet, pulling the bytes only when someone actually asks for them.

It's a lot of new surface to add this close to a first release — brave or foolish, we'll find out — but editing your own documents is table stakes for a private cloud, so it belongs in 0.8. The next stretch is making sure all of it holds.


Since last week

  • An office suite in the browser: an ODF word processor (headings, lists, tables, footnotes, a table of contents, pictures, hyperlinks, page setup, real pagination, comments and tracked-change suggestions), a spreadsheet (recalculating formulas, an evaluator with lookups / text / dates, charts, conditional formatting, data validation, sort / filter, find-and-replace), and a byte-exact plain-text editor (encodings, line endings, syntax colour) — all in one shared shell
  • Edit without downloading: open and edit a document, sheet or text file in place; a save names what changed instead of shipping the whole file back
  • Real-time collaboration: a document relay delivers edits to other open nodes instantly, presence shows who else is in the file, and conflicts resolve by merging the CRDT rather than picking a winner; a save no longer ends the shared session
  • Ask an agent about a document: open an agent session scoped to a single document (or a selection) and question it
  • OCM federation: MeshHold speaks Open Cloud Mesh — invite a partner, offer a folder, and accept shares from a real Nextcloud or ownCloud, write-back included, gated by a per-vault access list
  • Fidelity discipline: LibreOffice is the acceptance oracle for the ODF work, so documents round-trip cleanly to the rest of the world
  • Share page + lazy hydration: a rebuilt public viewer with "download all" and resumable transfers, served by a gateway that needs no vault key and nobody awake; nodes can list and offer files they haven't fetched yet, hydrating on demand
  • Protocol versioning: a protocol ID now is its version, and a peer that doesn't speak one can say so instead of going silent