Connections
A connection is a saved link to data that lives outside Mycorr: a PostgreSQL database, a Supabase project, a Google account for Sheets, a cloud storage bucket, or a SQLite file on your computer. You set it up once, then import tables from it into any model in the same organization, and sync them when the source changes.
Add a connection
Open Connections in the sidebar and click Add connection, or use Add a connection under Import → Connections inside a model. Pick a type:
| Type | Use it for | Setup |
|---|---|---|
| PostgreSQL | RDS, Cloud SQL, self-hosted, Heroku, Neon, anything that speaks the Postgres protocol | PostgreSQL |
| Supabase | A Supabase project | Supabase |
| Google account | Google Sheets | Google Sheets |
| Cloud storage bucket | CSV, TSV and Parquet files in Google Cloud Storage | Cloud Storage Buckets |
| Local SQLite | A .sqlite or .db file on your computer | Local SQLite |
Who can see and use a connection
- A connection belongs to one organization, the one you are working in when you add it ("Adding to … Only you can see it."). Its tables can be imported into models in that organization only, and a table imported through it can't be moved to another organization.
- Only you can see it. Other members never see your credentials, even when they work in a model that holds tables from your connection.
- Credentials are encrypted at rest with AES-256-GCM and decrypted only in memory while Mycorr reads from the source.
- Mycorr only reads. Postgres and Supabase imports run
SELECTinside a read-only transaction, buckets are read with read-only access, and Sheets are read through the files you pick. The one exception is Export to Google Sheets, which writes a spreadsheet when you ask it to.
Tables from a connection
A table imported from a connection is read-only in Mycorr. The source owns the data, so an edit in Mycorr would be overwritten by the next sync. Change the data at the source, then sync.
Everything else works as for any table: you can link it, checkpoint and release it, share it, and others can import it. A connected table can't be published to the public catalog.
Syncing
Open the table's menu and choose the sync action: Sync Table for Postgres and Supabase, Sync Sheet, Sync from bucket, or Sync from local file. Checkpoint, then sync saves a checkpoint of the current version first, so you can go back if the new data is wrong.
Only the model's owners can sync, and a table syncs one at a time.
A sync changes only what changed:
- Rows that didn't change keep their identity, so links and history still point at the right rows.
- If nothing changed upstream, no new version is made, and you see "Already up to date."
- New and removed columns are applied to the table, and a column whose type changed upstream is converted.
Row tracking
To know which rows changed, Mycorr matches each row to the previous version by its primary key. You'll find it under Row tracking in the table's history.
- Follow the source uses the key the database declares and changes with it. A declared key can't be overridden.
- Where the source declares none, you can pick columns that are unique, alone or together.
- No primary key matches rows by their content, so an edited row shows as one row gone and one new.
When you import from a source with no key, Mycorr asks you to pick one.
When a sync needs a decision
Sometimes a sync can't safely match rows by itself: the key stopped being unique, the source dropped its key, the upstream table came back empty, or most rows look different from last time. Instead of guessing, Mycorr stops and shows Sync needs a decision, with each way of matching rows and what it would do to them. Pick one and click Sync, or Cancel sync to change nothing.
Manage connections
On the Connections page, search by name or host and click a connection to see its details. From there you can:
- Change its name, or update its password or CA certificate. The host, port, database and username can't change; for a different database, add a new connection.
- Reauthorize a Google connection whose access expired.
- Delete it. Tables you imported through it stay in your models with their data, but can no longer sync. Syncing one then says no saved connection matches, with Open Connections to add it again.
You can also cut Mycorr off from the source side at any time: revoke the database role, remove the bucket's IAM binding, or remove Mycorr in your Google account's permissions. The next sync then fails with a permission error.