Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# JGengine Agent Guide

Genre-agnostic pure-TypeScript game engine SDK plus its agent skills. Published packages: `packages/*` (npm, AGPL-3.0-only); everything else private. Repo map, package table, website story: `README.md`.
Genre-agnostic pure-TypeScript game engine SDK plus its agent skills. Published packages: `packages/*` (npm, Apache-2.0); everything else private. Repo map, package table, website story: `README.md`.

## Rules that always apply

Expand Down
864 changes: 203 additions & 661 deletions LICENSE

Large diffs are not rendered by default.

37 changes: 37 additions & 0 deletions LICENSING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Licensing FAQ

JGengine's first-party packages (`jgengine`, `@jgengine/*`) are licensed under the
[Apache License 2.0](LICENSE) with a [`NOTICE`](NOTICE) attribution file. This replaces
the project's prior AGPL-3.0-only copyleft.

## What Apache-2.0 lets you do

- **Commercial use.** Ship a paid game, a studio product, or a hosted service built on the engine.
- **Closed source.** You do **not** have to open-source your game or your engine modifications.
The AGPL "run-it-as-a-service, share-the-source" obligation is gone.
- **Modify and redistribute.** Fork it, patch it, bundle it — under Apache-2.0's standard terms
(patent grant included).

## The one condition — keep the NOTICE

Apache-2.0 §4(d) requires that derivative works retain the attribution notices in the
[`NOTICE`](NOTICE) file. In practice: keep a readable copy of `NOTICE` — which credits
**https://jgengine.com** — with what you distribute (a `NOTICE` file in your build, in your
docs, or in an about/credits screen wherever third-party notices normally appear). That is the
attribution mechanism the maintainer wants; there is no separate ad clause or copyleft.

You must also retain the `LICENSE` copy and existing copyright/attribution notices, and mark
files you changed — the standard Apache-2.0 redistribution conditions.

## What this does NOT relicense

- **Third-party and ported code.** Anything harvested, ported, or inspired from another project
keeps its own upstream license. See [CREDITS.md](CREDITS.md).
- **Assets.** Bundled or pulled models, sprites, icons, audio, and materials keep their own asset
licenses (e.g. CC0). Apache-2.0 covers JGengine's own source, not the art.

## Prior AGPL versions

Releases published before this change were AGPL-3.0-only and remain available under that license;
the relicense applies going forward. If in doubt about a specific version, check that version's
`LICENSE`.
15 changes: 15 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
JGengine
https://jgengine.com

Copyright 2026 JGengine authors

This product includes software developed as part of JGengine (https://jgengine.com).

Licensed under the Apache License, Version 2.0. Per Section 4(d) of that License,
any use or redistribution of this software or works derived from it must retain
this attribution to JGengine (https://jgengine.com), by keeping a readable copy of
this NOTICE file with the distribution.

Third-party and ported code and assets bundled with or referenced by JGengine keep
their own licenses and attributions; see CREDITS.md. This NOTICE covers only
JGengine's own first-party code.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

# jgengine

**TypeScript game framework SDK for AI agents** — npm `jgengine` / `@jgengine/*` · site [jgengine.com](https://jgengine.com) · agent skills ship inside every package tarball (`node_modules/@jgengine/<pkg>/skills/`).
**agent-first game framework SDK** — npm `jgengine` / `@jgengine/*` · site [jgengine.com](https://jgengine.com) · agent skills ship inside every package tarball (`node_modules/@jgengine/<pkg>/skills/`).

> Not related to automotive “JG Engines” / “JG Engine Dynamics”. This is software — a pure-TypeScript **framework** (entity stores, commands, catalogs, multiplayer seams, R3F shell), not an ECS and not a general-purpose 3D engine.

Expand Down Expand Up @@ -95,6 +95,6 @@ and go star his work.

## License

[AGPL-3.0-only](LICENSE).
[Apache-2.0](LICENSE), with a [`NOTICE`](NOTICE) attribution file. Full FAQ: [LICENSING.md](LICENSING.md).

**Who this fits.** AGPL is intentional for network-hosted engine derivatives: if you modify the engine and run it as a service, share the source. It is a good fit for OSS, research, and agent-built prototypes. **Shipping a closed commercial product on the engine needs a legal read** (and often a dual-license conversation with the maintainer) — do not assume AGPL is “permissive free.”
**In short.** Apache-2.0 permits commercial and closed-source use — ship a paid game on the engine, no dual-license conversation needed. The one condition: keep the [`NOTICE`](NOTICE). Apache §4(d) requires derivative works to retain it, and it credits jgengine.com. This replaces the project's prior AGPL-3.0 copyleft. Third-party and ported code and assets keep their own licenses — see [CREDITS.md](CREDITS.md).
2 changes: 1 addition & 1 deletion apps/web/src/components/Layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ export function Footer() {
</div>
</div>
<p className="mt-12 border-t border-white/[0.05] pt-6 text-xs text-slate-600">
AGPL-3.0 · Open source ·{" "}
Apache-2.0 · Open source ·{" "}
<a href={REPO_URL} className="text-slate-500 underline decoration-slate-700 underline-offset-2 transition hover:text-slate-300">
Noisemaker111/jgengine
</a>
Expand Down
2 changes: 1 addition & 1 deletion apps/web/src/routes/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ function Home() {
<span className="absolute inline-flex h-full w-full animate-ping rounded-full bg-emerald-400 opacity-60" />
<span className="relative inline-flex h-1.5 w-1.5 rounded-full bg-emerald-400" />
</span>
Pure TypeScript · Multiplayer-ready · AGPL-3.0
Pure TypeScript · Multiplayer-ready · Apache-2.0
</p>
<h1
className="animate-fade-up mt-7 text-balance text-[2.6rem] font-bold leading-[1.05] tracking-tighter text-slate-50 sm:text-7xl"
Expand Down
4 changes: 2 additions & 2 deletions apps/web/src/routes/why.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,8 @@ const PROS = [

const CONS = [
{
title: "AGPL-3.0 — copyleft",
body: "The published packages are AGPL-3.0-only. Great for open source; if you need a closed-source commercial build, factor that in up front rather than late.",
title: "Apache-2.0 — keep the NOTICE",
body: "The published packages are Apache-2.0: commercial and closed-source use is fine. The one string attached — keep the NOTICE crediting jgengine.com in what you ship.",
},
{
title: "Opinionated render shell",
Expand Down
2 changes: 1 addition & 1 deletion packages/assets/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "@jgengine/assets",
"version": "0.10.0",
"description": "Self-generating, license-verified index of thousands of CC0 3D models for JGengine. Sources fetch from providers' own CDNs at pull time; the npm tarball ships only the typed index and CLI (no GLB bytes).",
"license": "AGPL-3.0-only",
"license": "Apache-2.0",
"type": "module",
"sideEffects": false,
"repository": {
Expand Down
Loading
Loading