Skip to content

Sources

A source is a thing that fills your Library — a configured link between Trove and an upstream system. Each source points at something specific (e.g., “My Tech RSS” pointing at a particular feed URL, or “HN Top Stories” pulling your Hacker News saves), and a source can have several feeds — the individual publications, accounts, or shows it follows.

TypeDescription
hacker-newsHacker News saved stories and top posts
rssRSS and Atom feeds
arxivarXiv paper feeds
manualContent saved via trove_save or the API
Your ownAny type you define via the API

Trove does not fetch from upstream systems itself. A sync client — the Trove Mac app, or your own code built against the Sync API — fetches content and pushes it into Trove. The cloud’s job is to store, index, and search what it receives.

This means scheduling, retries, and credential handling all live in the sync client, not in Trove. A source record is the cloud’s view of what you follow: its type, status, config (preferences only — no credentials), and the documents that have been pushed so far.

StatusMeaning
SETUPCreated but not yet fully configured
ACTIVERunning normally. The sync client pushes new content as it syncs.
PAUSEDMarked paused. The sync client should stop syncing it until resumed.
ERRORThe last sync reported a failure. Check errorMessage for details. The sync client retries on its next run.

The sync client records a SyncRun after each sync (via the createSyncRun mutation), giving you a queryable history. Each record tracks:

  • Status. RUNNING, SUCCESS, ERROR, or CANCELLED
  • Documents synced. How many new documents were indexed
  • Duration. How long the sync took
  • Cursor. Position marker for incremental sync, so the next run picks up where this one left off

View sync history via the syncRuns field on any source.

The first time you use trove_save (from Claude) or the saveDocument mutation (GraphQL), Trove automatically creates a “Manual Saves” source with type manual and status ACTIVE. All manually saved content goes here.

Each source has a JSON config object with source-specific preferences (feed URLs, section lists, filter parameters). Config holds preferences only — credentials never live in the cloud; the sync client keeps them locally (e.g., in the macOS Keychain).

MutationPurpose
createSourceCreate a new source with type, name, and config
updateSourceChange name, description, or config
pauseSourceMark a source paused (status changes to PAUSED)
resumeSourceResume a paused source (status changes to ACTIVE)
deleteSourceRemove a source and all its documents