Desktop office suite

Rutba Office

A free, open-source desktop office suite. Nine applications in one download — mail, calendar, contacts, documents, spreadsheets, slides, pictures, image editing and video — on a document engine we wrote ourselves, working with the network switched off. In open beta, with a release most weeks.

Rutba Office free desktop suite
Version 1.25.0 · beta · 31 releases Licence AGPL 3.0 + commercial Installer Windows · macOS and Linux from source Runtime Node.js 20+ / Electron Network None required
Why we built it

The engine was the hard part. The suite is what it is for.

Rutba Workspace needed to open a customer’s .docx and .xlsx, edit them, and hand them back without quietly destroying the parts it did not understand. Nothing off the shelf did that, so the engine got built: an OOXML package layer that rewrites only what it deliberately edited, a spreadsheet calculation engine, a .pptx renderer, a dependency-free PDF writer, and a mail library that reads the archive formats other clients cannot.

A desktop suite is a better use of that work than a drawer. So it is published, free, under the AGPL — and a commercial licence exists for anyone who wants to embed it in something closed.

It is one engine, not two. Since September the Rutba Workspace apps open and save documents on the same packages the desktop suite ships, so every file a stranger opens in Rutba Office is a test the hosted product benefits from too.

9
applications in one installer
16
engine packages
922
engine tests, all passing
29
file formats read or written
One download

Nine applications, one shell

They share a design system, a set of shortcuts and an engine, so the second app you open behaves like the first.

Mail

Every account, every archive, one inbox

Gmail, Outlook.com and Microsoft 365 by signing in, any other IMAP and SMTP server found from the address’s domain, and twenty accounts set up from one file. Plus the archives other clients leave behind: Outlook .pst and .ost, .olm, mbox, .eml and .msg.

Calendar

Meetings, kept on your own machine

Month, week, day and agenda, calendars with a colour each, and repeats, exceptions and time zones — the Windows zone names Outlook writes included. .ics in and out, and an invitation that arrives in Mail is answered from the message with a reply the organiser’s calendar understands.

Contacts

The address book Mail completes from

.vcf and CSV in, merged by address; vCards out. Compose completes from the book and then from the people your mail has seen, and a sender is kept from the reading pane in one click.

Rutba Word

Documents that open the same everywhere

.docx on an engine we own, under Word’s own ribbon — Home through References, Mailings and Review. Pages laid out on screen with their own headers, footers and page numbers, footnotes at the foot of their page, a ruler whose indents, tab stops and margins move by hand, pictures and text boxes the words wrap round, multilevel lists, page borders, watermarks and line numbers — and a printed page that carries all of it. Reads .odt, .rtf, .doc, Markdown and text; exports PDF.

Worksheets

Real formulas, real recalculation

.xlsx with a full calculation engine — parser, evaluator and dependency ordering — under Excel’s ribbon, every tab and group, Page Layout, Data and Formulas included. Frozen panes, hyperlinks and notes, a block of cells turned into a table, pictures placed and printed, a print area set from the selection, and the drawings the file carries — shapes, pictures, charts — painted at the size their author drew them. A large workbook scrolls at once; one that used to take eleven minutes to open takes six seconds. Reads and writes .csv; reads .ods, .xls and .tsv.

Presentation

Slides that survive the round trip

.pptx read, edited, rendered and presented, with layout and master inheritance resolved properly, under PowerPoint’s ribbon. Shapes moved, resized and recoloured by hand, layers and designs, charts on slides, the Format Painter, shadows, links on a slide’s words, and find and replace across the whole deck — every change written the way PowerPoint writes it, so PowerPoint reads it back. Reads .odp and .ppt.

Pictures

A viewer that opens before you blink

Every common image format, EXIF read and orientation honoured, and PDFs, clips and sound in the same folder. Thumbnails made once and kept, and only what is in view drawn — so a folder of five thousand costs what a folder of fifty does.

Image & Video

The two jobs that always need a second program

Non-destructive crop, correction and annotation — your original is never written to — and a video trim-and-export timeline with no ffmpeg and nothing native to install.

Thirty-one releases in

Where it has got to

The suite shipped at 1.0 with a reduced toolbar and 577 engine tests. It is at 1.25.0 and 922. Twenty-two of its thirty-one releases came in the thirteen days after 1.6.1, most of them prompted by somebody using it on their own files and writing down what broke.

1.5 – 1.6 — the ribbons, and things on the page

Word, Worksheets and Presentation each got their real ribbon, every tab and group, collapsing when the window is narrow. Underneath it: footnotes and endnotes, character styles and exact line spacing, cover pages and text boxes that survive printing, IRR, RATE and DATEDIF, text that spills over empty neighbours, and a function list read from the engine’s own catalogue. A workbook that used to take eleven minutes to open now takes six seconds. Then pictures placed as proper media parts, preset shapes written the way PowerPoint writes them, and a sheet’s own drawings painted at the size their author drew them.

1.7 — beta, said plainly

The owner used the suite on real files and found problems none of the checks had caught. So the suite is marked beta — in the window title, beside the version, above the downloads — and a new check opens every file in a folder in the real application and records what happened. Its first run, over 1,532 public tender documents, set the work for the releases after it.

1.8 – 1.13 — a suite, not an editor

