Sharing & Importing Bundles
A DataCore Bundle is a shareable "recipe" for reproducing a set of resources on someone else's DataCore instance — not a copy of the processed data itself.
What's in a bundle
- All of your local pipelines: for each one, its name, trigger type, and ordered steps, where each step names its plugin and links to that plugin's repo (so the importer knows what to go get, cross-referenced loosely against the Plugin directory — nothing here auto-installs anything). A bundle is your whole pipeline list, not a single pipeline you pick.
- Resources: name, type, and source URL for each resource. Only
Completedresources whose source is a URL are eligible, and only for types one of the exported pipelines actually covers — an uploaded file's source is a privates3://path into the exporter's own MinIO and can't be shared.
Nothing about the artifacts themselves (summary text, embedding vectors, analysis JSON) is included.
Sharing (export)
From Resources → Share as Bundle:
- Every local pipeline is included automatically — no need to pick one.
- Fill in a repo URL for each step, across every pipeline (required — the bundle schema validates these as
http(s)URLs). - Select which eligible resources to include (all URL-sourced
Completedresources of a type any pipeline covers are pre-selected). - Name and describe the bundle, add tags, submit.
This requires being logged in with a verified email (see User Accounts) — you'll be prompted to log in the first time if you aren't already.
Importing
From Resources → Import from Community (no login required — importing is a read + local-register action, not a post):
- Search the shared bundles.
- Pick one — for each of the bundle's pipelines, you'll see whether you already have a matching local pipeline for its trigger type:
- You do: resources of that type will start processing immediately once imported.
- You don't: resources of that type still get registered (and will sit
Pending, per FR-003a) — the required plugins and their repo links are shown so you know what to set up.
- Click Import — each resource is registered via your own Core API (
POST /api/v1/resources), exactly as if you'd typed it into the "Add Resource" form yourself.
Why reprocessing instead of copying
The core design choice: a bundle transports inputs and a recipe, and reprocessing is what actually produces the artifacts on the importer's side. This means:
- The importer's own plugins run — using their own model/API keys, their own storage, their own version of the plugin — so results may differ slightly from the exporter's, which is expected and disclosed.
- No large or sensitive processed content ever has to leave the exporter's infrastructure.
- The same Separation of Storage principle that governs a single DataCore instance extends naturally to sharing between instances: only references and definitions cross the boundary, never raw content.