Skip to content

Architecture ​

Product boundary ​

Project Marvin is the deployed calendar-sync application. Marvin Engine is its runtime.

Runtime flow ​

text
Provider event -> webhook or poll -> Marvin Engine daemon
  -> source normalization -> full mesh planner -> target policy
  -> Microsoft Graph / Google Calendar / CalDAV write -> mapping store

The mapping store records source and target identities. Provider markers on generated copies stop those events from becoming sources again.

Mirror policy ​

Each source event is routed to every other connected calendar. Per-target policy controls visibility and detail.

SettingDefaultFamily override
Subject<PREFIX><SUBJECT>Same, unless changed
LocationCopiedCopied, unless changed
DescriptionCopiedCopied, unless changed
VisibilityPrivatePrivate by default; may be changed to normal
TimezoneSource timezoneSource timezone

Provider automation ​

  • Microsoft Graph and Google subscriptions request an early daemon wake on changes; the daemon also renews those subscriptions.
  • Apple / CalDAV is polled by the always-running daemon.
  • Token refresh, connection validation, deterministic update/upsert handling, delta cursors, and explicit-tombstone cleanup policy are owned by the runtime. Provider deletion is disabled by default.

State ​

Profiles, provider credentials, tokens, mappings, subscription state, and runtime status are persisted beneath .marvin/ locally or the Azure Files /data mount when hosted.