logo Getting Started


This site is not intended to give low-level specifications on how to set up every single repository - please see the repository's README.md for instructions. If you find any instructions in either this document or any other repository's README to be incorrect or confusing, please let someone know; if you are able to fix the documentation yourself, please do so. If something is missing that you feel should be added, feel free to do so, but try to keep this guide high-level and applicable to multiple repositories.

Project layout

This is not meant to be a comprehensive listing of EVERY repository, but is meant to give an overview of how the repository is laid out. The most important groups/repositories will have comments associated with them.

├── 📂 arch        (Architecture team projects)
├── 📂 collab        (relevant projects forked from elsewhere, usually used as implementation references; NOT a complete list)
|   └──📜 fedsci        (earlier project which attempted to federate systems, prototype of INTERSECT)
├── 📂 digital-twins       (virtualization of scientific instruments, in some cases slightly modified for integration with adapters)
│   ├── 📜 nionswift        (first successful implementation of a digital twin)
│   ├── 📜 hello-ecosystem
│   └── 📜 scanning-electron-microscope
├── 📂 devops      (all of our devops repositories)
│   ├── 📂 deployments        (information about all deployed INTERSECT applications, slightly more relevant to regular devs)
│   │   ├── 📜 edge-compute
│   │   ├── 📜 slate-onyx
│   │   └── 📜 ornl-cloud-k8s        (Kubernetes management for CADES deployment; core INTERSECT services and most adapters/digital-twins are deployed here)
│   ├── 📂 infrastructures (Infrastructure-as-code repositories)
│   │   ├── 📜 ornl-cloud-k8s
│   │   ├── 📜 gitlab-runners
│   │   └── 📜 development-environments        (setup local kubernetes/Docker environments)
│   └── 📜 docs        (In-depth documentation about DevOps; assume nothing here is relevant for developers)
├── 📂 int      (Integration team projects)
└── 📂 sdk        (development code outside of digital twins goes here)
    ├── 📜 broker      (development configuration of brokers needed for SDK development)
    ├── 📂 core        (INTERSECT libraries)
    │   ├── 📜 message-definitions        (protobuf message definitions, language-agnostic)
    │   ├── 📜 messages-python        (protobuf-generated message definitions for Python)
    │   └── 📜 client        (Python library for common message/broker functionality, also includes broker configuration)
    ├── 📜 docs        (high level documentation about INTERSECT SDK)
    ├── 📂 integration        (adapters; NOT a complete list)
    │   ├── 📜 nionswift-adapter        (first successful adapter associated with Nionswift Digital Twin)
    │   ├── 📜 epics-adapter
    │   └── 📜 edge-dgx-adapter
    ├── 📂 interface        (INTERSECT UI and microservices)
    │   ├── 📜 dashboard        (main INTERSECT UI)
    │   └── 📜 dashboard-service        (communicator between dashboard and broker; catch-all for UI interaction without persistent storage)
    ├── 📂 services        (Core INTERSECT microservices)
    |   ├── 📜 resource-service        (INTERSECT system-of-system data persistence)
    |   ├── 📜 discovery        (Adapters can communicate with this to get appropriate broker endpoints + credentials)
    |   └── 📜 experiment-controller        (launch INTERSECT campaigns)
    └── 📂 sandbox        (experimental / example code; development requirements are not so strict)

Architecture Documentation

The INTERSECT architecture specification can be found here.


Copyright © 2023 INTERSECT