Skip to content
TraceMote
Open source

AGPL-3.0, and we treat that as a feature

We received this software under the AGPL and we ship it under the AGPL. Both forks are public, every release names the source tag it was built from, and the client says so on its own About screen.

The admin console and the auth backend are our own work rather than a fork, and they are not AGPL. They run as separate services over an ordinary HTTP boundary, and no binary of either is distributed — which is why the forks above are the complete corresponding source for everything we ship.
Compliance

What the licence obliges, and how we meet it

Distributing a modified AGPL client to end users carries a source-availability obligation, and §13 reaches the modified rendezvous server as a network service. Rather than treat that as a compliance chore, we built the release process around it:

  • Both forks are public. The day either one went private, the distribution would be out of compliance — so this is a property the release pipeline checks, not a promise.
  • Every binary names its source. A release is published only once the tag it was built from is public and reachable logged-out. The artifact and the source become available in that order, deliberately.
  • The licence travels in the bundle. Each artifact is checked for the licence file and the About screen’s notice before it is uploaded. If the check fails there is no artifact.
  • A mirror branch, not a pile of patches. Each fork tracks upstream on an untouched branch, so “what did you change” has an exact answer rather than an archaeological one.

If you are evaluating this for an organisation that cares about licence posture, the licensing document in the repository is written for exactly that conversation.

see everything we changed
# the complete patch set, either fork, one command
git clone --recursive https://github.com/tracemote/rustdesk
cd rustdesk
git diff master..tracemote

# every patch is also listed, one row each, in
#   PATCH_MAP.md

Upstream, and credit where it is due

RustDesk is the work of the RustDesk project and its contributors. We are not affiliated with them and we do not speak for them. If you do not need an identity layer, use upstream — it is excellent, and it is the whole reason this exists.

Get started

Read it before you trust it

That is the point of publishing it. Start with the system context document — it is the five-minute version of a very large codebase.