First-party application packages for ScholarServer.
Each application owns its containers, ScholarServer package manifest, Compose template, onboarding controller, tests, and release metadata. ScholarServer consumes immutable, checksummed release bundles; it does not execute files directly from a Git branch.
| Package | Status | Containers |
|---|---|---|
| Obsidian | Preview | Headless Sync, vault API, remote MCP |
| Zotero | Preview | Browser-accessible desktop, onboarding controller, app-owned automations, remote MCP |
| Docling | Preview | CPU-only conversion engine, durable single-worker queue |
apps/<id>/package: installable ScholarServer packageapps/<id>/*: application-specific source and testspackages/*: shared libraries used by first-party appscatalog: checksummed catalog metadata generated by releasesscripts: deterministic validation and packaging tools
Images are built separately on native amd64 and arm64 GitHub runners. The release workflow then creates a multi-platform manifest; QEMU and architecture emulation are not used.
Application icons are bundled into each checksummed package rather than loaded
from a public CDN at runtime. npm run icons:sync reproducibly downloads the
pinned assets in icons.lock.json; attribution is recorded in each manifest and
in THIRD_PARTY_NOTICES.md.
npm install
npm testAccount passwords and MFA codes are onboarding inputs, not application settings. ScholarServer passes them through its local executor to a root-owned request queue. The application consumes and deletes each request. Only the upstream application's authenticated session is retained.