Skip to content

Relicense from AGPL-3.0 to GPL-3.0 - #2364

Merged
lawrencecchen merged 2 commits into
mainfrom
license-agpl-to-gpl
Mar 30, 2026
Merged

lawrencecchen merged 2 commits into
mainfrom
license-agpl-to-gpl

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Mar 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Replaces AGPL-3.0 with GPL-3.0 as the open source license. Keeps the dual-license structure (GPL + commercial).
  • Updates LICENSE file, all README translations, CONTRIBUTING.md, and package.json files.
  • Historical changelog/project entries left unchanged.

Why

AGPL's network-use clause (Section 13) is irrelevant for a desktop app but triggers blanket corporate bans. Multiple companies have emailed saying their org bans AGPL, blocking adoption.

GPL-3.0 still requires any distributed fork to publish its full source under GPL, preventing proprietary "Cursor-style" commercial forks. It drops only the network-use clause, which cmux never needed.

This matches Zed's approach: GPL for the editor, AGPL only for server components (which cmux doesn't have).

What stays the same

  • Copyleft protection: forks must stay open source
  • Commercial dual-license: orgs that can't do GPL can still buy a commercial license
  • Copyright ownership: Manaflow, Inc. retains full copyright
  • Personal/experimental forks: fully allowed (GPL permits private modifications without conditions)

Summary by cubic

Relicensed the project from AGPL-3.0-or-later to GPL-3.0-or-later; the dual-license (GPL + commercial) remains. Updated LICENSE and references in package.json, web/package.json, web/package-lock.json, CONTRIBUTING, and all README translations, and fixed French/Italian grammar in the license sections.

Migration

  • No code changes or user action required.
  • New contributions are under GPL-3.0-or-later; the commercial option remains available.

Written for commit dd64953. Summary will update on new commits.

Summary by CodeRabbit

  • Chores
    • Updated project license from AGPL-3.0-or-later to GPL-3.0-or-later (applies to the repository’s license text and package metadata).
  • Documentation
    • Updated license references in localized README files and other documentation to reflect the GPL-3.0-or-later change.

… option)

AGPL's network-use clause is irrelevant for a desktop app, but triggers
blanket corporate bans. GPL-3.0 still requires forks to stay open source
(preventing proprietary commercial forks) while being accepted by most
corporate policies for desktop software.

Changes:
- LICENSE: Replace AGPL-3.0 text with GPL-3.0 text
- Update dual-license header (AGPL → GPL)
- Update all README translations, CONTRIBUTING.md, package.json files
- Historical changelog/project entries left as-is
@vercel

vercel Bot commented Mar 30, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment Mar 30, 2026 11:46am

@coderabbitai

coderabbitai Bot commented Mar 30, 2026 •

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The project’s licensing was changed from AGPL-3.0-or-later to GPL-3.0-or-later across the LICENSE, CONTRIBUTING.md, package manifests, and 20+ localized README files; the LICENSE content was replaced with GPLv3 text and commercial-license references were updated accordingly.

Changes

Cohort / File(s) Summary
Core License Files
LICENSE, CONTRIBUTING.md
Replaced AGPL references with GPL; LICENSE content swapped to GPLv3 text; commercial-license wording updated to reference GPL instead of AGPL.
Package Metadata
package.json, web/package.json
Updated license field from AGPL-3.0-or-later → GPL-3.0-or-later.
Localized Documentation
README.md, README.ar.md, README.bs.md, README.da.md, README.de.md, README.es.md, README.fr.md, README.it.md, README.ja.md, README.km.md, README.ko.md, README.no.md, README.pl.md, README.pt-BR.md, README.ru.md, README.th.md, README.tr.md, README.uk.md, README.vi.md, README.zh-CN.md, README.zh-TW.md
Updated displayed license reference and corresponding compliance/commercial-license sentence from AGPL → GPL; contact email and links unchanged.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 I hopped through files both near and far,
I swapped AGPL for GPL like changing a star.
Docs in many tongues now say “GPL true,”
A tiny rabbit nods—license updated, woohoo!
🥕✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description provides a clear summary of what changed and why, but lacks testing details and the required checklist items specified in the template. Add a Testing section documenting how the license change was verified, and complete the Checklist with appropriate items marked (such as verifying no code breaks and documentation is updated).
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title directly and clearly summarizes the main change: relicensing the project from AGPL-3.0 to GPL-3.0.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch license-agpl-to-gpl

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 26 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="README.fr.md">

