The process substitution feature comes from ksh, from ksh86 initially, but initially, it was only available on systems that had support for /dev/fd/n special files..
That only changed in ksh93u+ released in 2012, where, like with many of the other shells that later added support for process substitution, ksh could resort to named pipe when /dev/fd was not available. ksh93 is often considered experimental and it not fully backward compatible with ksh88, so you'll find that several systems have stuck to ksh88 anyway which never used named pipe as far as I know.
Process substitution was never added to the public domain clone of ksh (pdksh) nor any of its descendants (like mksh or the sh of OpenBSD), though those give a differently worded error message in that case.
So it looks like you have an older version of AT&T ksh and are on a system where /dev/fd is not available, or was not available when ksh was built.
In any case, process substitution is not a POSIX feature. It's only available in AT&T ksh (since 1986), zsh (since 1990) and bash (since 1993), while yash uses <(cmd) and >(cmd) for something else (process redirection). rc and descendants (and to some extent fish) also have the feature but with different syntax.
Here you could just do:
# without arguments for the script: curl -sSl https://appi.sh/launch | sh # with arguments curl -sSl https://appi.sh/launch | sh -s arg1 arg2
Though it wouldn't be appropriate for that very launch script as it is reading from its stdin. Or:
# without arguments for the script: sh -c "$(curl -sSl https://appi.sh/launch)" # with arguments: sh -c "$(curl -sSl https://appi.sh/launch)" sh arg1 arg2
For the whole contents of the script to be passed inline. That would work as long as the script is not too big (fits in the limit of the size of arguments+environment, or the limit on the size of a single argument for those systems that have one like Linux).
In any case, while that script looks like it's written in valid POSIX sh syntax itself, it assumes the system's utilities are GNU-like (see the non-POSIX grep -R or sed -i), so I'd say it's likely not to work on a system that comes with an old version of AT&T ksh.
shis most likely symlinked tobashin which process substitution is supported. Most likely thekshversion you have might not be supporting the process substitutionshshell, as per comment to the accepted answer.