If you're using multiple languages in an answer, your byte count includes the glue that holds them together
The byte count should include all the bytes used for the program. If the program's being run in an unusual way, we use byte penalties for the configuration needed to run it; this is required to stop people putting their entire program into compiler arguments (which is a commonly used loophole in at least C, on some golfing sites).
Piping the result of one program into another is a similar sort of unusual way to run the program, and similarly needs a byte penalty. (Nonetheless, it's sometimes useful despite the penalty; I wrote such an answer here, and had to pay quite a few bytes gluing Jelly to GraphViz via the use of a third programming language; a Jelly answer would have been much longer without being able to call into GraphViz, though, and vice versa, so the combination was worth it.)
If you didn't have such a penalty, it'd be fairly easy to construct 0-byte solutions to arbitrary problems. (IIRC, there's a language in which a program entirely consisting of newlines will output itself plus one extra newline. Pipe that into itself sufficiently many times, pipe the result into Lenguage, and you have the program entirely encoded in the plumbing, with no input bytes for the program itself.)