Наиболее понятный и простой подход, который я видел, заключается в том, чтобы поместить вашу версию командной строки в отдельный исполняемый файл в виде простой программы Foundation, а затем заставить вашу программу Cocoa просто вызывать ее, обрабатывая пользовательский интерфейс. Делая это таким образом, вы избавляетесь от многих вещей, которые вам нужно обойти. Затем вы можете установить ссылки на вашу версию командной строки, где вам нравится.
Если вам не нравится использовать NSTask
для этого, поместите свою логику в общую инфраструктуру и наложите поверх нее приложения с графическим интерфейсом и командной строкой.