<violation number="1" location="README.fr.md:273">
P3: Fix the French grammar typo: use `la GPL` instead of `l'GPL` in the license compliance sentence.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment thread README.fr.md Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@README.fr.md`:
- Line 273: The French article before “GPL” is incorrect in the sentence "Si
votre organisation ne peut pas se conformer à l'GPL, une licence commerciale est
disponible..."; update that occurrence by replacing "à l'GPL" with "au GPL" so
the sentence reads "Si votre organisation ne peut pas se conformer au GPL, une
licence commerciale est disponible..." to fix the grammar in README.fr.md.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 2e6e572a-aef5-457d-bc9e-3827f914dc92

📥 Commits

Reviewing files that changed from the base of the PR and between d6d9130 and 5f3b0cb.

⛔ Files ignored due to path filters (1)
  • web/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (25)
  • CONTRIBUTING.md
  • LICENSE
  • README.ar.md
  • README.bs.md
  • README.da.md
  • README.de.md
  • README.es.md
  • README.fr.md
  • README.it.md
  • README.ja.md
  • README.km.md
  • README.ko.md
  • README.md
  • README.no.md
  • README.pl.md
  • README.pt-BR.md
  • README.ru.md
  • README.th.md
  • README.tr.md
  • README.uk.md
  • README.vi.md
  • README.zh-CN.md
  • README.zh-TW.md
  • package.json
  • web/package.json

Comment thread README.fr.md Outdated
cmux est open source sous [GPL-3.0-or-later](LICENSE).

Si votre organisation ne peut pas se conformer à l'AGPL, une licence commerciale est disponible. Contactez [founders@manaflow.com](mailto:founders@manaflow.com) pour plus de détails.
Si votre organisation ne peut pas se conformer à l'GPL, une licence commerciale est disponible. Contactez [founders@manaflow.com](mailto:founders@manaflow.com) pour plus de détails.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix French article before “GPL”.

Line 273 uses “à l'GPL”, which is grammatically incorrect in French; it should be “au GPL”.

Suggested fix
-Si votre organisation ne peut pas se conformer à l'GPL, une licence commerciale est disponible. Contactez [founders@manaflow.com](mailto:founders@manaflow.com) pour plus de détails.
+Si votre organisation ne peut pas se conformer au GPL, une licence commerciale est disponible. Contactez [founders@manaflow.com](mailto:founders@manaflow.com) pour plus de détails.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Si votre organisation ne peut pas se conformer à l'GPL, une licence commerciale est disponible. Contactez [founders@manaflow.com](mailto:founders@manaflow.com) pour plus de détails.
Si votre organisation ne peut pas se conformer au GPL, une licence commerciale est disponible. Contactez [founders@manaflow.com](mailto:founders@manaflow.com) pour plus de détails.
🧰 Tools
🪛 LanguageTool

[typographical] ~273-~273: Une espace est requise.
Context: ...onible. Contactez founders@manaflow.com pour plus de déta...

(DEUX_POINTS_ESPACE)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.fr.md` at line 273, The French article before “GPL” is incorrect in
the sentence "Si votre organisation ne peut pas se conformer à l'GPL, une
licence commerciale est disponible..."; update that occurrence by replacing "à
l'GPL" with "au GPL" so the sentence reads "Si votre organisation ne peut pas se
conformer au GPL, une licence commerciale est disponible..." to fix the grammar
in README.fr.md.

@greptile-apps

