Jaal

How to: your first orchestration

From an empty space to a running, durable, parallel program in about ten minutes.

  1. Create your empty space

    Open ide.empty-space.io, choose Create your empty space, and type your email. Your space is named from it, like com.gmail.you; every project you make lives under that package. You need an invite word for now.

  2. Make a project

    New project (Java), name it (one word, like album). Its package is your space plus the name: com.gmail.you.album. Python is in progress.

  3. Write the orchestrator as plain code

    The services it calls are typed fields; the logic is ordinary code. A parallel loop is one annotation.

    import jaal.x.Parallel;
    
    public class Main extends jaal.x.Service<Integer, Integer> {
        private jaal.x.Service<Integer, Integer> square;   // a hole: answered by a published service
    
        @Override
        public Integer invoke(Integer value) {
            int n = 3;
            int[] out = new int[n];
            for (@Parallel int i = 0; i < n; i++) {          // three iterations, run together
                int x = value + i;
                out[i] = square.invoke(x);
            }
            return out[0] + out[1] + out[2];
        }
    }

    As you type, the IDE checks it with the compiler: a line that cannot be made durable is refused by name, with the fix.

  4. Save

    Save the file; the check already ran as you type. (Python: its Java is generated on save; running it end to end is in progress.)

  5. Make it an endpoint

    Run this answers the typed fields (its "holes") with stubs while you try things out; New endpoint fills each one with a published service.

  6. Deploy and send

    Deploy places the endpoint on a node; Send gives it work. Calls that do not depend on each other run together, because the compiler proved they can.

  7. Watch, crash, finish

    Every step is recorded as it settles. Stop the node in the middle: start it again and the run finishes, with no settled call repeated. Open the run: its graph and its timeline. Stepping through it: planned.

Where things run

The IDE

Your own cockpit and workspace, in the browser.

The nodes

Plain JVMs that hold no state of their own; the record lives in Postgres.

Engines and leaves

Python code and the CUDA core (on our simulator so far) run in their own processes, called like any service; vLLM, Triton and llama.cpp are being built.