=SUM(documents, spreadsheets, servers, agents)

Office files are not just documents. Some of them are applications.

SumSheet and SumDoc understand the application inside the file — formulas, Power Query, VBA, workbook events, form controls, embedded objects and external automation — and let people and AI work with it under explicit control. One native DOCX & XLSX engine, everywhere the work happens.

Open it. Understand it. Run it. Modernize it. Preserve it.

Models are replaceable: Claude · OpenAI · DeepSeek · MCP. The application runtime is ours.

Named after the most famous formula on the planet

This is not a screenshot. Edit a cell, ask the agent, undo it.

quarterly-quote.xlsx
D5=SUM(D2:D4)
ABCD
1ItemPriceQtyTotal
2Copy paper
3Toner cartridge
4Staples
5=SUM
B3     D3     D5  
agent · idle  Ask it to raise the toner price by 10% — it will show its plan and wait.
Change any price — the total recalculates.

Supply Agreement No. 14-K

The Supplier shall deliver the goods listed in the specification, and the Buyer shall accept and pay for them within ten business days. This paragraph is editable — click and type.

Select text and apply a style.
30 minTo a working integration — measured
1 engineDesktop · embedded · server · agent
0 cloudLocalhost only · your files stay yours
THE OLD TRADE-OFF

You used to pick one of four.

01

Microsoft Office

Familiar to everyone — but your process stays tied to an installed copy. Microsoft doesn't support unattended server-side automation.

02

A web office

Easy to embed — but part of your corporate automation has to be rewritten in another language.

03

Your own pipeline

A different engine means different document rules — and drift between what a person sees and what the server does.

04

AI on the side

An assistant next to the editor that still has to be taught how to change a file safely.

Now it's one engine.

A person works in the interface. Your system calls the API. An agent issues typed operations. The server runs the same semantics — and the saved file is verified by opening it again.

different interfaces
one document
FOR INTEGRATORS

One binary. One port. Your WebView.

Your host starts a single process and gets a URL with a one-time token. Load it in WKWebView, WebView2 or Android WebView and subscribe to document events. No Office installed, no external cloud — localhost only.

$ sumoffice-surface --port 0 --doc report.docx sumoffice.surface-host-bootstrap.v1 { "url": "http://127.0.0.1:53817/?token=•••" }
readydirtysavederror
self-hosted·white-label surface·themes & locales without touching the engine
FIDELITY

“It opened” is not the same as “it saved.”

The worst thing an Office alternative does: open your file, look fine, and quietly drop what it didn't understand on save. We don't. What the engine doesn't support, it preserves untouched and tells you about. If it can't save without loss, it refuses before changing anything — not after.

Exactly what's supported today is an open list with a last-checked date, generated from the engine's own audits. Can't do it — we say so. Can — we keep it.

REAL FILES

Not lab samples — files from the wild.

We exercise the engine against a corpus of real-world government documents — annual reports, handbooks, toolkits, forms. Here are four of them, verbatim: two light, two heavyweights. The rule that binds them all: what the engine can't draw yet, it preserves byte-for-byte and says so — the file comes back whole.

Promotional brochure template — aerial photo of irrigated fields with colour sidebars and placeholder fields

Rural & Small Systems Workshop — promotional brochure

EPA / USDA template · public domain

A fill-in-the-blanks brochure: full-bleed aerial photography, colour sidebars, highlighted placeholder fields waiting for your workshop's details.

2 pages8 images1.1 MB
Cover of the Dominguez–Escalante NCA Annual Manager's Report 2017 — hikers on a canyon rim

Dominguez–Escalante NCA — Annual Manager's Report, FY 2017

Bureau of Land Management · public domain

The stress test: a 32-page annual report — full-bleed photography, budget and acreage tables, staffing profiles. A file that breaks lesser importers.

Interior page — NCA profile with budget tables Interior page — staffing section with photo
29 pages37 photos16 tables33 MB
Cover of the Canyons of the Ancients Annual Manager's Report 2017 — an ancestral stone tower under the night sky

Canyons of the Ancients NM — Annual Manager's Report, FY 2017

