Quick Start Guide
=================
This page is the shortest no-hardware path from a clean clone to a working
ROBIN run. It validates the FIWARE data layer, Process Intelligence API, and
ROBIN Dashboard without requiring UR10e, Fronius, WAGO, Garmo, the MIL cell
network, private datasets, proprietary credentials, ROS 2 runtime validation, or
the physical demonstrator setup.
For the richer simulated scenario with live dashboard charts, Start-button
control, deviation windows, alerts, and history checks, continue with
:doc:`user_guide/demos` after this hello world passes.
What This Hello World Validates
-------------------------------
By the end of this page you will have:
* a hardware-neutral FIWARE stack running in Docker
* the Process Intelligence API responding with ``"healthy"``
* one demo process created
* one mock measurement ingested into FIWARE
* the measurement read back through the API
* the ROBIN Dashboard able to display the demo process
* one AI-assisted prediction/recommendation generated from mock inputs
.. mermaid::
graph LR
REVIEWER["Reviewer shell"] --> CLI["ROBIN CLI
inside API container"]
CLI --> ORION["Orion-LD
NGSI-LD"]
ORION --> MINTAKA["Mintaka
history API"]
API["Process Intelligence API"] --> ORION
API --> MINTAKA
DASH["ROBIN Dashboard"] --> API
REVIEWER --> API
REVIEWER --> DASH
Prerequisites
-------------
* **Docker** and **Docker Compose** installed and running
* **curl** for API checks
* **jq** for readable JSON output
Python and Poetry are not required for this hello world because the ROBIN CLI is
executed inside the ``robin-alert-processor`` container.
See :doc:`installation` for full setup instructions.
Step 1 - Start the No-Hardware Services
---------------------------------------
The hello world uses the bundled welding profile because the included model
artifact and input feature names are defined by that profile. The command sets
``ROBIN_PROFILE=welding`` explicitly so a local ``.env`` file or shell variable
does not accidentally switch profiles.
Linux:
.. code-block:: bash
ROBIN_PROFILE=welding docker compose up -d \
orion-ld mongo-db timescaledb mintaka alert-processor robin-dashboard
macOS/Docker Desktop:
.. code-block:: bash
ROBIN_PROFILE=welding docker compose \
-f docker-compose.yaml \
-f docker-compose.macos.override.yaml \
up -d \
orion-ld mongo-db timescaledb mintaka alert-processor robin-dashboard
Wait for the API health check:
.. code-block:: bash
until curl -fsS http://localhost:8001/health | jq -e '.status == "healthy"' >/dev/null; do
sleep 2
done
curl -s http://localhost:8001/health | jq '.status'
Expected output:
.. code-block:: text
"healthy"
Step 2 - Create a Demo Process
------------------------------
Use a unique process id so the command remains rerunnable even if previous demo
data was not cleaned up:
.. code-block:: bash
export PROCESS_ID="reviewer-hello-$(date +%s)"
docker exec robin-alert-processor \
python -m robin create-process "$PROCESS_ID" --mode parameter_driven
Expected output contains the generated process id:
.. code-block:: text
Created process: reviewer-hello-... (mode: parameter_driven)
Step 3 - Ingest One Mock Measurement
------------------------------------
Add one mock geometry measurement with the input parameters expected by the
bundled welding profile model:
.. code-block:: bash
docker exec robin-alert-processor \
python -m robin add-measurement "$PROCESS_ID" "${PROCESS_ID}-m001" \
4.9 7.2 \
--speed 10.5 \
--current 120 \
--voltage 18.4 \
--input-param wire_feed_speed_mpm_model_input=10.0 \
--input-param travel_speed_mps_model_input=0.020 \
--input-param arc_length_correction_mm_model_input=0.0
Expected output contains:
.. code-block:: text
Added measurement reviewer-hello-...-m001 for process reviewer-hello-...: 4.9x7.2mm
Step 4 - Read the Measurement Back
----------------------------------
Read the measurement through the Process Intelligence API:
.. code-block:: bash
curl -s "http://localhost:8001/process/${PROCESS_ID}/measurements?last=5" \
| jq '{status, count, source: .debug_info.source, first: .measurements[0]}'
Expected result:
* ``status`` is ``success``
* ``count`` is at least ``1``
* ``source`` is ``mintaka``, ``orion``, or ``troe``
* ``first`` contains the mock geometry values ``4.9`` and ``7.2``
Step 5 - Request an AI-Assisted Prediction
------------------------------------------
Call the AI recommendation endpoint with the same mock process inputs:
.. code-block:: bash
curl -s -X POST http://localhost:8001/ai-recommendation \
-H "Content-Type: application/json" \
-d "{
\"process_id\": \"${PROCESS_ID}\",
\"mode\": \"parameter_driven\",
\"input_params\": {
\"wire_feed_speed_mpm_model_input\": 10.0,
\"travel_speed_mps_model_input\": 0.020,
\"arc_length_correction_mm_model_input\": 0.0
}
}" | jq '{status, mode: .recommendation.mode, prediction: .recommendation.predicted_geometry}'
Expected result:
* ``status`` is ``success``
* ``mode`` is ``parameter_driven``
* ``prediction`` contains predicted geometry values
Step 6 - Check the Dashboard
----------------------------
Open http://localhost:5174, select the generated ``reviewer-hello-...`` process
from the process selector, and confirm the dashboard can display the created
process and measurement.
This hello world does not exercise the richer Start-button simulation, live 3D
visualization, or injected deviation windows. Those are covered by
:doc:`user_guide/demos`.
Bundled Basic Demo Evidence
---------------------------
The repository includes a captured no-hardware basic demo evidence packet with
commands, expected outputs, and screenshots:
* `media/basic-demo/README.md `__
.. figure:: ../media/basic-demo/screenshots/basic-demo-dashboard-live-ops.png
:alt: ROBIN Dashboard Live Ops view showing a no-hardware basic demo process with one measurement.
Basic no-hardware demo in the dashboard after one mock measurement was
ingested and read back through the API.
Success Criteria
----------------
The hello world passes when:
* ``/health`` returns ``"healthy"``
* the ``reviewer-hello-...`` process is created
* one mock measurement is ingested
* the API returns the measurement
* the dashboard can display the process
* the AI recommendation endpoint returns a prediction
Cleanup
-------
To remove only entities created for this hello world without stopping the stack:
.. code-block:: bash
ID_PATTERN=".*${PROCESS_ID}.*"
curl -sG "http://localhost:1026/ngsi-ld/v1/entities" \
--data-urlencode "idPattern=${ID_PATTERN}" \
--data-urlencode "limit=1000" \
| jq -r '.[].id' \
| while read -r ENTITY_ID; do
curl -s -o /dev/null -X DELETE "http://localhost:1026/ngsi-ld/v1/entities/${ENTITY_ID}"
done
Or stop the stack and remove local Docker volumes:
.. code-block:: bash
docker compose down -v
Use the same ``-f docker-compose.yaml -f docker-compose.macos.override.yaml``
prefix for cleanup on macOS if you started the stack with the macOS override.
Next Steps
----------
After the no-hardware hello world passes, run the basic simulated demo:
* :doc:`user_guide/demos` - live dashboard workflow, simulated telemetry,
Start-button control, deviation checks, alerts, and history verification
* :doc:`user_guide/dashboard` - full walkthrough of every dashboard panel
* :doc:`user_guide/api` - REST API exploration and process lifecycle management
* :doc:`user_guide/ai_models` - AI model management, training, and trust
* :doc:`user_guide/profiles` - switch domain profiles such as welding and spray
coating