Skip to content

Core Concepts

A Brane deployment spans multiple nodes across different domains (organizations). Each domain controls its own data and policies.

Node TypePurpose
CentralOrchestrates workflows, hosts the API and package registry
WorkerExecutes tasks, hosts local data, enforces policies
ProxyHandles cross-domain networking (optional)

A package wraps your code (in any language) inside a Docker container, along with metadata describing its functions. Packages are defined using a container.yml file.

name: my_analysis
version: 1.0.0
kind: ecu
files:
- analyze.py
entrypoint:
kind: task
exec: analyze.py
actions:
'run_analysis':
command:
args:
- run_analysis
input:
- name: dataset_path
type: string
output:
- name: result
type: string

Workflows are written in BraneScript and describe what to compute, not where. Brane decides where to run each step based on data location and policies.

import my_analysis;
let data := new Data { name := "patient_records" };
let result := run_analysis(data);
println(result);

Policies define rules for data access at each domain, written in eFLINT. They enforce constraints like “raw data must not leave this domain” or “only approved algorithms may access sensitive datasets.”

RoleResponsibilityPrimary Tool
System AdministratorDeploy and manage nodesbranectl
Software DeveloperBuild packagesbrane CLI
ScientistWrite and execute workflowsbrane CLI / REPL
Policy ExpertDefine data access policieseFLINT / Policy GUI

The central design principle: computation moves to the data, not the other way around.

  1. The planner identifies where the data lives
  2. The package container is sent to that worker node
  3. Computation runs locally — data never leaves
  4. Only approved results are returned