greptile-apps Bot commented Mar 30, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR relicenses cmux from AGPL-3.0-or-later to GPL-3.0-or-later, updating the LICENSE file with the authentic GPL-3.0 text, all 23 localized READMEs, CONTRIBUTING.md, and both package.json files. The dual-license structure (GPL + commercial) and Manaflow's copyright ownership are preserved.

  • The LICENSE file correctly replaces the AGPL-3.0 full text (including Section 13's network-use clause) with the GPL-3.0 full text.
  • All README translations consistently update the license badge and commercial-license note from AGPL to GPL.
  • Historical AGPL references in CHANGELOG.md and PROJECTS.md are intentionally left unchanged, as noted in the PR description.
  • No SPDX license headers exist in source files, so no additional header updates are needed.
  • Two localized READMEs (README.fr.md, README.it.md) have minor grammatical errors introduced by the change: the vowel-elision contractions l'GPL (French) and all'GPL (Italian) are incorrect because GPL starts with a consonant — the previous l'AGPL / all'AGPL forms were correct since AGPL starts with a vowel.
  • web/package-lock.json includes ~64 lines of new @tailwindcss/oxide-wasm32-wasi bundled dependency entries (unrelated to the license change) likely generated by running npm install to regenerate the lockfile.

Confidence Score: 5/5

Safe to merge — all findings are minor P2 style issues in localized documentation with no impact on functionality or the legal validity of the license change.

The license change is legally sound: the existing CLA in CONTRIBUTING.md explicitly grants Manaflow the right to relicense contributions under any license. The LICENSE file contains the authentic GPL-3.0 text. Changes are consistent across all 26 affected files. The only remaining issues are two grammatical contractions in French and Italian READMEs and unrelated lockfile entries — all P2.

README.fr.md and README.it.md have minor grammar issues; web/package-lock.json contains unrelated dependency entries worth a quick confirmation.

Important Files Changed

Filename Overview
LICENSE Replaced authentic AGPL-3.0 full text with authentic GPL-3.0 full text; preamble header and Section 13 correctly reflect GPL-3.0.
CONTRIBUTING.md Contributor license agreement updated from AGPL-3.0-or-later to GPL-3.0-or-later; dual-license CLA text preserved.
README.md License section updated from AGPL-3.0-or-later to GPL-3.0-or-later; no other changes.
README.fr.md License updated to GPL-3.0-or-later, but "à l'GPL" is grammatically incorrect French — should be "à la GPL" since GPL starts with a consonant.
README.it.md License updated to GPL-3.0-or-later, but "all'GPL" is grammatically incorrect Italian — should be "al GPL" since GPL starts with a consonant.
package.json Root package.json license field updated from AGPL-3.0-or-later to GPL-3.0-or-later.
web/package.json Web package.json license field updated from AGPL-3.0-or-later to GPL-3.0-or-later.
web/package-lock.json License field updated to GPL-3.0-or-later, but also includes ~64 lines of new @tailwindcss/oxide-wasm32-wasi bundled dependency entries unrelated to the license change.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[cmux Source Code] --> B{License?}
    B -->|Open Source users| C[GPL-3.0-or-later]
    B -->|Organizations that cannot comply with GPL| D[Commercial License]
    C --> E[Must distribute source of forks]
    C --> F[No network-use clause]
    D --> G[Contact founders@manaflow.com]
    subgraph Previously
        H[AGPL-3.0-or-later]
        H --> I[Section 13: Network-use clause]
        I --> J[Triggers corporate bans]
    end
    subgraph Now
        C
    end
Loading

Comments Outside Diff (1)

  1. web/package-lock.json, line 551-614 (link)

    P2 Unrelated lockfile changes included

    In addition to the license field update, this diff introduces ~64 lines of new @tailwindcss/oxide-wasm32-wasi bundled dependency entries (@emnapi/core, @emnapi/runtime, @emnapi/wasi-threads, @napi-rs/wasm-runtime, @tybys/wasm-util, tslib) that appear unrelated to the license change. These entries were likely picked up when npm install was re-run to regenerate the lockfile.

    This is harmless if npm install was run intentionally, but it's worth confirming these new entries are expected and not a side effect of an accidental package update.

Reviews (1): Last reviewed commit: "Relicense from AGPL-3.0 to GPL-3.0 (keep..." | Re-trigger Greptile

Comment thread README.fr.md Outdated
cmux est open source sous [GPL-3.0-or-later](LICENSE).

Si votre organisation ne peut pas se conformer à l'AGPL, une licence commerciale est disponible. Contactez [founders@manaflow.com](mailto:founders@manaflow.com) pour plus de détails.
Si votre organisation ne peut pas se conformer à l'GPL, une licence commerciale est disponible. Contactez [founders@manaflow.com](mailto:founders@manaflow.com) pour plus de détails.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 French article contraction incorrect after relicensing

The elision l' (short for la) is only used before vowel sounds in French. AGPL started with A (a vowel), so l'AGPL was grammatically correct. GPL starts with G (a consonant), making l'GPL incorrect — it should be la GPL.

Suggested change
Si votre organisation ne peut pas se conformer à l'GPL, une licence commerciale est disponible. Contactez [founders@manaflow.com](mailto:founders@manaflow.com) pour plus de détails.
Si votre organisation ne peut pas se conformer à la GPL, une licence commerciale est disponible. Contactez [founders@manaflow.com](mailto:founders@manaflow.com) pour plus de détails.

Comment thread README.it.md Outdated
cmux è open source sotto [GPL-3.0-or-later](LICENSE).

Se la tua organizzazione non può conformarsi all'AGPL, è disponibile una licenza commerciale. Contatta [founders@manaflow.com](mailto:founders@manaflow.com) per i dettagli.
Se la tua organizzazione non può conformarsi all'GPL, è disponibile una licenza commerciale. Contatta [founders@manaflow.com](mailto:founders@manaflow.com) per i dettagli.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Italian article contraction incorrect after relicensing

The contraction all' is only valid before vowel sounds in Italian. all'AGPL was correct because AGPL begins with the vowel A. GPL begins with the consonant G, so the preposition should be al GPL, not all'GPL.

Suggested change
Se la tua organizzazione non può conformarsi all'GPL, è disponibile una licenza commerciale. Contatta [founders@manaflow.com](mailto:founders@manaflow.com) per i dettagli.
Se la tua organizzazione non può conformarsi al GPL, è disponibile una licenza commerciale. Contatta [founders@manaflow.com](mailto:founders@manaflow.com) per i dettagli.

AGPL starts with a vowel so "l'AGPL" / "all'AGPL" were correct.
GPL starts with a consonant, so use "la GPL" / "alla GPL" instead.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
README.fr.md (1)

273-273: ⚠️ Potential issue | 🟡 Minor

French article for "GPL" differs from previous review guidance.

The current text uses "à la GPL" (feminine), but the previous review comment suggested using "au GPL" (masculine). While both "la GPL" and "le GPL" are found in French technical documentation, the masculine form "au GPL" is more commonly used in technical contexts and was specifically recommended in the earlier review.

Suggested fix to use masculine article
-Si votre organisation ne peut pas se conformer à la GPL, une licence commerciale est disponible. Contactez [founders@manaflow.com](mailto:founders@manaflow.com) pour plus de détails.
+Si votre organisation ne peut pas se conformer au GPL, une licence commerciale est disponible. Contactez [founders@manaflow.com](mailto:founders@manaflow.com) pour plus de détails.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.fr.md` at line 273, Replace the feminine article "à la GPL" with the
masculine form "au GPL" in the README.fr.md text snippet so it matches the prior
review guidance and common technical usage; locate the sentence containing the
phrase "Si votre organisation ne peut pas se conformer à la GPL, une licence
commerciale est disponible. Contactez
[founders@manaflow.com](mailto:founders@manaflow.com) pour plus de détails." and
update only the article before "GPL" to read "au GPL".
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@README.fr.md`:
- Line 273: Replace the feminine article "à la GPL" with the masculine form "au
GPL" in the README.fr.md text snippet so it matches the prior review guidance
and common technical usage; locate the sentence containing the phrase "Si votre
organisation ne peut pas se conformer à la GPL, une licence commerciale est
disponible. Contactez [founders@manaflow.com](mailto:founders@manaflow.com) pour
plus de détails." and update only the article before "GPL" to read "au GPL".

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1434fb15-640b-437f-99d5-746f05973782

📥 Commits

Reviewing files that changed from the base of the PR and between 5f3b0cb and dd64953.

📒 Files selected for processing (2)
  • README.fr.md
  • README.it.md
✅ Files skipped from review due to trivial changes (1)
  • README.it.md

@lawrencecchen
lawrencecchen merged commit 9d9559f into main Mar 30, 2026
15 checks passed
@lawrencecchen
lawrencecchen deleted the license-agpl-to-gpl branch March 30, 2026 11:54
bn-l pushed a commit to bn-l/cmux that referenced this pull request Apr 3, 2026
* Relicense from AGPL-3.0 to GPL-3.0 (keep dual-license with commercial option)

AGPL's network-use clause is irrelevant for a desktop app, but triggers
blanket corporate bans. GPL-3.0 still requires forks to stay open source
(preventing proprietary commercial forks) while being accepted by most
corporate policies for desktop software.

Changes:
- LICENSE: Replace AGPL-3.0 text with GPL-3.0 text
- Update dual-license header (AGPL → GPL)
- Update all README translations, CONTRIBUTING.md, package.json files
- Historical changelog/project entries left as-is

* Fix French and Italian grammar in license section

AGPL starts with a vowel so "l'AGPL" / "all'AGPL" were correct.
GPL starts with a consonant, so use "la GPL" / "alla GPL" instead.

---------

Co-authored-by: Lawrence Chen <lawrencecchen@users.noreply.github.com>
@austinywang austinywang mentioned this pull request Apr 6, 2026
3 tasks
atlascodesai pushed a commit to atlas-fork/cmux-atlas that referenced this pull request Apr 15, 2026
Upstream relicensed in manaflow-ai#2364. Dual-licensing
structure (GPL + commercial) is preserved.

Also fixes check-atlas-docs.sh bash 3.2 compat (mapfile → while-read).

This branch was successfully deployed

1 active deployment
Preview — dd649538 Deployed Mar 30, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant