From 92d13b93835bfb50e6a82bbb0370fe87ad707cb2 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 12:02:37 +0100 Subject: [PATCH 01/19] Run examples on CI --- .github/workflows/ci.yml | 114 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da0458b..33b579c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -98,3 +98,117 @@ jobs: override: true - name: Typos check with custom config file uses: crate-ci/typos@master + + examples: + name: "Examples" + runs-on: ubuntu-latest + timeout-minutes: 60 + steps: + - uses: actions/checkout@v5 + - uses: r7kamura/rust-problem-matchers@v1.1.0 + - run: cargo --version --verbose + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + enable-cache: true + + - name: Install dora + run: cargo install dora-cli --locked + + - name: Start dora daemon + run: dora up + + - name: Echo example + run: | + dora start examples/echo/dataflow.yml --detach --uv + sleep 30 + dora stop + + - name: Keyboard example + run: | + dora start examples/keyboard/dataflow.yml --detach --uv + sleep 30 + dora stop + + - name: MCP server example + run: | + dora start examples/mcp-server/dataflow.yml --detach --uv + sleep 30 + dora stop + + - name: Object detection dataflow + run: | + dora start examples/object-detection/dataflow-object-detection.yml --detach --uv + sleep 30 + dora stop + + - name: Object detection yolo + run: | + dora start examples/object-detection/yolo.yml --detach --uv + sleep 30 + dora stop + + - name: OpenAI server dataflow + run: | + dora start examples/openai-server/dataflow.yml --detach --uv + sleep 30 + dora stop + + - name: OpenAI server dataflow-rust + run: | + dora start examples/openai-server/dataflow-rust.yml --detach --uv + sleep 30 + dora stop + + - name: Python multi-env example + run: | + dora start examples/python-multi-env/dataflow.yml --detach --uv + sleep 30 + dora stop + + - name: Rerun viewer example + run: | + dora start examples/rerun-viewer/dataflow.yml --detach --uv + sleep 30 + dora stop + + - name: Speech to text whisper + run: | + dora start examples/speech-to-text/whisper.yml --detach --uv + sleep 30 + dora stop + + - name: Translation EN to FR + run: | + dora start examples/translation/dataflow_en_fr.yml --detach --uv + sleep 30 + dora stop + + - name: Translation EN to ZH + run: | + dora start examples/translation/dataflow_en_zh.yml --detach --uv + sleep 30 + dora stop + + - name: Translation EN to ZH terminal + run: | + dora start examples/translation/dataflow_en_zh_terminal.yml --detach --uv + sleep 30 + dora stop + + - name: Translation FR to EN + run: | + dora start examples/translation/dataflow_fr_en.yml --detach --uv + sleep 30 + dora stop + + - name: Translation ZH to EN + run: | + dora start examples/translation/dataflow_zh_en.yml --detach --uv + sleep 30 + dora stop + + - name: Stop dora daemon + if: always() + run: dora destroy From 2f6bf7e68df1eecd65c5d40a25852432eec7b38e Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 12:21:49 +0100 Subject: [PATCH 02/19] Cache `cargo install` results --- .github/workflows/ci.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 33b579c..22e8872 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -113,6 +113,17 @@ jobs: with: enable-cache: true + - name: Cache cargo binaries + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin + ~/.cargo/.crates.toml + ~/.cargo/.crates2.json + key: ${{ runner.os }}-cargo-bins + restore-keys: | + ${{ runner.os }}-cargo-bins + - name: Install dora run: cargo install dora-cli --locked From a89b853c4afcac5247c9922f08174712c8d9f182 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 12:24:33 +0100 Subject: [PATCH 03/19] Run `dora build` for all examples --- .github/workflows/ci.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 22e8872..fc596b3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -132,90 +132,105 @@ jobs: - name: Echo example run: | + dora build examples/echo/dataflow.yml --uv dora start examples/echo/dataflow.yml --detach --uv sleep 30 dora stop - name: Keyboard example run: | + dora build examples/keyboard/dataflow.yml --uv dora start examples/keyboard/dataflow.yml --detach --uv sleep 30 dora stop - name: MCP server example run: | + dora build examples/mcp-server/dataflow.yml --uv dora start examples/mcp-server/dataflow.yml --detach --uv sleep 30 dora stop - name: Object detection dataflow run: | + dora build examples/object-detection/dataflow-object-detection.yml --uv dora start examples/object-detection/dataflow-object-detection.yml --detach --uv sleep 30 dora stop - name: Object detection yolo run: | + dora build examples/object-detection/yolo.yml --uv dora start examples/object-detection/yolo.yml --detach --uv sleep 30 dora stop - name: OpenAI server dataflow run: | + dora build examples/openai-server/dataflow.yml --uv dora start examples/openai-server/dataflow.yml --detach --uv sleep 30 dora stop - name: OpenAI server dataflow-rust run: | + dora build examples/openai-server/dataflow-rust.yml --uv dora start examples/openai-server/dataflow-rust.yml --detach --uv sleep 30 dora stop - name: Python multi-env example run: | + dora build examples/python-multi-env/dataflow.yml --uv dora start examples/python-multi-env/dataflow.yml --detach --uv sleep 30 dora stop - name: Rerun viewer example run: | + dora build examples/rerun-viewer/dataflow.yml --uv dora start examples/rerun-viewer/dataflow.yml --detach --uv sleep 30 dora stop - name: Speech to text whisper run: | + dora build examples/speech-to-text/whisper.yml --uv dora start examples/speech-to-text/whisper.yml --detach --uv sleep 30 dora stop - name: Translation EN to FR run: | + dora build examples/translation/dataflow_en_fr.yml --uv dora start examples/translation/dataflow_en_fr.yml --detach --uv sleep 30 dora stop - name: Translation EN to ZH run: | + dora build examples/translation/dataflow_en_zh.yml --uv dora start examples/translation/dataflow_en_zh.yml --detach --uv sleep 30 dora stop - name: Translation EN to ZH terminal run: | + dora build examples/translation/dataflow_en_zh_terminal.yml --uv dora start examples/translation/dataflow_en_zh_terminal.yml --detach --uv sleep 30 dora stop - name: Translation FR to EN run: | + dora build examples/translation/dataflow_fr_en.yml --uv dora start examples/translation/dataflow_fr_en.yml --detach --uv sleep 30 dora stop - name: Translation ZH to EN run: | + dora build examples/translation/dataflow_zh_en.yml --uv dora start examples/translation/dataflow_zh_en.yml --detach --uv sleep 30 dora stop From d57e9c2837b40f31e0eb60776958f2d45dd9e8e8 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 12:27:04 +0100 Subject: [PATCH 04/19] Activate a venv after setting up `uv` Also: Update the `setup-uv` action to v7 --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fc596b3..9bb8415 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -109,9 +109,10 @@ jobs: - run: cargo --version --verbose - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@v7 with: enable-cache: true + activate-environment: true - name: Cache cargo binaries uses: actions/cache@v4 From 16d7454768044c20912fc2bbc6b7274e98581a17 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 12:30:45 +0100 Subject: [PATCH 05/19] Remove unused `$DISPLAY` env variable --- examples/keyboard/dataflow.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/keyboard/dataflow.yml b/examples/keyboard/dataflow.yml index 34e303b..376f3d5 100644 --- a/examples/keyboard/dataflow.yml +++ b/examples/keyboard/dataflow.yml @@ -4,8 +4,6 @@ nodes: path: dora-keyboard outputs: - char - env: - DISPLAY: $DISPLAY - id: rerun path: dora-rerun From 7ac47ea0893d98c6a00302f9863b27fcd21fd5ff Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 12:42:00 +0100 Subject: [PATCH 06/19] Always save cargo binaries cache (also on failure) --- .github/workflows/ci.yml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9bb8415..4de94ac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,16 +114,15 @@ jobs: enable-cache: true activate-environment: true - - name: Cache cargo binaries - uses: actions/cache@v4 + - name: Restore cargo binaries cache + id: cache-cargo-restore + uses: actions/cache/restore@v4 with: path: | ~/.cargo/bin ~/.cargo/.crates.toml ~/.cargo/.crates2.json key: ${{ runner.os }}-cargo-bins - restore-keys: | - ${{ runner.os }}-cargo-bins - name: Install dora run: cargo install dora-cli --locked @@ -239,3 +238,13 @@ jobs: - name: Stop dora daemon if: always() run: dora destroy + + - name: Save cargo binaries cache + if: always() + uses: actions/cache/save@v4 + with: + path: | + ~/.cargo/bin + ~/.cargo/.crates.toml + ~/.cargo/.crates2.json + key: ${{ runner.os }}-cargo-bins From ea42b495d55543d541ebfb08287aecea687573cc Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 13:00:20 +0100 Subject: [PATCH 07/19] Fix stopping by using unique names --- .github/workflows/ci.yml | 60 ++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4de94ac..6419dbb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -133,107 +133,107 @@ jobs: - name: Echo example run: | dora build examples/echo/dataflow.yml --uv - dora start examples/echo/dataflow.yml --detach --uv + dora start examples/echo/dataflow.yml --name echo --detach --uv sleep 30 - dora stop + dora stop --name echo - name: Keyboard example run: | dora build examples/keyboard/dataflow.yml --uv - dora start examples/keyboard/dataflow.yml --detach --uv + dora start examples/keyboard/dataflow.yml --name keyboard --detach --uv sleep 30 - dora stop + dora stop --name keyboard - name: MCP server example run: | dora build examples/mcp-server/dataflow.yml --uv - dora start examples/mcp-server/dataflow.yml --detach --uv + dora start examples/mcp-server/dataflow.yml --name mcp-server --detach --uv sleep 30 - dora stop + dora stop --name mcp-server - name: Object detection dataflow run: | dora build examples/object-detection/dataflow-object-detection.yml --uv - dora start examples/object-detection/dataflow-object-detection.yml --detach --uv + dora start examples/object-detection/dataflow-object-detection.yml --name object-detection --detach --uv sleep 30 - dora stop + dora stop --name object-detection - name: Object detection yolo run: | dora build examples/object-detection/yolo.yml --uv - dora start examples/object-detection/yolo.yml --detach --uv + dora start examples/object-detection/yolo.yml --name yolo --detach --uv sleep 30 - dora stop + dora stop --name yolo - name: OpenAI server dataflow run: | dora build examples/openai-server/dataflow.yml --uv - dora start examples/openai-server/dataflow.yml --detach --uv + dora start examples/openai-server/dataflow.yml --name openai-server --detach --uv sleep 30 - dora stop + dora stop --name openai-server - name: OpenAI server dataflow-rust run: | dora build examples/openai-server/dataflow-rust.yml --uv - dora start examples/openai-server/dataflow-rust.yml --detach --uv + dora start examples/openai-server/dataflow-rust.yml --name openai-server-rust --detach --uv sleep 30 - dora stop + dora stop --name openai-server-rust - name: Python multi-env example run: | dora build examples/python-multi-env/dataflow.yml --uv - dora start examples/python-multi-env/dataflow.yml --detach --uv + dora start examples/python-multi-env/dataflow.yml --name python-multi-env --detach --uv sleep 30 - dora stop + dora stop --name python-multi-env - name: Rerun viewer example run: | dora build examples/rerun-viewer/dataflow.yml --uv - dora start examples/rerun-viewer/dataflow.yml --detach --uv + dora start examples/rerun-viewer/dataflow.yml --name rerun-viewer --detach --uv sleep 30 - dora stop + dora stop --name rerun-viewer - name: Speech to text whisper run: | dora build examples/speech-to-text/whisper.yml --uv - dora start examples/speech-to-text/whisper.yml --detach --uv + dora start examples/speech-to-text/whisper.yml --name whisper --detach --uv sleep 30 - dora stop + dora stop --name whisper - name: Translation EN to FR run: | dora build examples/translation/dataflow_en_fr.yml --uv - dora start examples/translation/dataflow_en_fr.yml --detach --uv + dora start examples/translation/dataflow_en_fr.yml --name translation-en-fr --detach --uv sleep 30 - dora stop + dora stop --name translation-en-fr - name: Translation EN to ZH run: | dora build examples/translation/dataflow_en_zh.yml --uv - dora start examples/translation/dataflow_en_zh.yml --detach --uv + dora start examples/translation/dataflow_en_zh.yml --name translation-en-zh --detach --uv sleep 30 - dora stop + dora stop --name translation-en-zh - name: Translation EN to ZH terminal run: | dora build examples/translation/dataflow_en_zh_terminal.yml --uv - dora start examples/translation/dataflow_en_zh_terminal.yml --detach --uv + dora start examples/translation/dataflow_en_zh_terminal.yml --name translation-en-zh-terminal --detach --uv sleep 30 - dora stop + dora stop --name translation-en-zh-terminal - name: Translation FR to EN run: | dora build examples/translation/dataflow_fr_en.yml --uv - dora start examples/translation/dataflow_fr_en.yml --detach --uv + dora start examples/translation/dataflow_fr_en.yml --name translation-fr-en --detach --uv sleep 30 - dora stop + dora stop --name translation-fr-en - name: Translation ZH to EN run: | dora build examples/translation/dataflow_zh_en.yml --uv - dora start examples/translation/dataflow_zh_en.yml --detach --uv + dora start examples/translation/dataflow_zh_en.yml --name translation-zh-en --detach --uv sleep 30 - dora stop + dora stop --name translation-zh-en - name: Stop dora daemon if: always() From 86df60bb7887529dac972509eb69787da7e19270 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 13:25:43 +0100 Subject: [PATCH 08/19] Revert "Remove unused `$DISPLAY` env variable" This reverts commit 16d7454768044c20912fc2bbc6b7274e98581a17. --- examples/keyboard/dataflow.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/keyboard/dataflow.yml b/examples/keyboard/dataflow.yml index 376f3d5..34e303b 100644 --- a/examples/keyboard/dataflow.yml +++ b/examples/keyboard/dataflow.yml @@ -4,6 +4,8 @@ nodes: path: dora-keyboard outputs: - char + env: + DISPLAY: $DISPLAY - id: rerun path: dora-rerun From 6fed580ec126db3179549fb0a01ff4796d820021 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 13:26:39 +0100 Subject: [PATCH 09/19] Ignore keyboard example for now --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6419dbb..4f5b002 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -138,6 +138,8 @@ jobs: dora stop --name echo - name: Keyboard example + # IGNORE: DISPLAY variable not set in GitHub Actions + if: false run: | dora build examples/keyboard/dataflow.yml --uv dora start examples/keyboard/dataflow.yml --name keyboard --detach --uv From d8c6daef9917b04ed47ac107b45a62b2ac9c59d8 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 14:08:20 +0100 Subject: [PATCH 10/19] Add `dataflow-object-deetction.yml --- .../dataflow-object-detection.yml | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 examples/object-detection/dataflow-object-detection.yml diff --git a/examples/object-detection/dataflow-object-detection.yml b/examples/object-detection/dataflow-object-detection.yml new file mode 100644 index 0000000..c34d6b5 --- /dev/null +++ b/examples/object-detection/dataflow-object-detection.yml @@ -0,0 +1,27 @@ +nodes: + - id: camera + build: pip install -e ../../node-hub/opencv-video-capture + path: opencv-video-capture + inputs: + tick: dora/timer/millis/20 + outputs: + - image + env: + CAPTURE_PATH: 0 + IMAGE_WIDTH: 640 + IMAGE_HEIGHT: 480 + + - id: object-detection + build: pip install -e ../../node-hub/dora-yolo + path: dora-yolo + inputs: + image: camera/image + outputs: + - bbox + + - id: plot + build: pip install -e ../../node-hub/dora-rerun + path: dora-rerun + inputs: + image: camera/image + boxes2d: object-detection/bbox From b93aa932574b99c8fc1d84dcae68c86b8ec4081b Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 15:49:46 +0100 Subject: [PATCH 11/19] Set `OPERATING_MODE: SAVE` for rerun examples --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4f5b002..4644eb8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -154,6 +154,8 @@ jobs: dora stop --name mcp-server - name: Object detection dataflow + env: + OPERATING_MODE: SAVE run: | dora build examples/object-detection/dataflow-object-detection.yml --uv dora start examples/object-detection/dataflow-object-detection.yml --name object-detection --detach --uv @@ -161,6 +163,8 @@ jobs: dora stop --name object-detection - name: Object detection yolo + env: + OPERATING_MODE: SAVE run: | dora build examples/object-detection/yolo.yml --uv dora start examples/object-detection/yolo.yml --name yolo --detach --uv From e62b52f5a43f3d44faf3b1461a4b73a18a742b85 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 17:15:54 +0100 Subject: [PATCH 12/19] Set `OPERATING_MODE: SAVE` at job-level It must be set for `dora up` --- .github/workflows/ci.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4644eb8..03d7503 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -103,6 +103,8 @@ jobs: name: "Examples" runs-on: ubuntu-latest timeout-minutes: 60 + env: + OPERATING_MODE: SAVE steps: - uses: actions/checkout@v5 - uses: r7kamura/rust-problem-matchers@v1.1.0 @@ -154,8 +156,6 @@ jobs: dora stop --name mcp-server - name: Object detection dataflow - env: - OPERATING_MODE: SAVE run: | dora build examples/object-detection/dataflow-object-detection.yml --uv dora start examples/object-detection/dataflow-object-detection.yml --name object-detection --detach --uv @@ -163,8 +163,6 @@ jobs: dora stop --name object-detection - name: Object detection yolo - env: - OPERATING_MODE: SAVE run: | dora build examples/object-detection/yolo.yml --uv dora start examples/object-detection/yolo.yml --name yolo --detach --uv From 70818fdb329ef7ee55e22fe45ab6a8efa8be3e37 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 17:46:43 +0100 Subject: [PATCH 13/19] Also set up system-level deps for example CI job --- .github/workflows/ci.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 03d7503..bd9f372 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -110,6 +110,20 @@ jobs: - uses: r7kamura/rust-problem-matchers@v1.1.0 - run: cargo --version --verbose + - name: Install system-level dependencies + if: runner.os == 'Linux' + run: | + sudo apt update + sudo apt-get install portaudio19-dev + sudo apt-get install libdav1d-dev nasm libudev-dev meson ninja-build + mkdir -p $HOME/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib + mkdir -p $HOME/.rustup/toolchains/1.89.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib + ln -s /lib/x86_64-linux-gnu/libdav1d.so $HOME/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libdav1d.so + ln -s /lib/x86_64-linux-gnu/libdav1d.so $HOME/.rustup/toolchains/1.89.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libdav1d.so + + # Install mingw-w64 cross-compilers + sudo apt install g++-mingw-w64-x86-64 gcc-mingw-w64-x86-64 + - name: Install uv uses: astral-sh/setup-uv@v7 with: From 36130d9816be52431f45a61a394c8f1fd36184c3 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 18:07:21 +0100 Subject: [PATCH 14/19] Disable whisper example on CI --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bd9f372..bfd1092 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -212,6 +212,8 @@ jobs: dora stop --name rerun-viewer - name: Speech to text whisper + # disable because there are no microphones in GitHub Actions + if: false run: | dora build examples/speech-to-text/whisper.yml --uv dora start examples/speech-to-text/whisper.yml --name whisper --detach --uv From cd9f86bd433dba6e21ddf1ce465e51f1d5588aa4 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 18:37:45 +0100 Subject: [PATCH 15/19] Fix: `dora-opus` was archived --- examples/translation/dataflow_en_fr.yml | 2 +- examples/translation/dataflow_en_zh_terminal.yml | 2 +- examples/translation/dataflow_zh_en.yml | 2 +- examples/translation/dataflow_zh_en_terminal.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/translation/dataflow_en_fr.yml b/examples/translation/dataflow_en_fr.yml index b20f0a5..405a9d9 100644 --- a/examples/translation/dataflow_en_fr.yml +++ b/examples/translation/dataflow_en_fr.yml @@ -26,7 +26,7 @@ nodes: # HF_ENDPOINT: https://hf-mirror.com - id: dora-opus - build: pip install -e ../../node-hub/dora-opus + build: pip install -e ../../node-archive/dora-opus path: dora-opus inputs: text: dora-distil-whisper/text diff --git a/examples/translation/dataflow_en_zh_terminal.yml b/examples/translation/dataflow_en_zh_terminal.yml index e586618..dcf8544 100644 --- a/examples/translation/dataflow_en_zh_terminal.yml +++ b/examples/translation/dataflow_en_zh_terminal.yml @@ -25,7 +25,7 @@ nodes: TRANSLATE: false - id: dora-opus - build: pip install -e ../../node-hub/dora-opus + build: pip install -e ../../node-archive/dora-opus path: dora-opus inputs: text: dora-distil-whisper/text diff --git a/examples/translation/dataflow_zh_en.yml b/examples/translation/dataflow_zh_en.yml index b687b99..a80579a 100644 --- a/examples/translation/dataflow_zh_en.yml +++ b/examples/translation/dataflow_zh_en.yml @@ -25,7 +25,7 @@ nodes: TRANSLATE: false - id: dora-opus - build: pip install -e ../../node-hub/dora-opus + build: pip install -e ../../node-archive/dora-opus path: dora-opus inputs: text: dora-distil-whisper/text diff --git a/examples/translation/dataflow_zh_en_terminal.yml b/examples/translation/dataflow_zh_en_terminal.yml index fd03990..d6ba098 100644 --- a/examples/translation/dataflow_zh_en_terminal.yml +++ b/examples/translation/dataflow_zh_en_terminal.yml @@ -25,7 +25,7 @@ nodes: TRANSLATE: false - id: dora-opus - build: pip install -e ../../node-hub/dora-opus + build: pip install -e ../../node-archive/dora-opus path: dora-opus inputs: text: dora-distil-whisper/text From 4800246d421b5ce8e60219dff6c4cc05b8c13b9c Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 18:43:04 +0100 Subject: [PATCH 16/19] Include dora version in cache key to allow update --- .github/workflows/ci.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bfd1092..b7d8453 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -130,6 +130,12 @@ jobs: enable-cache: true activate-environment: true + - name: Get dora-cli version + id: dora-version + run: | + VERSION=$(curl -s https://crates.io/api/v1/crates/dora-cli | jq -r '.crate.max_version') + echo "version=$VERSION" >> $GITHUB_OUTPUT + - name: Restore cargo binaries cache id: cache-cargo-restore uses: actions/cache/restore@v4 @@ -138,7 +144,7 @@ jobs: ~/.cargo/bin ~/.cargo/.crates.toml ~/.cargo/.crates2.json - key: ${{ runner.os }}-cargo-bins + key: ${{ runner.os }}-cargo-bins-${{ steps.dora-version.outputs.version }} - name: Install dora run: cargo install dora-cli --locked @@ -267,4 +273,4 @@ jobs: ~/.cargo/bin ~/.cargo/.crates.toml ~/.cargo/.crates2.json - key: ${{ runner.os }}-cargo-bins + key: ${{ runner.os }}-cargo-bins-${{ steps.dora-version.outputs.version }} From 877c7bcfbc69320e11371f758afc358bee256dc1 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 19:03:03 +0100 Subject: [PATCH 17/19] Remove examples that require a sound device --- .github/workflows/ci.yml | 44 ---------------------------------------- 1 file changed, 44 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b7d8453..4c7b113 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -217,50 +217,6 @@ jobs: sleep 30 dora stop --name rerun-viewer - - name: Speech to text whisper - # disable because there are no microphones in GitHub Actions - if: false - run: | - dora build examples/speech-to-text/whisper.yml --uv - dora start examples/speech-to-text/whisper.yml --name whisper --detach --uv - sleep 30 - dora stop --name whisper - - - name: Translation EN to FR - run: | - dora build examples/translation/dataflow_en_fr.yml --uv - dora start examples/translation/dataflow_en_fr.yml --name translation-en-fr --detach --uv - sleep 30 - dora stop --name translation-en-fr - - - name: Translation EN to ZH - run: | - dora build examples/translation/dataflow_en_zh.yml --uv - dora start examples/translation/dataflow_en_zh.yml --name translation-en-zh --detach --uv - sleep 30 - dora stop --name translation-en-zh - - - name: Translation EN to ZH terminal - run: | - dora build examples/translation/dataflow_en_zh_terminal.yml --uv - dora start examples/translation/dataflow_en_zh_terminal.yml --name translation-en-zh-terminal --detach --uv - sleep 30 - dora stop --name translation-en-zh-terminal - - - name: Translation FR to EN - run: | - dora build examples/translation/dataflow_fr_en.yml --uv - dora start examples/translation/dataflow_fr_en.yml --name translation-fr-en --detach --uv - sleep 30 - dora stop --name translation-fr-en - - - name: Translation ZH to EN - run: | - dora build examples/translation/dataflow_zh_en.yml --uv - dora start examples/translation/dataflow_zh_en.yml --name translation-zh-en --detach --uv - sleep 30 - dora stop --name translation-zh-en - - name: Stop dora daemon if: always() run: dora destroy From 16ef9cbe8916af11d1ee2f77f5565aa06070ec27 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 19:11:43 +0100 Subject: [PATCH 18/19] Debug cache key issues --- .github/workflows/ci.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4c7b113..b74db24 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -133,8 +133,12 @@ jobs: - name: Get dora-cli version id: dora-version run: | - VERSION=$(curl -s https://crates.io/api/v1/crates/dora-cli | jq -r '.crate.max_version') + echo "Fetching dora-cli version from crates.io..." + RESPONSE=$(curl -s https://crates.io/api/v1/crates/dora-cli) + echo "API Response: $RESPONSE" + VERSION=$(echo "$RESPONSE" | jq -r '.crate.max_stable_version // .crate.max_version // "unknown"') echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "Dora version: $VERSION" - name: Restore cargo binaries cache id: cache-cargo-restore @@ -145,6 +149,8 @@ jobs: ~/.cargo/.crates.toml ~/.cargo/.crates2.json key: ${{ runner.os }}-cargo-bins-${{ steps.dora-version.outputs.version }} + restore-keys: | + ${{ runner.os }}-cargo-bins - name: Install dora run: cargo install dora-cli --locked From 9971c53a2abee60996997af3937a7813470cc2ad Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 14 Jan 2026 19:33:00 +0100 Subject: [PATCH 19/19] Add a user agent to crates.io API request --- .github/workflows/ci.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b74db24..2e88ef1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -133,10 +133,7 @@ jobs: - name: Get dora-cli version id: dora-version run: | - echo "Fetching dora-cli version from crates.io..." - RESPONSE=$(curl -s https://crates.io/api/v1/crates/dora-cli) - echo "API Response: $RESPONSE" - VERSION=$(echo "$RESPONSE" | jq -r '.crate.max_stable_version // .crate.max_version // "unknown"') + VERSION=$(curl -s -A "dora-hub-ci (github.com/dora-rs/dora-hub)" https://crates.io/api/v1/crates/dora-cli | jq -r '.crate.max_stable_version // .crate.max_version') echo "version=$VERSION" >> $GITHUB_OUTPUT echo "Dora version: $VERSION"