Calendar and Contacts joined as the eighth and ninth apps, and a meeting in a message is answered from the message. A new frame made nine windows read as one product. Rutba Word lays its pages out on screen and gained a ruler that moves things; Presentation’s shapes move by hand. Print, autosave with crash recovery, and an update that announces itself and installs on one click arrived on the way.

1.14 – 1.20 — the files people actually have

Pictures stays instant on a folder of thousands. Large workbooks scroll at once; frozen panes, notes, hyperlinks, tables and print areas work in Worksheets. Floating pictures and text boxes print where they sit, and footnotes sit at the foot of their page on screen.

1.21 – 1.25 — the rest of the ribbon

Page Layout, Data and Formulas tabs that write the file; page borders, watermarks, line numbers, multilevel lists and paragraph sorting in Rutba Word; the Format Painter, shadows, footer bands, links and find-and-replace across a deck in Presentation.

What is not done

Published binaries are Windows only. The build configuration produces a macOS .dmg and a Linux AppImage from the same source — one command each, nothing native to compile — but no signed build of either is published, so building it yourself is the honest route today. The Windows builds are not code-signed either, so SmartScreen warns on first run. It is telling the truth: the publisher is unverified until the certificate is. Code signing through the SignPath Foundation has been arranged and is not live yet. And the gap register is public and written from the code: equations, a visible view of tracked changes with accept and reject, password-protected files, right-to-left layout and translated menus are still missing. Work beyond 1.25 sits in the repository unreleased, so this page does not describe it.

How it is built

Two decisions shape everything else

Documents live in the backend

The OOXML engine inflates with zlib and works in buffers — a Node engine, not a browser one. A document opens, edits and saves in the main process, and the window draws the view model it is sent. A spreadsheet asks for the viewport it is about to paint and nothing else, which is why the size of a workbook has no bearing on the size of a window.

We only rewrite what we edit

An .xlsx is a zip of XML parts, and almost everything a young engine will not implement for years lives in a part that can be carried through untouched. Charts, pivot caches, macros, signatures and embedded media come back byte-for-byte. Fidelity degrades only where we deliberately touched something — which is also where the tests are.

The part nobody else does

Fifteen years of Outlook mail, opened without Outlook

.pst and .ost are read in full: the node and block B-trees, the heap, property and table contexts, folders, messages, recipients and attachments. Verified against a real 906 MB .ost — 467 folders and 12,172 messages indexed in under a second.

That exercise found three things no amount of reading the specification would have given. Outlook 2013 and later compress the larger data blocks of an .ost with zlib, which is not in the published structure and which a reader that does not notice sees as an archive full of empty messages. In an .ost the hierarchy and contents tables are mostly not materialised, so the folder tree has to come from the node B-tree’s parent pointers. And a view table that does exist may still carry no subject column.

The substitution tables for Outlook’s block encoding are transcribed from Microsoft’s published [MS-PST] open specification and checked three ways when they load — each is a permutation of 0–255, and encode and decode are exact inverses in both directions. A damaged table decodes nothing rather than decoding wrongly.

  • IMAP and SMTP for live accounts
  • Outlook .pst and .ost, read in full
  • Apple Outlook .olm
  • Unix mbox, .eml, .emlx and .msg
  • A local store, so an archive stays searchable
What it does not send

Unplug the machine and everything still works

There is no account, no sign-in to us and no usage data collected. These are claims in a published repository rather than promises about our intentions.

Credentials go to the operating system

Mail passwords are handed to the OS keystore — DPAPI on Windows, Keychain on macOS, libsecret on Linux — never to a file the application can read back in clear text.

Message bodies cannot phone home

Mail renders in a frame with an empty sandbox: no scripts, no forms, no same-origin access. The content policy blocks every remote fetch, so a tracking pixel cannot report that you opened the message. Remote images load only when you ask, per message.

Deleting is not destroying

Removing a file moves it to the operating system trash. An office suite should never be the reason something is unrecoverable.

Two network requests, stated plainly

The suite asks GitHub whether a newer release exists, which carries nothing about you. And at most once a day the launcher fetches an announcement, sending only the version and the operating system — no identifier of any kind, so what can be counted is “a copy opened somewhere today”, never you. Each is a switch; turned off, the request is not made. That is the whole of its network activity, and a third would be a bug.

Dual licence

Free for everyone. Commercial when the AGPL does not fit.

Rutba Office is published under the GNU Affero General Public License v3.0. Installing it and using it — at home, in a business, on a thousand machines — carries no obligations at all: copyleft binds distribution, not use.

The obligations start when you hand the software, or a service running it, to somebody else. If that does not fit what you are building — embedding the engine in a closed-source product, distributing a modified version without publishing your changes, or operating it as a hosted service without the section 13 source-availability requirement — Tech Style Ltd offers a separate commercial licence that removes them.

It is a conversation rather than a price list, because the terms depend on what you are building.

  • Use it anywhere, including commercially, at no cost
  • Read, modify and redistribute the source under the AGPL
  • Commercial licence for closed-source embedding
  • Engine packages usable without the desktop shell
  • Community support on the public issue tracker
Maintained in the open

The issue tracker is the support desk

Bugs, feature requests and the arguments about what happens next all live on GitHub, where anyone can read them and see what was decided and why. There is no ticket queue behind a login.