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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
29 changes: 6 additions & 23 deletions COMMERCIAL.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,12 @@
# Commercial Licensing
# Licensing

`@cacheplane/langgraph` is source-available software dual-licensed under:
The libraries in this repository (`@cacheplane/langgraph`, `@cacheplane/chat`, and all related packages) are released under the **MIT License**. You are free to use, modify, and distribute them in any project — commercial or noncommercial — at no cost. See [`LICENSE`](./LICENSE).

- **PolyForm Noncommercial 1.0.0** — free for noncommercial use (see [`LICENSE`](./LICENSE))
- **Angular Agent Framework Commercial License** — required for commercial use (see [`LICENSE-COMMERCIAL`](./LICENSE-COMMERCIAL))
## Minting Service

## What requires a commercial license?
The cacheplane minting service (`apps/minting-service/`) is a proprietary internal service and is not covered by the MIT License. See `apps/minting-service/LICENSE` for its terms.

Any use in a for-profit product, service, or organization requires a paid commercial license. This includes:
## Questions

- Production applications at for-profit companies
- SaaS products or internal tools at revenue-generating organizations
- Consulting or client work where the software is deployed commercially

## License tiers

| Tier | Price | Scope |
|---|---|---|
| **Developer Seat** | $500 / seat / year | One developer, all environments, 12-month release lock |
| **App Deployment** | $2,000 / app (one-time) | One named application, all developers, perpetual for version |
| **Enterprise** | Custom | Volume licensing, priority support, custom contract |

## Purchase or inquire

- Website: https://cacheplane.ai/pricing
- Website: https://cacheplane.ai
- Email: hello@cacheplane.ai

See [`LICENSE-COMMERCIAL`](./LICENSE-COMMERCIAL) for the full commercial license terms.
159 changes: 18 additions & 141 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,144 +1,21 @@
PolyForm Noncommercial License 1.0.0

<https://polyformproject.org/licenses/noncommercial/1.0.0>
MIT License

Copyright (c) 2026 Brian Love d/b/a cacheplane

## Acceptance

In order to get any license under these terms, you must agree
to them as both strict obligations and conditions to all
your licenses.

## Copyright License

The licensor grants you a copyright license for the
software to do everything you might do with the software
that would otherwise infringe the licensor's copyright
in it for any permitted purpose. However, you may
only distribute the software according to Distribution
License and make changes or new works based on the
software according to Changes and New Works License.

## Distribution License

The licensor grants you an additional copyright license
to distribute copies of the software. Your license
to distribute covers distributing the software with
changes and new works permitted by Changes and New
Works License.

## Notices

You must ensure that anyone who gets a copy of
any part of the software from you also gets a
copy of these terms or the URL for them above,
as well as copies of any plain-text lines beginning
with `Required Notice:` that the licensor provided
with the software. For example:

> Required Notice: Copyright (c) 2026 Brian Love d/b/a cacheplane

## Changes and New Works License

The licensor grants you an additional copyright license
to make changes and new works based on the software
for any permitted purpose.

## Patent License

The licensor grants you a patent license for the
software that covers patent claims the licensor can
license, or becomes able to license, that you would
infringe by using the software.

## Noncommercial Purposes

Any noncommercial purpose is a permitted purpose.

## Personal Uses

Personal use for research, experiment, and testing for
the benefit of public knowledge, personal study, private
entertainment, hobby projects, amateur pursuits, or religious
observance, without any anticipated commercial application,
is use for a noncommercial purpose.

## Noncommercial Organizations

Use in the scope of an organization with no substantial
commercial activity is use for a noncommercial purpose.
Substantial commercial activity does not include
providing software to an organization with substantial
commercial activity if the software is not itself
a commercial product.

## Fair Use

You may have "fair use" rights for the software under
the law. These terms do not limit them.

## Free Trial

Use to evaluate whether the software suits a particular
application for less than 32 consecutive calendar days,
on behalf of you or your organization, is use for a
noncommercial purpose.

