Skip to content

About

An experimental MS-FSSHTTP server for opening, saving, and coauthoring Microsoft Office documents.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

CellBridge

Build and tests .NET 10 License: MIT

Edit Microsoft Office documents in their desktop apps and save them to your own ASP.NET Core server. CellBridge implements MS-FSSHTTP and MS-FSSHTTPB, the protocols Office uses to open documents, send changes and coordinate editing.

The repository includes reusable .NET libraries and a sample document library. Create or import a file, open it in Word, Excel or PowerPoint, and save changes back to CellBridge. Use the sample to try desktop editing, or add the endpoints to your own ASP.NET Core application.

CellBridge is experimental. The APIs may change, and production-scale operation has not been qualified.

Features

Feature Current support
Word editing Open, edit, save and reopen tested while signed in.
Excel editing Open, edit, save and reopen tested while signed in on the durable host.
PowerPoint editing Save and reopen presentations, including complex Copilot-generated slides.
Document library Create blank Office files, import existing documents and download saved files.
Accounts and permissions Local sign-in, document ownership, read-only/editing access and revocation.
Persistent storage PostgreSQL document state with PostgreSQL or filesystem file content.
Revision history Authorized version listing/download and graph-aware restore through SOAP and reusable APIs.
Incremental transfers Reuse stored file parts and send parts the client does not already have.
Coauthoring Editor sessions and locks are implemented; two-desktop editing remains unverified.

Some advanced synchronization options and automatic graph pruning remain unimplemented or disabled. See revision history, protocol support and compatibility and the requirements ledger for exact coverage and open work.

Try the demo

The repository contains two separate applications. The Razor Pages demo served at /library creates blank documents and uses the sample Identity accounts. The package-only document library also creates blank documents and adds uploads, Office links, downloads, history, permissions and save-delivery status. It stores actual destination files separately from CellBridge state and tests recovery after lost save replies. Its built-in identities are for local testing.

Install the .NET 10 SDK, an Aspire CLI compatible with the preview SDK pinned in aspire/apphost.cs, Docker and Python 3.12 or newer. Desktop editing requires Office on Windows.

From the repository root:

aspire start --apphost aspire/apphost.cs --non-interactive
aspire wait web --non-interactive
aspire wait demo --non-interactive
aspire ps --non-interactive

Aspire starts PostgreSQL, initializes the schema and starts the host and library. Provision an account, then open https://localhost:7292/library. Sign in, create a document and use its Office open link to edit and save it.

For another computer, set Parameters__PublicOrigin to an HTTPS origin that Office can reach and trust. The demo guide covers imports and remote clients.

Stop Aspire before rebuilding locked outputs. If a capture is active, stop it with tools/capture/stop.py first, then run aspire stop --non-interactive.

Use in ASP.NET Core

After configuring authentication and a durable StorageProvider, register the services and endpoints in Program.cs:

using CellBridge.AspNetCore;

builder.Services.AddCellBridge(provider);
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapCellBridge();
await app.RunAsync();

Follow the hosting guide for provider setup and the authentication guide for identity mapping. The package consumer provides a complete example with bearer authentication and in-memory storage. For standard browser and Office login pages, use AddCellBridgeIdentityLogin<TUser> with existing ASP.NET Core Identity accounts, including authenticator and recovery-code sign-in. For a custom account system, AddCellBridgeCookieLogin registers a cookie and the standard pages with a credential checker. Use AddCellBridgeLogin for an existing cookie. Custom HTML is optional. CellBridge handles sign-in, CSRF and the Office challenge/completion flow; see login integration.

For applications with their own document permissions, see the host authorization example. The integration guide covers parsed SOAP requests, resource IDs and save receipts. To publish saves to an external file store or share locks with WOPI, follow external host reliability.

Build and test

dotnet build CellBridge.slnx
dotnet test CellBridge.slnx
dotnet test demo/CellBridge.Demo.slnx

CI runs protocol, storage, demo, parser and capture checks on Linux and Windows. See automated testing for the disposable two-host runner and desktop tests. Live interoperability tests are opt-in.

Documentation

License

MIT. Vendored Microsoft protocol test code retains its notice and license.

About

An experimental MS-FSSHTTP server for opening, saving, and coauthoring Microsoft Office documents.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages