I mean by portable that I could run my workflow on my laptop, then by changing one parameter run it on the head node of our cluster, and then by moving to a Docker swarm environment by changing one parameter.
Perhaps my definition of portability is wrong, but when I think of a program as being portable I am using the 1980's definition of the term.
What you seem to be saying is that when you run the workflow you don't want to know where the execution happens. This may or may not be desirable (when you have very large data sets, not so easy).
I'm not 100% sure what you mean by node -- is this the same as the Nextlow term "process" which is the the unit of work (e.g. BLAST this database)/vertex in the workflow graph.
In Nextflow, you can associate a different "executor" with the each process.. So some processes can run on the local machine, some on docker etc. Of course there are limits as there are only a few natively supported in Nextflow itself.