## No Other Rights

These terms do not allow you to sublicense or transfer
any of your licenses to anyone else, or prevent the
licensor from granting licenses to anyone else. These
terms do not imply any other licenses.

## Patent Defense

If you make any written claim that the software
infringes or contributes to infringement of any patent,
your patent license for the software granted under
these terms ends immediately. If your employer makes
such a claim, your patent license ends immediately for
work on behalf of your employer.

## Violations

The first time you are notified in writing that you
have violated any of these terms, and you stop your
violation within 30 days after your notification, your
license continues forever. Otherwise, your license
ends immediately.

## No Liability

***As far as the law allows, the software comes as is,
without any warranty or condition, and the licensor
will not be liable to you for any damages arising out
of these terms or the use or nature of the software,
under any kind of legal claim.***

## Definitions

The **licensor** is the individual or entity offering
these terms, and the **software** is the software the
licensor makes available under these terms.

**You** refers to the individual or entity agreeing
to these terms.

**Your organization** is any legal entity, sole
proprietorship, or other kind of organization that
you work for, plus all organizations that have control
over, are under the control of, or are under common
control with that organization. **Control** means
ownership of substantially all the assets of an entity,
or the power to direct its management and legal affairs.

**Your licenses** are all the licenses granted to you
for the software under these terms.

**Use** means anything you do with the software
requiring one of your licenses.

**Trademark** means trademarks, service marks, and
similar rights.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
22 changes: 3 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<img alt="npm version" src="https://img.shields.io/npm/v/@cacheplane%2Fangular?color=6C8EFF&labelColor=080B14&style=flat-square" />
</a>
<a href="./LICENSE">
<img alt="License: PolyForm Noncommercial + Commercial" src="https://img.shields.io/badge/license-PolyForm%20Noncommercial%20%2B%20Commercial-6C8EFF?labelColor=080B14&style=flat-square" />
<img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-6C8EFF?labelColor=080B14&style=flat-square" />
</a>
<a href="https://angular.dev">
<img alt="Angular 20+" src="https://img.shields.io/badge/Angular-20%2B-6C8EFF?labelColor=080B14&style=flat-square" />
Expand Down Expand Up @@ -120,19 +120,6 @@ That's it. `chat.messages()` is an Angular Signal. Bind it directly in your temp

---

## Pricing

| Tier | Price | Use Case |
|---|---|---|
| **Community** | Free | Noncommercial use — personal projects, academic, research, non-profit |
| **Developer Seat** | $500 / seat / year | Commercial use — 12-month release window locked at purchase |
| **Application Deployment** | $2,000 / app | One-time per application — covers dev, staging, and prod |
| **Enterprise** | Custom | Volume licensing, priority support, custom contract |