Bureau of Land Management · public domain

The other stress test: 36 pages, 42 photographs, floating figures with captions — the kind of anchored-object layout that quietly falls apart in most converters.

36 pages42 photos15 tables23 MB
ON YOUR PHONE

The same engine, shipped as apps.

SumDoc for documents, SumSheet for spreadsheets — free editors for iOS, Android and macOS. They are also the reference integration you can hold: a system WebView around the same surface, assembled exactly the way the quickstart describes. What your integration would feel like — before you write a line of code.

Live in all three stores: iOS, Android, and now macOS — SumDoc and SumSheet are both on the Mac App Store.

SumDoc on iPhone — a public-domain BLM adoption flyer open by name, photographs and layout intact SumSheet on iPhone — the sample workbook open by name, grid, formula bar and sheet tabs
HOW IT'S BUILT

Rust does the layout. The browser only paints.

The document engine is Rust — ten crates behind SumDoc, twenty-one behind SumSheet. Pagination, print and PDF come out of one scene, and the screen draws that same scene onto a canvas: the browser never lays the text out itself, so a WebView or Chromium update doesn't move a line. SumSheet evaluates formulas in the engine, not in the page. That is why one engine ships unchanged to the desktop, to a browser tab and to a phone.

Compiled for each platform, not wrapped: macOS on Apple silicon, Windows on x64 and ARM64, Linux as deb, rpm and AppImage — on X11 and on Wayland, GNOME included. Every build is on the download page with its checksum.

Startup is measured, not promised. On the live node on 5 September, in a clean browser profile, a two-page brief was on screen in one to three seconds and a 24-page draft with tracked changes in three to four. The desktop editor shows a document about two seconds after launch on a laptop. Open either link and count.

YOUR STORAGE

The file stays where it lives. The editor comes to it.

Both editors speak WOPI — the same protocol your document system already uses to hand files to an editor and take them back. The document never leaves your storage; SumDoc and SumSheet bring editing, calculation and collaboration to it, then write the file back natively.

Locks and versions are part of the contract, not decoration. If someone else changed the file while you were editing, the save is refused with the reason — not silently written over. If the storage says you may only read, you only read.

What we don't claim yet: certification against SharePoint, Nextcloud or ownCloud. The protocol is exercised against our own WOPI host; a full editing cycle against an external storage is on the list, not on the shelf.

CONTROLLED EXECUTION

See the change. Then accept it.

A macro, a query refresh or an agent's plan can rewrite a lot of cells at once. In SumSheet the run produces a preview of the resulting changes first — not a log of every intermediate write — and only what you accept is committed to the open workbook, through the same cell-edit path a person uses. Decline, and it rolls back.

If the workbook changed underneath the run, the commit is refused rather than merged blindly. Structural changes and Save As are outside this transaction and are refused too — we say so instead of pretending every operation is reversible.

This is where VBA and Power Query stop being legacy and become the organisation's own formalised knowledge: the process you already have, run under rules you can see.

WHAT WE DON'T PROMISE

Named limits beat quiet loss.

Not every Excel macro: supported VBA scenarios run natively; COM, external libraries and unsupported statements are refused with a message, not emulated. Legacy .doc opens as text and paragraphs — styles, tables and images from that format are listed as not carried over. Collaboration is proven for text operations and cells; objects and formatting under concurrent edits are still being measured. The capabilities page is generated from the engine's own audits and carries a last-checked date.

AGENTS

The agent works with the application inside your file — not just with cells.

Macros, workbook events, Power Query, external objects, form controls, embedded objects: the engine maps what the file is made of, runs what is safe on a copy, asks you before anything touches the outside, and preserves the rest untouched. Every demo below is live, on a real workbook in a real editor cabin.

It reads your macro. It runs it on a copy. It waits for your Apply.

00 · One workbook · 54 seconds

Three numbers in — fifty cells recalculate. Then the file’s own macro. Then its own event.

A cash-flow model of a small company: a year of bank-fed actuals, a 2027 forecast built from three assumptions, a VBA macro that flags the months where cash runs out, a Worksheet_Change handler and a Power Query over the bank export — all inside one .xlsm. In the film the agent fills the assumptions (the engine previews 54 cells before Apply) and you press Apply — the forecast changes; then a person types 12% and the sheet’s own event writes the scenario line. The full take also runs FlagCashGaps on a copy and applies 26 cells.

Not a mock-up: the file opens in Excel as is, and the cabin below is the one in the recording.

Open the workbook, press ✦ Agent → …or download it, 19 KB, macro, event and query inside →
A 24-second animated introduction — what is inside the file and how a change happens — then real product footage, edited for length, English voice-over. Watch it on YouTube →
Full story, 56 seconds — with the macro on a copy (narrated, captions) → The full chain: assumptions → preview → Apply → the workbook’s macro on a copy → Apply → a typed 12% fires the event. Raw take, no cuts, 3000×2000 →

Three things people do not expect from an agent in a spreadsheet. Each one runs live below, on a real workbook in a real editor cabin, in a few seconds — the answer comes from the engine at the moment you click, not from a recording.

01 · VBA

It reads the macro — and does not run it.

Ask what CloseQuarter does. The agent reads the VBA source out of the workbook, explains it in plain words and names the cells it would touch. The macro never executes.

…or open the workbook and press ✦ Agent →
02 · VBA · before → after

It runs the macro on a copy. You see every cell change.

Then ask it to run. The engine executes the macro on a copy of the workbook, shows every changed cell before and after, checks that no sheets, rows or names moved — and waits for your Apply. Download the .xlsm afterwards and open it in Excel.

…or download the workbook, 8 KB, macro inside →

Not lab samples. Three real workbooks from the wild — a World Bank forecast table and two open-source VBA libraries — opened in a live cabin. The agent tells you what it can run here, what it only reads, and what it preserves untouched. We do not restyle these three: unlike our own sample workbooks, they are shown exactly as their authors published them — that is the point of having them here.

04 · World Bank · real data

Global Economic Prospects, June 2026 — the statistical appendix.

169 rows of real GDP growth by economy, 2023–2027f, straight from the World Bank release. Ask which economies slow down next year: the agent reads the cells and cites them, so every number can be checked against the sheet.

…or open the workbook and press ✦ Agent → Source: World Bank, Global Economic Prospects, June 2026 (worldbank.org). Not affiliated.
05 · VBA library · dependency map

It maps a real VBA application — 8 modules, 100 procedures.

VBA-Web, the open-source HTTP library for Excel. Ask how it is built: the engine reports every module and procedure, which 77 could run natively here, and which 23 need external objects — CreateObject, Application.Run. Nothing runs; the map comes from the engine, not from the model’s guess.

…or open it and see the map in the ✦ Agent panel → VBA-Web by Tim Hall, MIT licence.
06 · Windows API · preserved

It knows what needs Windows — and keeps it intact.

SQLite for Excel: 66 procedures, 63 of them call Windows and SQLite DLLs through Declare. The agent lists the libraries and the procedures that depend on them, says plainly that none of it runs on this Linux node — and the project is preserved byte-for-byte for Excel.

…or open it and press ✦ Agent → SQLite for Excel by Govert van Drimmelen, MIT licence.
07 · Events · the workbook’s own code

Type an order code. The workbook answers — not the agent.

This workbook carries Workbook_Open and Worksheet_Change handlers. Open it, press ✦ Agent and click Enable macros here: that is your decision, like “Enable content” in Excel, and Workbook_Open runs once and fills B15. Then type ORD-1234 in column I — the sheet’s own handler, executed by the engine, writes the verdict in J. Type something wrong and it says so.

Nothing here is scripted by the model: the code is inside the file, the engine runs it, and it runs only after you allowed it.

Open the workbook and try it → …or download it, 8 KB, handlers inside →
SumSheet cabin: B15 says opened by Workbook_Open; I6 ORD-0002 gives J6 ok; I7 BAD gives J7 bad code Live frame, 6 September: the handlers wrote B15, J6 and J7 in the browser cabin.
08 · Trust · Execution passport

It asks you before touching anything outside the workbook — and shows the journal.

