Reference
Available sources
Every source Omnesis can index, what each one adds to your index, and how to manage the sources you have connected. It is for anyone deciding what to connect, or looking after a running setup.
A source is one account's data from one platform, such as a Gmail mailbox
or your Apple Notes. A provider is one sign-in that serves several source
types: signing in to Google once covers Gmail, Calendar, Drive, and Contacts. Most sources
run on a collector — some on any machine, some only on macOS because they read local Apple
databases. A few run inside the phone apps and push straight to
the gateway. A handful live on the gateway itself: Web Pages (type web), fed
by the browser extension, and the Omnesis-native sources listed under
Omnesis itself.
Every source follows the same deletion rule. An item goes when the platform reports it deleted, or when complete, successful reads stop listing it — and in that second case Omnesis waits for several reads over time to agree before removing it. A failed or partial read never deletes anything. Managing sources covers adding, pausing, re-syncing and removing them, and Sources on several devices covers what happens when two machines or phones host the same source.
In the tables below, the tags under each source's name say where it runs and how it
connects — any collector OAuth, for
example. Two sources carry an experimental tag: Plaid and Local
Files need more testing, and a collector offers them only when it runs with
OMNESIS_EXPERIMENTAL=1.
Experimental sources
covers turning them on.
Email & messaging
Google sources share one sign-in too, through an OAuth client you register in your own
Google Cloud project; the first Google source you add walks you through it (see
Google's OAuth client). Microsoft sources share one
sign-in, so consenting once covers Outlook Email, Outlook Calendar, and OneDrive. Omnesis
supplies a public Azure app, so no Azure setup is needed;
omnesis creds set outlook switches to an app registration you control.
Microsoft sign-in supports personal Outlook.com, Hotmail, and Live accounts. Work and
school accounts are not supported.
| Source | What it adds |
|---|---|
|
Gmail any collector OAuth |
Every email as a document, with attachment text extracted (scans and images are OCR'd when an OCR model is assigned); senders and recipients feed the people graph. |
|
Outlook Email any collector OAuth |
Emails and their attachments as documents; correspondents feed the people graph. |
|
IMAP Email any collector IMAP password |
Email from any account that offers IMAP over TLS on port 993 — the whole mailbox,
or only mail newer than the source's maxAge
when one is set. Use an app-specific
password when the provider offers one. The hostname is the provider's IMAP server,
such as imap.fastmail.com for Fastmail or
imap.mail.me.com for iCloud Mail. The source skips Drafts, Junk, and
Trash and indexes up to 512 KiB of each message body. Attachment text is extracted
(scans and images are OCR'd when an OCR model is assigned). Senders and recipients
feed the people graph, mailboxes become tags, and reply headers link messages into
threads. Use omnesis sources reauth imap:<email> to replace the
password.
|
|
WhatsApp Messages any collector QR pairing |
Messages as conversational documents, live as they arrive, plus an optional
one-time full-history import from an iPhone backup. Media text is extracted, and
voice notes are transcribed
when a transcriber model is assigned. Message
sync continues when media processing is disabled or unavailable. Pending media
stays in the local archive for later retries, within the source's date range. The
add flow shows a QR code; scan it under WhatsApp
Settings → Linked Devices → Link a Device, and the collector
starts syncing without a restart. WhatsApp may unlink a device after roughly two
weeks without activity; run
omnesis sources reauth whatsapp:<account> and scan a new QR
code to reconnect it.
|
|
Apple iMessage macOS collector Full Disk Access |
Messages as conversational documents, with attachment text inline, and voice-clip transcripts when a transcriber model is assigned; participants feed the people graph. |
Notes, tasks & meetings
| Source | What it adds |
|---|---|
|
Apple Notes macOS collector Full Disk Access |
Every note as a document. |
|
Apple Reminders macOS collector Full Disk Access |
Reminders and tasks as documents. |
|
Notion Pages any collector OAuth |
Notion pages as documents. |
|
Notion Databases any collector OAuth |
Each shared Notion database as its own typed analytics table, queryable with SQL. |
|
Obsidian Notes any collector Vault path |
Markdown notes as documents, with frontmatter, tags, and wikilinks. Vaults with the same folder name on one collector remain separate sources. |
|
Things 3 macOS collector Full Disk Access |
Tasks as documents. Things must be running on the collector's host — the app is what pulls from Things Cloud, and the local database it maintains is the only thing Omnesis can read. A collector that finds Things quit opens it again, hidden and in the background; if it keeps quitting, the collector retries on a slowing schedule, never more than a few times a day, and the source says so. Several Macs can host it as one shared source, each reading its own local Things database. |
|
Granola Meetings any collector API key |
Meeting notes as documents — summaries and transcripts — plus a meetings analytics table; attendees feed the people graph. Several accounts can be connected, one API key each. Each sync reads new and edited notes, and a full pass once a day picks up deleted ones. |
Coding agents
These sources read session files written by coding agents on the collector host. Each session becomes one conversation document per local calendar day. Documents contain human prompts and completed assistant replies. Tool calls, tool results, hidden reasoning, system context, Claude Code sidechains, and Codex subagent sessions are excluded. Project, working-directory, branch, and model metadata remain available when the source records them.
The collector accepts at most 10,000 transcript files per source. It rejects a file above 1 GiB before or after decompression. It also rejects a daily document above 16 MiB. One session can contain at most 4,000 daily documents, and one source can track at most 100,000 daily documents. A rejected file does not delete its last indexed documents.
| Source | What it adds |
|---|---|
|
Pi Sessions any collector Local files |
Active session-tree branches from ~/.pi/agent/sessions; linear
session files are read too. A custom directory can be selected when adding the
source.
|
|
Claude Code Sessions any collector Local files |
Main conversation branches from ~/.claude/projects. Claude Code
removes old local transcripts according to its own retention setting; Omnesis
mirrors the files that remain. On several collectors it is a
per-device source: each machine contributes its own
transcript directory, which + Add source can set separately for
each collector.
|
|
Codex Sessions any collector Local files |
Root sessions from ~/.codex/sessions and
~/.codex/archived_sessions. Recorded rollbacks are applied before the
conversation document is built. On several collectors it is a
per-device source: each machine contributes its own
Codex home, which + Add source can set separately for each
collector.
|
Code hosting
These sources index the repositories the token can list: the private ones it was granted, plus the public repositories you own or belong to. A token's Only select repositories choice governs its private access only — it does not narrow the public side, because a fine-grained token can read every public repository on GitHub.
What Omnesis indexes is therefore decided here, not on GitHub. The
repos setting is an allow-list of owner/name entries — name them
and exactly those are indexed; excludeRepos drops individual repositories
whether that list is set or empty. Entries must be repositories you own, collaborate on,
or whose organization you belong to: a public repository you have no connection to cannot
be added this way. Both settings take effect on the next sync when changed, without
re-issuing the token — set them with omnesis config set or by editing the
config file.
A read-only token with Metadata, Contents, Issues, Pull requests, and Discussions is enough, and code itself is never indexed — no diffs, no file contents.
A fine-grained token belongs to exactly one resource owner, so an organization's private
repositories need a token of their own. Connect it as a second account and give it a
connection name — the organization's, say — because both tokens authenticate as the same
person and would otherwise resolve to one account, the second replacing the first's
credential. Give each account its own repos list too: both tokens can see the
same public repositories, and without a list each account would index its own copy.
A thread and its replies are one document, rewritten whenever anything in it changes, so a
new comment, an edited comment, or a closed issue updates the document in place rather
than adding another one. References between threads become links in the graph: a
#-number mention or a "Closes" line resolves to that issue, pull request, or
discussion, and a merged pull request links to the commit it landed as.
| Source | What it adds |
|---|---|
|
GitHub any collector Access token |
Issues, pull requests, and discussions as documents — each with its comments, review verdicts, and inline review remarks, plus labels, state, and assignees. Authors and participants feed the people graph. |
|
GitHub Commits any collector Access token |
Commits on each repository's default branch — message, author, changed-file paths, and line counts. Commit authorship ties a GitHub account to the email address the same person uses elsewhere in the corpus. |
Calendar & contacts
| Source | What it adds |
|---|---|
|
Google Calendar any collector OAuth |
Events as documents, plus a typed events table for SQL queries. |
|
Apple Calendar macOS collector Full Disk Access |
Events as documents, plus a typed events table. |
|
Outlook Calendar any collector OAuth |
Events from every calendar on the account — your own, shared, and subscribed — as documents, plus a typed events table. Recurring series arrive as individual occurrences, and each event records how it marks your availability, so a block held as free is distinguishable from a meeting. |
|
Google Contacts any collector OAuth |
Contacts as documents; each contact seeds an identity in the people graph. |
|
Apple Contacts macOS collector Full Disk Access |
Contacts as documents; each contact seeds an identity in the people graph. |
Files
| Source | What it adds |
|---|---|
|
Google Drive any collector OAuth |
Files as documents, with text extracted from binary formats (PDF, modern and older Office formats, ODF, RTF) and images OCR'd when an OCR model is assigned. |
|
OneDrive any collector OAuth |
Files from your own drive as documents, with text extracted from PDFs and Office formats and images OCR'd when an OCR model is assigned. Files other people have shared with you are not included, nor are SharePoint or Teams libraries. |
|
Local Files experimental macOS or Linux collector Folder paths |
Documents in the folders you choose on the collector's own machine — text, markdown, PDF, Office and OpenDocument files, among others — with text extracted. Per device: each machine indexes its own folders. See Local Files. |
Web
| Source | What it adds |
|---|---|
|
Chrome Bookmarks any collector Local files |
Bookmarks as documents, linked to the captured web page when one exists. A bookmark remains a pointer and does not stand in for the page or a structured source document that has the same URL. |
|
Browser History any collector Local files |
Visit, daily-rollup, and search-term analytics tables, plus a daily browsing summary document. Reads Chrome, Brave, Edge, and Vivaldi on any collector, plus Safari and Arc on a macOS collector. Omnesis reads private copies of the browser databases and never modifies the originals. |
|
Web Pages gateway Paired extension |
The full text of pages you visit, captured by the paired browser extension as one document per page, plus a page-visits analytics table. Each visit records the paired browser and the Chrome profile name you entered during pairing, so visits from different profiles stay apart; a page document names the profile that last changed it. Omnesis never fetches URLs it finds in other sources — only pages you open in the browser are captured. When another source indexes the same item (a GitHub issue, say), links prefer that source's document and keep the captured page attached to it. |
Phone & device activity
| Source | What it adds |
|---|---|
|
Apple Health iPhone In-app toggle |
Typed analytics tables for activity, sleep, vitals, body, nutrition, mindfulness, and mood, plus summary documents for workouts, mindful sessions, mood logs, and each night of sleep. Shared across your Apple devices: they all read the same HealthKit library. |
|
Health Connect Android In-app toggle |
Typed analytics tables for activity, exercise, sleep, vitals, body, nutrition, cycles, and mindfulness. Per device: each Android phone adds its own data. |
|
Photos & Screenshots iPhone Android In-app toggle |
Text found in your photos and screenshots, recognized by on-device OCR, plus place names and scene labels derived on-device. Only that derived text is indexed — the image itself never leaves the phone. Per device: each phone indexes its own library, so a photo synced to several phones through a cloud service appears once per phone. |
|
Activity Segments iPhone Android In-app toggle |
Movement segments as analytics rows, plus one movement-summary document per day. Per device: each phone or tablet adds its own data. |
|
Location Visits iPhone In-app toggle |
Places you spend time — each stay's arrival, departure, coordinates, accuracy, and resolved place details as an analytics row, plus one document per visit. Per device: each iPhone or iPad adds its own data. |
|
App Usage Android In-app toggle |
Per-app usage sessions and daily totals as analytics tables, plus a daily attention-timeline document. Per device: each Android phone adds its own data. |
|
Apple Call Log macOS collector Full Disk Access |
Calls as analytics rows plus per-day call-log documents; callers feed the people graph. It reads the iCloud-synced call history, so iPhone calls land too, and several Macs on one iCloud account host it as one shared source. Calls stay in the analytics table after they age out of the device's history. |
|
Call Log Android In-app toggle |
The same call rows and per-day documents from an Android phone. Per device: each phone adds its own calls. Only the Android app you build yourself includes it; the Google Play app leaves out both the source and its permission. |
|
Apple Voicemail macOS 26+ collector Full Disk Access |
Apple's locally synced voicemail transcripts as searchable documents; callers feed the people graph. The Phone app must stay running on the collector host to pull new voicemails from iCloud, so set it to open at login. |
|
Screen Time macOS collector Full Disk Access |
App-session and daily screen-time analytics tables, plus a per-day digest document. Omnesis reads a private copy of the macOS activity database and never modifies the original. Per device: each Mac adds its own activity. |
Finance & fitness
| Source | What it adds |
|---|---|
|
Strava Activities any collector OAuth |
Activities, splits, best efforts, laps, segment efforts, zones, streams, comments, kudos, gear, and athlete profile, zones, and stats as analytics tables, plus a summary document per activity. Each installation needs its own Strava API app, because Strava caps a shared app at one connected athlete; the first add flow walks you through registering it. |
|
Coinbase any collector API key |
Balances, holdings, orders, fills, and transactions as analytics tables, plus transaction documents. Several portfolios can be connected, one API key each. |
|
Bank account (Enable Banking) any collector PSD2 consent |
Accounts, balances, and transactions from European banks as analytics tables, plus transaction documents; one instance per connected bank. |
|
Bank accounts (Lunch Flow) any collector API key |
Bank accounts, balances, and transactions as analytics tables, plus transaction documents. Several keys can be connected, as long as they cover different bank accounts — the same account reached twice would have the two connections overwrite each other. |
|
Bank account (Plaid) experimental any collector Plaid sign-in |
Transactions from the banks Plaid covers — strongest in the United States and Canada — as documents, plus daily balance and holdings tables; one instance per connected bank. It needs a Plaid developer app of your own. See Plaid. |
Omnesis itself
| Source | What it adds |
|---|---|
|
Omnesis Notes gateway Paired device |
Quick notes captured with omnesis note, the portal's
Tell Omnesis page, the mobile apps, Siri or Android voice
assistants, and Apple Watch, indexed as one searchable document per day. No agent
model is needed. The Sources lists show it as a read-only row; to amend or delete
a note, use Tell Omnesis, and the day's document rebuilds from
what remains. There is nothing to sync, pause, or remove.
|
|
Omnesis Chat gateway Built-in |
Your conversations with the agent, indexed back into the corpus as searchable documents with citation links. |
|
Agent conversations gateway Paired device |
Conversations from an external agent harness connected with
omnesis connect — see
OpenClaw and Hermes. The installed
plugin pushes its transcript to the gateway, which renders a document per
conversation per day.
|
Experimental sources
Plaid and Local Files are experimental. They need more testing, and their behaviour, settings and stored data may change between releases.
A collector offers experimental sources only when it runs with
OMNESIS_EXPERIMENTAL=1. The collector reads the flag from its own
environment, so set it on each collector that should offer them; a flag on the gateway
alone does not add them to + Add source. With the flag off, the picker
leaves them out and a collector skips any it already hosts, saying why in its log.
For a collector installed as a service, add the variable to its unit. Re-running
service install rewrites the unit from the flags you pass, so repeat the ones
it was installed with, such as its keyring flags, then restart it:
❯ omnesis service install collector --env OMNESIS_EXPERIMENTAL=1
❯ omnesis service restart collector
Plaid (experimental)
Plaid connects banks in the countries you choose; its coverage is strongest in the United
States and Canada. Plaid has no shared application for third-party tools, so you create
your own Plaid developer app and configure it once: its client ID, the secret for the
environment you use, that environment (sandbox or production),
and the countries whose banks you want offered. Sandbox is free and uses Plaid's test
banks. Real banks need Production access, which Plaid grants per team and bills per
connected bank. The first add walks you through the app credential, or set it directly:
❯ omnesis creds set plaid
Adding a bank opens a sign-in page that Plaid hosts. Omnesis shows you a link, you complete the sign-in there — including any redirect to the bank's own website — and the source appears once Plaid reports the connection. The gateway hosts no callback, so the link works from any browser on any device.
- One bank per add. A sign-in connects one bank and becomes one source, labelled with that bank's name. Add the source again to connect another bank; a bank that is already connected is refused rather than duplicated.
-
What it adds. Transactions as searchable documents, plus daily balance
and holdings snapshots in the
plaid_transactions,plaid_balancesandplaid_holdingstables. Access is read-only: it can never move money. Holdings are requested only where the bank supports them. - History. The first sync asks for up to two years of transactions. Plaid assembles that history in the background, so a fresh connection can take a few syncs to fill in. The depth is fixed when the bank is connected.
- Re-consent. Banks require a fresh sign-in from time to time. Omnesis warns before the deadline and marks the source needs auth once the bank refuses. Signing in again reopens the same hosted page and keeps the source and its history.
- Removal disconnects the bank. Removing the source asks Plaid to disconnect the bank, which ends its per-bank billing. If Plaid cannot be reached, the source is still removed and the warning tells you to remove the connection from the Plaid dashboard yourself.
- An unfinished add is cleaned up later. If you close the sign-in page before Omnesis records the bank, Omnesis disconnects it at Plaid the next time you add a bank or the collector starts. A sign-in left for more than about half an hour, or a collector stopped between connecting a bank and storing it, can leave a connection behind; the log names it, and you remove it from the Plaid dashboard.
Local Files (experimental)
Local Files indexes documents on the collector's own machine — the folders you name,
nothing else. There is no account and nothing to revoke. It runs on macOS and Linux
collectors and reads plain text, markdown, CSV, JSON, HTML, PDF, Word, Excel, PowerPoint,
OpenDocument, RTF, email (.eml), calendar (.ics) and wallet pass
files.
The same file in two places is found once: a PDF or office document on disk is matched against mail attachments and cloud files by its extracted text, so a result can show where the file came from. It is a per-device source, so a result names the computer that holds the file.
- Folders you name. There are no default folders. Name each one when you add the source; each machine that joins it names its own. An Exclude setting takes glob patterns to skip inside those folders.
-
What it refuses. System and configuration folders such as
Libraryand.config, build and dependency folders, and files that look like keys or secrets are never read, even inside a chosen folder. Git working trees and Obsidian vaults are skipped whole — the Obsidian source indexes vaults — and naming one as a folder is refused at setup with the reason. - Ranked low. A working disk holds far more documents than any other source, so Local Files results rank below other sources' until its ranking is proven.
- Deletion, folder by folder. A file removed from disk leaves the index only once a scan has read its folder from end to end. A folder that could not be read — an unmounted drive, a changed permission — is left alone until it can be, and the other folders are unaffected. Remove the source to purge everything at once.
Managing sources
Every source-management task is available both in the portal's
Sources page and under omnesis sources. Phone-hosted sources
are the exception: they are turned on and off in the mobile apps,
not from the portal or the CLI.
Adding a source
In the portal, open Sources and choose + Add source. In
the CLI, omnesis sources add opens the same picker, or you can name the
source type directly. The add flow walks you through the sign-in, API key, QR code or
operating-system permission the source needs, then starts the first sync.
# interactive picker
❯ omnesis sources add
# or name the source type directly
❯ omnesis sources add gmail
With more than one collector paired, the flow asks which one hosts the new source;
--device <collector> answers that up front. A source that reads a
folder, such as an Obsidian vault, also takes the path:
omnesis sources add obsidian-notes ~/Vaults/Work --device <collector>.
The path is checked on that collector, so ~ and relative paths refer to its
machine, not the one running the CLI.
Most sources take several accounts. Run the add flow again and sign in
with a different account: two mailboxes, two Notion workspaces, or two phone numbers each
become their own source, identified as <type>:<account> (for
example gmail:maya@example.com) and synced, paused, and removed
independently. Your browser may need to be signed out of the platform, or signed in to the
account you want, for its account chooser to offer it. Sources that read one local store —
the Apple sources, Things, Screen Time, Local Files, and the coding-agent sources — take
one account per machine, and show as already configured once set up on that collector.
Google's OAuth client
Omnesis ships no Google OAuth client. Google requires a security assessment before one shared client may read Gmail, so each installation registers its own client, in a Google Cloud project you own, and signs in through it. The first time you add a Google source, the add flow walks you through the registration, which takes about five minutes: create a project, enable the Gmail, Google Calendar, Google Drive and People APIs, configure the consent screen for External users, publish it, then create an OAuth client of type Desktop app and paste its client ID and secret. In the portal the same wizard opens when you choose + Add source for a Google source and no client is configured. Additional Google accounts reuse the client you registered.
# which providers have credentials configured
❯ omnesis creds list
# run the Google wizard again, to replace the client
❯ omnesis creds set google
Publish the consent screen rather than leaving it in testing. A client in testing signs in only the accounts listed as its test users, and Google expires its sign-ins after seven days, so every Google source would ask you to sign in again each week. Publishing needs no Google verification for your own use: the first sign-in shows a “Google hasn't verified this app” warning, which you pass with Advanced → Continue.
Day-to-day tasks
Each task names the portal action on the Sources page first, then the CLI command.
| Task | How, and what happens |
|---|---|
| Sync now |
Sync, or omnesis sources sync <id>.Runs an incremental sync without waiting for the next scheduled one. --wait blocks until it finishes.
|
| Pause |
Pause sync (keep data), or
omnesis sources pause <id>.Stops syncing on every device that hosts the source. Indexed data and sync progress stay. Resume sync or omnesis sources resume <id> picks up where it stopped.
|
| Sign in again |
The Sign in again banner, or
omnesis sources reauth <provider>:<account>.Renews the sign-in for every source under that account (for example google:maya@example.com covers Gmail, Calendar, Drive, and Contacts).
It must resolve to the same account; add a different account as a new source
instead. Sources that read local files have nothing to renew.
|
| Inspect |
Debug, or omnesis sources debug <id>.Shows the source's sync status, cursor, and storage statistics. |
| Rebuild |
Resync, or omnesis sources resync <id>.Deletes everything the source has indexed and syncs it again from scratch. Use it only when the indexed data must be rebuilt. The CLI asks first; pass --yes in scripts. Pages captured by the browser extension cannot be
resynced, because the gateway has nowhere to fetch them again from. A phone source
is resynced from the CLI only; the phone sends its data again.
|
| Move |
+ Add source on the other machine, which offers
Move, oromnesis sources move <id> --device <collector>.Hands a source to another collector. Indexed data stays; the old collector stops syncing it, and the new one signs in with its own credentials if the source needs them. |
Sources hosted by more than one device have extra tasks — joining a device, detaching one, and re-syncing one device only. They are covered in Sources on several devices. When a source reports an error instead, start from Troubleshooting.
Removing a source
Remove in the portal, or omnesis sources remove <id>,
removes the whole source for every device that hosts it, including devices that are
offline; they learn about it when they reconnect. Syncing stops immediately, and a source
pushed from a phone or the browser extension stops being accepted. To keep the data
instead, pause the source.
Everything the source ingested — documents, analytics rows, search-index entries, and anything derived from them — is then deleted in the background, queued behind indexing so it does not interrupt work in flight. On a large mailbox that takes several minutes. Until it finishes, the source stays in the list marked removing, and its document count falls as the purge drains. If the gateway stops partway through, it resumes the purge on the next start. You cannot add the same account again until the removing row has gone; the re-added source then syncs from scratch.
People survive the removal on the strength of what remains. An email address or phone number is kept while any other connected source still names it, so removing a mailbox does not erase a contact your address book also holds. An identifier no remaining source names goes with the purge, and a person left with none goes with it.
Removal deletes data from the gateway only. It does not delete the originals on the provider or the phone, retained backups, or exported copies, and it does not promise physical secure erasure. To delete one document rather than a whole source, see deleting a document.
Sources on several devices
A source normally lives on one device: the collector or phone that syncs it. Some source types can also be hosted by several devices at once — Apple Notes on two Macs signed in to the same iCloud account, or Health Connect on two Android phones. Each device that hosts a source is a member of it, and the source type fixes how its members share the work. There are three ways:
One machine at a time
- One devicesyncs the source
- Gatewaykeeps that device's data
Move it to hand it to another machine.
Shared
- Every memberreads the same upstream data
- Gatewaykeeps one copy of each item
Detaching a member keeps the data.
Per device
- Each membersends its own, different data
- Gatewaykeeps each member's data apart; search shows it all
Detaching a member deletes its data.
The portal and omnesis sources name the mode with its code word, shown here
under each plain name.
| Mode | How it works |
|---|---|
One machine at a timeexclusive |
One device hosts the source. Adding the same account elsewhere is refused and
names the current host; move the source instead. There is no member to detach. Sources: every collector source not listed below, including Apple Contacts and Apple Calendar, whose local databases have no item identifiers that are stable across Macs. |
Sharedreplicated |
Every member reads the same upstream data with its own sync progress; the gateway
keeps one copy of each item. Detaching a member stops it contributing; the data
stays. Sources: Apple Notes, Reminders, iMessage, Call Log, and Voicemail on Macs signed in to the same iCloud account; Things; Apple Health on iPhones. |
Per devicepartitioned |
Each member sends data only it has. The gateway keeps each member's data apart,
and search and SQL show all of it together. Detaching a member deletes its data
from the gateway; other members' data stays. Sources: Screen Time; Claude Code, Codex, and Pi sessions; Local Files; on phones, Photos, Activity Segments, Location Visits, Health Connect, Android Call Log, and App Usage. |
Adding a device to a source
Start + Add source for the source type and pick the new machine as the destination. The flow first discovers which account that machine has. If the account is already configured on another device and the type allows several members, it offers to join; a different account becomes a separate source. On a second Mac, for example, the same iCloud account joins Apple Notes, while a different iCloud account becomes a second Apple Notes source. For a type that allows one machine at a time, the flow names the current host and offers to move the source.
From the CLI, omnesis sources join <id> --device <device> adds a
member, and the portal's Join a device… action does the same. Each member
syncs with its own credentials, so if the source needs a sign-in, run
omnesis sources reauth <provider>:<account> --device <device>
for it. A join is refused when the device cannot host the type or holds a different
account. Update a collector before joining it to a shared or per-device source; an
out-of-date collector is not offered as a destination.
A source that reads a folder on each machine — Claude Code, Codex, and Pi sessions, or a
custom Things database — asks for that path once the destination is chosen, and the path
belongs to that member only. Where + Add source offers
Configure <device>, use it to change one member's path without
touching the others. The shorter omnesis sources join uses the source's
default path.
Phones are different: each phone and tablet is paired separately, and phone sources are turned on in the app, before the operating-system permission prompt, rather than joined from the portal or the CLI. When another iPhone already sends Apple Health, the app offers Keep using the other iPhone, Use both iPhones, or Use only this iPhone. Turning on a per-device source on a second phone adds that phone's data and keeps the first phone's history. See Mobile apps.
Members, detaching, and re-syncing
omnesis sources members <id> lists a source's mode and each member with
its own sync status; the portal's Sources page shows the same under the source.
omnesis sources detach <id> --device <device>, or
Detach a device… in the portal, stops one member hosting the source
without removing it. What happens to the data depends on the mode, as in the table above,
so the CLI and the portal both say it before you confirm; pass --yes in
scripts. The last member cannot be detached — pause the source to keep its data, or remove
it. On a phone, turning a source off in the app asks the gateway to detach that phone,
with the same outcome.
omnesis sources resync <id> --device <device> re-syncs one member
of a shared or per-device source and leaves the others alone. On a per-device source, that
member's data is deleted and synced again; on a shared source, only that member's sync
progress starts over, because the data is shared.
If shared members disagree about whether an item was deleted — one reports it gone while
another still has it — Omnesis keeps the item until every member that holds it agrees.
omnesis sources counts them as deletions in dispute, the member holding them
shows Keeping N items that <device> no longer has in the portal and the
apps, and omnesis doctor warns. The disagreement clears once the item is
deleted on the device that still holds it, or once you
delete the document for good.
What a source contributes
Searchable documents. Most sources emit documents — emails, notes, messages, pages, per-day summaries — into the document store, where they are indexed for keyword and vector search and available to the agent.
Typed analytics rows. Structured sources emit typed rows into analytics tables instead of, or alongside, documents: heart-rate samples, bank transactions, browser visits, screen-time sessions. These are queryable with plain SQL — see Search. Many sources contribute both, binding a readable summary document to the underlying rows.
People-graph identities. Contacts, email correspondents, message participants, callers, and meeting attendees become identities in the people graph, so one person's activity is connected across every source they appear in.