[Full pricing details and license terms →](https://cacheplane.ai/pricing)

---

## Documentation

- [Getting Started](https://cacheplane.ai/docs/getting-started)
Expand All @@ -145,9 +132,6 @@ That's it. `chat.messages()` is an Angular Signal. Bind it directly in your temp

## License

`@cacheplane/langgraph` is source-available software dual-licensed:

- **PolyForm Noncommercial 1.0.0** — free for noncommercial use (personal projects, academic, research, non-profit internal tooling). See [`LICENSE`](./LICENSE).
- **Angular Agent Framework Commercial License** — required for any for-profit or revenue-generating use. See [`LICENSE-COMMERCIAL`](./LICENSE-COMMERCIAL) and [`COMMERCIAL.md`](./COMMERCIAL.md).
**MIT** — free for any use. See [`LICENSE`](./LICENSE).

This is **not** an open-source license. Commercial use — including use in a for-profit product, service, or organization — requires a paid commercial license. See [pricing](https://cacheplane.ai/pricing).
`@cacheplane/langgraph` and all libraries in this repository are released under the [MIT License](./LICENSE). You are free to use, modify, and distribute them in both commercial and noncommercial projects without restriction.
13 changes: 9 additions & 4 deletions LICENSE-COMMERCIAL → apps/minting-service/LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,13 @@ Commercial License
Copyright (c) 2026 Brian Love d/b/a cacheplane. All rights reserved.

This Commercial License ("License") governs commercial use of the
@cacheplane/langgraph software ("Software"). Use of the Software for
commercial purposes requires a valid license purchased from cacheplane.
cacheplane minting service ("Software"), located in apps/minting-service/
of the angular-agent-framework repository. This License applies solely to
the minting service component and does not govern any other part of the
repository, which is released separately under the MIT License.

Use of the Software for commercial purposes requires a valid license
purchased from cacheplane.

--- LICENSE TIERS ---

Expand Down Expand Up @@ -36,12 +41,12 @@ applications, in accordance with the scope of the purchased tier.

Restrictions. You may not:
(a) sublicense, sell, resell, or transfer the Software as a standalone
product or library;
product or service;
(b) use the Software outside the scope of your purchased license tier;
(c) remove or alter any copyright, trademark, or proprietary notices.

No Redistribution. You may not distribute the Software or make it available
to third parties as a library, package, or SDK, whether modified or
to third parties as a service, package, or SDK, whether modified or
unmodified, without a separate written agreement with cacheplane.

Warranty Disclaimer. THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF
Expand Down
1 change: 1 addition & 0 deletions apps/minting-service/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "@cacheplane/minting-service",
"version": "0.0.1",
"type": "module",
"license": "SEE LICENSE IN LICENSE",
"private": true,
"dependencies": {
"drizzle-orm": "^0.45.2",
Expand Down
2 changes: 1 addition & 1 deletion apps/website/src/components/landing/FeatureStrip.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const FEATURES = [
{ icon: '\uD83D\uDD17', title: 'Thread persistence', desc: 'MemorySaver-backed threads survive page refreshes via threadId signal and onThreadId callback.' },
{ icon: '\uD83D\uDCD0', title: 'Angular Signals', desc: 'Every state slice is an Angular Signal. Works with OnPush, async pipe, and computed().' },
{ icon: '\uD83E\uDDEA', title: 'MockAgentTransport', desc: 'Deterministic unit testing. Script event sequences and step through them in your specs.' },
{ icon: '\uD83C\uDFE2', title: 'Source-available licensing', desc: 'Free for noncommercial use under PolyForm Noncommercial 1.0.0. Commercial license at $500/seat/year or $2,000/app deployment.' },
{ icon: '\uD83C\uDFE2', title: 'MIT Licensed', desc: 'Free for any use — personal, commercial, or enterprise — under the MIT License. No restrictions.' },
];

export function FeatureStrip() {
Expand Down
28 changes: 5 additions & 23 deletions apps/website/src/components/pricing/PricingGrid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,19 @@ import { tokens } from '@cacheplane/design-tokens';

const PLANS = [
{
name: 'Community',
name: 'Open Source',
price: 'Free',
period: 'noncommercial use',
features: ['PolyForm Noncommercial 1.0.0', 'Personal projects', 'Academic & research', 'Non-profit internal use'],
period: 'forever',
features: ['MIT License', 'All libraries', 'Commercial use welcome', 'Community support'],
highlight: false,
cta: 'Get Started',
ctaHref: 'https://www.npmjs.com/package/@cacheplane/langgraph',
},
{
name: 'Developer Seat',
price: '$500',
period: '/seat/year',
features: ['Commercial use', '12-month license', 'Email support', 'All features'],
highlight: false,
cta: 'Buy License',
ctaHref: '#lead-form',
},
{
name: 'App Deployment',
price: '$2,000',
period: '/app/year',
features: ['Per-application license', 'All environments covered', 'No seat limits', '12-month license term'],
highlight: false,
cta: 'Buy License',
ctaHref: '#lead-form',
},
{
name: 'Enterprise',
price: 'Custom',
period: 'volume licensing',
features: ['Volume licensing', 'Priority support', 'Custom contract'],
period: 'contact for details',
features: ['Priority support', 'SLA', 'Managed service (coming soon)', 'Custom contract'],
highlight: true,
cta: 'Contact Us',
ctaHref: '#lead-form',
Expand Down
12 changes: 7 additions & 5 deletions apps/website/src/components/shared/Footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -220,21 +220,23 @@ export function Footer() {
onMouseLeave={(e) => (e.currentTarget.style.color = tokens.colors.textSecondary)}>
npm Package
</a>
<Link href="/pricing" className="transition-colors" style={{ color: tokens.colors.textSecondary }}
<a href="https://github.com/cacheplane/angular-agent-framework/blob/main/LICENSE"
target="_blank" rel="noopener noreferrer"
className="transition-colors" style={{ color: tokens.colors.textSecondary }}
onMouseEnter={(e) => (e.currentTarget.style.color = tokens.colors.accent)}
onMouseLeave={(e) => (e.currentTarget.style.color = tokens.colors.textSecondary)}>
Commercial License
</Link>
MIT License
</a>
</div>
</div>

{/* Bottom bar */}
<div className="mt-12 pt-8 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-2 text-xs"
style={{ borderTop: `1px solid ${tokens.glass.border}`, color: tokens.colors.textMuted }}>
<span>&copy; {new Date().getFullYear()} Angular Agent Framework. All rights reserved.</span>
<span>PolyForm Noncommercial 1.0.0 &middot; <Link href="/pricing" className="transition-colors"
<span>MIT License &middot; <Link href="/pricing" className="transition-colors"
onMouseEnter={(e) => (e.currentTarget.style.color = tokens.colors.accent)}
onMouseLeave={(e) => (e.currentTarget.style.color = tokens.colors.textMuted)}>Commercial License</Link></span>
onMouseLeave={(e) => (e.currentTarget.style.color = tokens.colors.textMuted)}>Pricing</Link></span>
</div>
</motion.div>
</footer>
Expand Down
2 changes: 1 addition & 1 deletion cockpit/ag-ui/streaming/angular/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"@cacheplane/ag-ui": "^0.0.1",
"@cacheplane/chat": "^0.0.1"
},
"license": "PolyForm-Noncommercial-1.0.0",
"license": "MIT",
"sideEffects": false
}
2 changes: 1 addition & 1 deletion cockpit/ag-ui/streaming/angular/src/app/app.config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
// SPDX-License-Identifier: MIT
import { ApplicationConfig } from '@angular/core';
import { provideFakeAgUiAgent } from '@cacheplane/ag-ui';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
// SPDX-License-Identifier: MIT
import { Component, inject } from '@angular/core';
import { ChatComponent } from '@cacheplane/chat';
import { AG_UI_AGENT } from '@cacheplane/ag-ui';
Expand Down
2 changes: 1 addition & 1 deletion cockpit/ag-ui/streaming/angular/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
// SPDX-License-Identifier: MIT
import { bootstrapApplication } from '@angular/platform-browser';
import { appConfig } from './app/app.config';
import { StreamingComponent } from './app/streaming.component';
Expand Down
2 changes: 1 addition & 1 deletion cockpit/chat/a2ui/angular/src/app/a2ui.component.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
// SPDX-License-Identifier: MIT
import { Component } from '@angular/core';
import { ChatComponent, a2uiBasicCatalog } from '@cacheplane/chat';
import { agent, toAgent } from '@cacheplane/langgraph';
Expand Down
2 changes: 1 addition & 1 deletion cockpit/chat/a2ui/angular/src/app/app.config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
// SPDX-License-Identifier: MIT
import { ApplicationConfig } from '@angular/core';
import { provideAgent } from '@cacheplane/langgraph';
import { provideChat } from '@cacheplane/chat';
Expand Down
Loading
Loading