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.
| 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.
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-interactiveAspire 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.
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.
dotnet build CellBridge.slnx
dotnet test CellBridge.slnx
dotnet test demo/CellBridge.Demo.slnxCI 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.
- Provider export, migration and recovery
- Document library and desktop editing
- Authentication and permissions
- Storage, hosting and provider authoring
- Protocol support and compatibility
- Architecture
- Protocol scope and references
- Automated testing
- SharePoint capture tooling
MIT. Vendored Microsoft protocol test code retains its notice and license.