After digging through the original code, I think it may have to do something with how the method that sends the key commands is handled. I believe it waits for some kind of return value indicating whether or not the key command was actually received by the target application. With one slave, that single round trip probably isn't noticeable. Once you have four slaves, though, that's a lot of extra time. If your brother could offer any advice, that would be great. The function of interest is AXUIElementPostKeyboardEvent. The source is available on the project site.