Celery does need access to the worker source, as really it's just a decorator around your functions that cause them to run differently. However, you can change what a worker node is. You just write a python script on the master node that does exactly what you have been doing (scp, ssh). This becomes the "worker". You'd then make a controlling script (feed file locations, urls, so on so forth) also on the master node and run that using Celery. The Celery server would then handle task scheduling, distribution, either via crontab like periodic taks (here) or you can just wait on the result of a running task (here) and then have it schedule a new one on finish.