Compile where your knowledge already lives.

Connect a source read-only and start each import yourself. TAVONEL records the revision of every file it imports, so the compiled World stays traceable to the system it came from, and nothing is compiled until you start the compile.

Connection health — configured, expired or unreachable — is reported in your workspace, where you can act on it.

What connects.

Uploading and compiling your own sources open for a workspace once its owner accepts the processing terms. The systems with a connector are Google Drive, Dropbox, OneDrive / SharePoint, Mounted file server and S3-compatible object storage. Each is described below, with the access it is given and what happens when a file moves or disappears.

That is the whole list. Confluence, Notion, Slack, GitHub, Box and Jira have no connector here. Where such a system keeps its files in one of the cloud drives below, or exports to a directory or a bucket, that path works; the system’s own API is not read.

Read-only
We hold an OAuth grant scoped to reading, run the sync, and never write back.
Customer-run
You run the import agent inside your network, and the storage credential never leaves it.

Cloud document systems.

Read-only

Google Drive

Discover and import Drive files read-only, tracking the file checksum as its revision.

Security and sync details
Scopes requested
openid email https://www.googleapis.com/auth/drive.readonly
Writes back
Never. Discovery and download only.
Deletion
The versioned changes reader observes renames, content versions and removal or lost-access events. A removal or a lost-access event suspends the bound source and stops the sync for review before its checkpoint advances — nothing compiles from a source we can no longer read.
Incremental cursor
Versioned snapshot and changes tokens, bound to the selected drive and stored per connection.
Read-only

Dropbox

Import folders recursively with revision tracking and explicit deleted entries.

Security and sync details
Scopes requested
account_info.read files.metadata.read files.content.read
Writes back
Never. Discovery and download only.
Deletion
A deleted entry or a lost-access event suspends the bound source and stops the sync for review before its checkpoint advances — nothing compiles from a source we can no longer read.
Incremental cursor
The provider cursor; malformed continuation is refused.
Read-only

OneDrive / SharePoint

Read Microsoft Graph drives and sites through delta sync with eTag revisions.

Security and sync details
Scopes requested
openid profile offline_access User.Read Files.Read.All Sites.Read.All
Writes back
Never. Discovery and download only.
Deletion
A deleted facet or a lost-access event suspends the bound source and stops the sync for review before its checkpoint advances — nothing compiles from a source we can no longer read. Off-origin continuation links are refused.
Incremental cursor
@odata.nextLink / @odata.deltaLink, origin-validated.

Verify the provider account in Workspace before the first sync. Connection health and lifecycle evidence stay with the connection.

File and object storage.

Use a local source agent for repositories that stay inside your network. We configure the first route with you.

Operating the agent
Install
Python 3.12 or newer. Verify the download against the sha256 in the distribution record at /developer/channel.json, create the connection in Workspace to get its id, and put the API key in the TAVONEL_API_KEY environment variable — the agent reads it from nowhere else. S3-compatible mode additionally needs boto3, which you install; the agent stops and says so if it is missing.
Permissions
Read on the directory tree, or ListObjectsV2 and GetObject on the bucket and prefix. Nothing more: the agent never writes to your source. Storage credentials are resolved on your host and are never sent to us. It skips symbolic links and refuses a path that resolves outside the root you gave it. Outbound HTTPS only, no inbound port.
Runs
By default one invocation performs one sync and exits; cron, a systemd timer or Task Scheduler is what makes it periodic, and that interval is your import latency. With --watch it stays resident and repeats the sync every --poll-seconds until it is stopped. Nothing on our side notices a watch that has stopped, so it is not an unattended service: run it under a supervisor that restarts it and reports when it exits. Do not run two against one connection at once.
Restart and network outage
The local cursor file is written only after we have committed the batch, so a killed process, a reboot or a dropped connection leaves it untouched and the next run sends the same work again; per-file upload keys are derived from the connection, path and revision, so a repeat resolves to the same document rather than a duplicate. A transient network or HTTP error is retried within the run up to --retry-limit times; a failure past that exits non-zero and waits for your scheduler.
Update
The distribution record at /developer/channel.json carries the current version, the minimum Python and the sha256 of the agent. Compare, download, verify the hash, replace the file, keep the cursor state. There is no self-update and no notification, so checking that record is a task you schedule.
Responsibility
The host, its uptime, the scheduler, the credentials and noticing a failed run are yours, because the agent runs inside your network on your machine. We do not monitor it: an agent that stopped looks to us like a source with no changes. We are responsible for the API it calls, the upload capability, the cursor commit and everything after the upload.
Monitoring
The agent runs on your host under your scheduler, so your scheduler is where a failed run surfaces: the process exits non-zero and reports there. It has no inbound port, no health endpoint and no callback to us, so its liveness is whatever your scheduler reports. Timings are whatever a run on your own files produces.

The full runbook, with the error-message table, issource-agent-operations.md.