The same order-desk workbook carries SummarizeOrders, a macro that creates two Windows objects — Scripting.Dictionary and VBScript.RegExp. The Execution passport in the ✦ Agent panel names them, from the macro’s own text, and says: denied by policy until you allow them for this session. Only you can press Allow, only for the objects the file asks for, only for this session — the model has no such tool.

Then Run safely — on a copy: the engine’s broker serves the objects without Windows and journals every call. The passport shows the journal — 28 calls, which class, which method, what the broker answered — and the open workbook stays untouched until you apply.

Open the workbook, press ✦ Agent → …or download it, 8 KB, three macros inside →
SumSheet cabin, Execution passport: Allowed by you — Scripting.Dictionary and VBScript.RegExp; Journal — last run of SummarizeOrders, 28 calls to external objects, all routed through the engine's broker Live frame, 6 September: two grants by a person, one run on a copy, the journal in the passport.
09 · External data · a real government workbook

It knows where the data came from — and never phones home.

A workbook from the U.S. Office of Natural Resources Revenue, exactly as published: 116 rows of offshore facilities and a data connection to a text file on a network drive nobody outside the agency can reach. The ✦ Agent panel reads connections.xml and says so in the passport: 1 connection, text from P:\buyback_gulf.lst — the data stays as saved in the workbook; nothing is refreshed by the agent, the source is never contacted.

No VBA here — and the passport says that too: this workbook is data, formulas and connections. Open it, ask what it depends on; the answer comes from the file, not from a guess.

Open the workbook, press ✦ Agent → …or download it, 17 KB, connection inside → Source: U.S. Department of the Interior, ONRR (onrr.gov), public record. Not affiliated.
SumSheet cabin with the ONRR workbook; Execution passport: Code — no VBA project; External data — 1 connection buyback_gulf, text from P:\buyback_gulf.lst, data stays as saved, source never contacted Live frame, 6 September: the passport of a data-only workbook — code, external data, what is never touched.

Ask the agent. A model on our node drives the editor’s own tools on a live cabin. Every step below is an event the runtime actually emitted — which tool ran, what came back. In Prepare changes the engine builds the change on a copy, shows before and after with what the code checked, and nothing changes until you press Apply. Then download the file and open it in Word or Excel.

Document

Not a chat beside the file. An agent under the same rules as a person.

inspectplanpreviewapprovecommitverify

It doesn't click pixels and doesn't write into the file directly. Same operations, same history, same save path as the person at the screen — every change visible, every change reversible. The engine speaks MCP, so the assistant you already use plugs straight in.

ClaudeCursorChatGPTany MCP client

Connect one now. The demo documents on this site are served to MCP clients at https://view.sumoffice.com/mcp — five read tools today (document_open, document_describe, document_read, document_find, document_comments) over the same live editor cabins the buttons above open. Each session gets its own cabin; nothing is written back yet — proposals and approve-then-apply are the next step, and we will say so here when they land, not before.

{ "mcpServers": { "sumoffice": { "command": "npx", "args": ["-y", "mcp-remote", "https://view.sumoffice.com/mcp"] } } }

Or inside the editor. Open a sample in the browser editor and press ✦ Agent in the corner: the same panel — Task, Changes, Checks — works on the document you have open, through the editor’s own tools, and nothing changes until you press Apply. Spreadsheet: event budget · Document: workshop brochure · Spreadsheet with a macro (ask it to explain the macro — it reads the source and never runs it; ask it to run — it runs on a copy and you apply) · Spreadsheet with a Power Query

ORIGIN

Thank you, Microsoft.

Word and Excel turned documents into a shared language across whole industries; COM, VBA, XLL and Office.js made it extensible. We even named ourselves after their finest lesson — the first formula anyone ever learns. We're not crossing that work out. We're carrying it where their product can't go by its very nature: inside someone else's application, on a server, in an unattended process.

=SUM(forty years of office software, one native engine, every place you work)
You used to embed your system into Excel. Now the Excel class of capability embeds into yours.

The document opened. The formula recalculated. The query refreshed. The macro ran. The form saved. The agent showed its changes. The file opened again.

Everything else is the editor's job.