interactEM#

interactEM is an interactive flow-based programming platform for streaming experimental data to High-Performance Computing (HPC). Users wire together containerized operators through a web frontend and deploy them on both HPC and edge resources.

Demo video#

Features#

  • Interactive Web Frontend: Create data pipelines with a React-based frontend.

  • Containerized Operators: Uses container technology to ensure consistent execution environments.

  • Data Streaming: Operators connect and data flows between them over network with point-to-point communication.

Running locally#

Prerequisites#

Configuration#

  1. Setup .env with secure secrets

    make setup
    

    This automatically:

    • Copies .env.example to .env

    • Generates secure random values for all secrets

    • Searches for your podman socket

    • Updates your .env file

  2. Add GitHub credentials

    Edit your .env file and add GitHub info:

    GITHUB_USERNAME=your_github_username
    GITHUB_TOKEN=your_personal_token
    

    You can get a personal token from your GitHub account settings. Use a classic token with read:packages.

Starting services#

  1. Quick start

    make setup
    # then fix your GITHUB_USERNAME/TOKEN in .env
    make docker-up
    make operators
    
  2. Access the application

    Open your browser to http://localhost:5173

    • Username: admin@example.com

    • Password: Check your .env file for FIRST_SUPERUSER_PASSWORD (auto-generated), or output from make docker-up

Stopping services#

  1. To stop services:

    make docker-down
    
  2. To stop and delete database (be careful):

    make clean
    

Launching an agent#

For operators to launch, you need to startup an agent process. See launching an agent for instructions on how to do this.

License#

This project is licensed under the LBNL BSD-3 License - see the LICENSE file for details.