Jarvis workflow builder
Jarvis is a node-graph workflow builder. You drag nodes onto a canvas, wire them together, and run the graph: nodes report their status as they execute and their outputs feed the nodes downstream. What makes it a Mantis workflow builder rather than a generic one is the Mantis Control node family, which drives the same panels you use by hand.
Where to find it
Jarvis is a full-page app at /workflows, not a panel inside a space.
Heads up
There is a Jarvis Builder entry under View > Agents, but it does not currently render the builder. Use the /workflows route.
The page has a collapsible app sidebar on the left with three items:
- Builder: the canvas.
- Workflows: your saved workflows.
- Save Workflow: saves the graph currently in the Builder, prompting for a name the first time.
Switching away from Builder with unsaved changes on a never-saved workflow prompts you to save or discard first.
The header menubar
Along the top of the Builder:
| Menu | Items |
|---|---|
| File | Save (Ctrl+S), Save As… (Ctrl+⇧+S), Import (Ctrl+I), Export (Ctrl+E), Share (copy JSON) |
| Workflow | Schedule (disabled until the workflow is saved) |
| View | Show Minimap, Snap to Grid |
Import reads a workflow JSON file and replaces the canvas. Export downloads the graph as workflow.json. Share copies the same JSON to your clipboard.
On the right: a Webhook button, a save icon whose tooltip warns when there are unsaved changes, the Run button, and a fullscreen toggle.
There is no New and no Load in this menubar. Both live on the Workflows tab.
The canvas
Pan by dragging the background, zoom with the wheel. A toolbar in the bottom-left has fit-view, zoom in, zoom out, reset view and grid-snap buttons. Right-click opens a context menu with Copy, Paste and Delete; right-clicking inside a container node adds Add Node, which drops a node directly into that container.
The round button in the top-right corner opens the assistant.
The Node Palette
The palette is a floating, draggable, resizable window titled Node Palette. It starts near the top-left of the canvas and remembers wherever you move it. Drag its header to reposition it, drag its edge to resize.
It has a Search nodes… box and groups nodes by category, with Mantis Control and Flow Control pinned to the top and a Recently Used group above them once you have used a few. Click a node to add it, or drag it onto the canvas.
Nodes
Mantis Control
These nodes drive Mantis itself. Each takes an optional Client ID (leave it empty to target your current session) and an Action dropdown that decides which of the node’s other fields appear. All of them return success and message.
| Node | What it drives |
|---|---|
| Bags Panel | Open or close the bags panel, list bags, read a bag’s contents |
| Map Panel | Open or close the map, select a point by id, search points, backend search with a nearest-neighbor count and an optional layer |
| Workflow Panel | Find an agent, create an agent, create a workflow, run a workflow |
| Vignettes Panel | Create vignettes (empty, from a selection, or from a bag), list, view, edit, duplicate, delete, highlight their points, toggle visibility |
| Notebook Panel | Create and manage notebook cells |
| Notebook Execution Panel | Manage notebook sessions and run code remotely |
| Plotting Panel | Configure and control plots |
| Macros Map | Automate bag creation, and install, record or create macros |
| Journeys Panel | Drive the Journeys panel |
| Agent | Create, run or delete a Mantis agent |
| Workflow | Run another Mantis workflow by id, with a user query |
Flow Control
- Loop: repeats the nodes inside it. Takes Max Iterations and an End Condition written as a Python expression. Outputs
last_responseand aniterationsarray. - Conditional: a container whose Condition Function is a Python function returning true or false. Outputs
condition_resultandexecuted_steps. - If / Else: compares a Left Value and a Right Value for equality and branches on the result.
- Merge: merges a JSON array of objects into one, later entries overriding earlier ones, with an optional Deep Merge checkbox.
- Wait: pauses execution, with optional jitter.
Advanced
- Custom Python: write Python directly. Its inputs and outputs are inferred from the code you write.
There is no email node, no database node, no generic HTTP node, and no comment node.
Configuring a node
Double-click a node to open its configuration window, titled <Node> Configuration. It is draggable and resizable, and it shows only the fields that apply to the action you picked. Required fields are marked with a red asterisk.
Fields that support it have a Fixed / Expression toggle, so a value can be either typed literally or computed from upstream output.
The Agent node is the clearest example: Action switches between Create Agent, Run Agent and Delete Agent. Create shows Agent Name and Instructions; Run shows Agent ID (a picker over your agents) and User Query; Delete shows only Agent ID. There is no separate node-name or prompt field.
Data mapping
Every field has a small database button beside it that opens the Data Mapping window. That window lists the outputs of every upstream node, grouped by source node and marked where they come from a nested container or a loop.
Drag an output token out of the Data Mapping window and drop it into a field to reference it. There is no line-drawing canvas; mapping is drag-a-token-into-a-field.
Edges
Drag from a node’s output handle to another node’s input handle to connect them.
Clicking an edge opens Configure Edge, which has exactly one control, Kind:
| Kind | Meaning |
|---|---|
| Default | Standard sequential connection |
| Parallel | Execute multiple targets in parallel |
| If True | Branch taken when the condition is true |
| If False | Branch taken when the condition is false |
Edges carry no label and no condition of their own. The branch logic lives on the Conditional node’s Python evaluator, or on If / Else’s comparison; the If True and If False kinds only mark which downstream path belongs to which outcome.
Building a workflow
- Add a node. Open the Node Palette, find Agent, and drag it onto the canvas.
- Configure it. Double-click the node, set Action to Run Agent, choose an agent in Agent ID, and type into User Query.
- Wire it up. Drag from the Agent node’s output handle to the next node’s input handle, then click the edge if you need a kind other than Default.
- Save. File > Save, or Save Workflow in the sidebar. Scheduling and webhooks both require a saved workflow.
- Run. Click Run. Each node reports its own status as the run progresses.
Running and reading results
Runs stream over a websocket, so node statuses update live. If that socket drops mid-run, the run is marked cancelled.
The Execution Results window has three tabs:
- Current: the run in progress, or the last one, node by node. With nothing to show it reads “No active execution”.
- History: previous runs of this workflow. Requires a saved workflow; otherwise it reads “Save workflow to view history”.
- Stats: successful and failed run counts.
The window remembers its position, size and active tab between visits.
Scheduling
Workflow > Schedule opens the schedule dialog, which is cron-only.
Toggle Enable Schedule, then either pick a preset (Every minute, Every 5 minutes, Every hour, Every day at midnight, Every Monday at 9 AM) or type a Custom Cron Schedule. The dialog links to crontab.guru for help with expressions.
The workflow must already be saved; the Schedule item is disabled otherwise. While a scheduled run is executing, a “Live Scheduled Execution” badge appears in the header.
Webhook trigger
The Webhook button in the header opens a popover with a POST endpoint for this workflow and a copy button. Any JSON body you post is available inside the workflow as payload.
This is the only event trigger Jarvis has. There is no file-watch trigger and no folder trigger. Unsaved workflows have no webhook: the button is disabled, with the tooltip “Save this workflow to generate a webhook URL.”
The assistant
The round button in the canvas’s top-right corner opens a chat window titled AI Assistant, with the input placeholder “Ask about your workflow…”.
Beneath the input are three quick actions that prefill a prompt: Optimize (“Help me optimize this workflow”), Execute (“Execute the current workflow”) and Results (“Show me workflow execution results”). Beyond those it is free chat about the workflow. It does not suggest nodes, auto-configure them, or generate a workflow from a description.
The Workflows tab
Workflows in the app sidebar lists your saved workflows as cards, with a Search workflows… box, a Refresh button, a notification-settings button, and New Workflow. Cards show whether a workflow is scheduled and whether it can be triggered by webhook. Clicking one loads it into the Builder.
Read nextAgno Workflow BuilderThe other workflow builder, and when to use it instead.