In my company we're evaluating a licensing matter before proceeding further.

We sell a SaaS service running on CentOS Linux Boxes.

The standard CentOS distribution comes with a binary software licensed under AGPL 3. We'd like to use this unmodified binary software in our SaaS PHP application in order to manipulate some data by issuing some well-formatted shell execute statements. Then the output of this manipulation is then sent to the SaaS service users.

Does this trigger some AGPL clause?

As far as I understand it, if we use (in the way described above, without redistribution and without using source code but only binaries) unmodified binaries we should not violate AGPLv3, should we?

  • What is 'the agpl clause'? Anyone may run any agpl software for any purpose, if you follow obligations stated in the license Commented Jul 21, 2020 at 7:55

1 Answer 1


It seems to me there are two issues here: what are your AGPL obligations with respect to this binary, and do those obligations extend past that software package?

Your AGPL obligations with respect to the binary are clear, from AGPLv3 s13:

Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge

You are not modifying the covered work, so I don't see that this clause is operative in your case. If you were to distribute the unmodified binary, you'd still have the normal GPL source-provision obligations; but you're not doing that.

As for the AGPL obligations extending to cover your software, the FSF is pretty clear that using an AGPL binary "by issuing some well-formatted shell execute statements" doesn't make your work a derivative of the AGPL code:

By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs.

As long as you're not passing complex structure (including but not limited to pointers to regions of shared memory, or files embodying complex structure) it seems to me that you should be fine. Nevertheless, IANAL/IANYL, so you may wish to get professional legal advice before betting a company on this.

  • "Separate programs" doesn't necessarily mean "not a derivative", AFAIK. If extensive knowledge about one program was used in the creation of the other, that might make it a derivative. Commented Jul 22, 2020 at 11:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.