I carried my stories From Python to Node and found Apple's hidden city of Metal

GeemoBeamo1 pts1 comments

GitHub - jahbini/pipeline-demo: How to run the pipeline · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

jahbini

pipeline-demo

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>4 Commits<br>4 Commits

ui

ui

.gitignore

.gitignore

README.md

README.md

package-lock.json

package-lock.json

package.json

package.json

run-first.sh

run-first.sh

ui_server.coffee

ui_server.coffee

View all files

Repository files navigation

pipeline-demo

The starter project for @jahbini/pipeline.<br>Clone, install, run — and in under a minute you'll see the shipped<br>test pipeline execute end-to-end and print a friendly hand-off<br>message telling you where to go next.

This repo is intentionally small. It exists to answer the question<br>"I just heard about @jahbini/pipeline, what do I actually do?"

What you get

A package.json with three things in it:

A dependencies block that pulls the runner from GitHub.

A scripts block that wires the four lifecycle commands you'll<br>use (setup, pipeline, ui, clean).

Nothing else. No source code, no recipes, no overrides — those<br>all come from the runner package or get scaffolded on first run.

Prerequisites

Node 20+ — the runner uses CoffeeScript and node:sqlite.

Python 3.10+ — only if you'll exercise the MLX surface. The<br>test pipeline's step7_python spawns Python; if you skip the<br>setup:py step below it'll fail there.

macOS with Apple Silicon — MLX is Apple-Silicon-only. The<br>rest of the runner is platform-agnostic.

First run, in two commands

git clone https://github.com/jahbini/pipeline-demo my-project<br>cd my-project<br>./run-first.sh

run-first.sh does the three things below for you. The whole thing<br>takes well under a minute on a fresh clone; the slow part is the<br>one-time MLX pip install. The very last thing you see will be the<br>step9_handoff welcome message — "now it's your opportunity" —<br>with concrete suggestions for what to edit next.

If you'd rather see each step, the script is just three lines:

npm install # pulls @jahbini/pipeline from GitHub<br>npm run setup # drops override.yaml, creates .venv with MLX<br>npm run demo # runs the 9-step test pipeline

What each script does

script<br>what it does

npm run setup<br>setup:override + setup:py — one-shot bootstrap

npm run setup:override<br>Copies override.test.yaml from the runner package into override.yaml

npm run setup:py<br>Creates .venv/ and installs MLX (mlx, mlx-lm, mlx-metal at pinned versions)

npm run demo<br>Runs the pipeline named in override.yaml (defaults to test)

npm run pipeline<br>Same as demo — both invoke the runner. Use whichever name feels right.

npm run ui<br>Starts the local UI HTTP server on http://127.0.0.1:4311 (override via UI_PORT)

npm run ui:reset<br>Restores ui/ and ui_server.coffee from the installed package's defaults

npm run clean<br>Wipes every runtime artifact — back to a fresh clone state

The UI is yours to hack

The starter ships with the entire UI stack at the project root,<br>not buried in node_modules/:

your-project/<br>ui/index.html ← static frontend (HTML, CSS, JS) — edit freely<br>ui_server.coffee ← HTTP server (recipe dropdown, state polling,<br>spawn runner) — edit freely too

Both are first-class project files. Modify them however you want —<br>add panels, change the protocol, swap the layout, rip out features.<br>Updates to @jahbini/pipeline in node_modules/ don't touch these<br>files. If you ever want to start over from the package's current<br>defaults, npm run ui:reset overwrites them.

To launch:

npm run ui # then open http://127.0.0.1:4311

The script sets EXEC to ./node_modules/@jahbini/pipeline so the<br>server still finds the shipped recipes, meta devices, and runner.<br>Your ui_server.coffee is in charge of the user experience; the<br>installed package is in charge of the engine.

Making it yours

This starter is the floor, not the ceiling. After npm run demo<br>prints the hand-off message, edit override.yaml:

pipeline: test # ← change this to one of the recipes<br># shipped under config/ in the runner<br>step1_setup:<br>greeting: "hi"<br>value:...

pipeline package runner jahbini demo setup

Related Articles