Licensing
IntentSharp is source-available under the "IntentSharp Source-Available Commercial License 1.0" in ../../LICENSE. It is not open source. The licensor and seller is C2Consultants LLC.
For users
Free, under section 2 of the license:
- evaluation for 30 consecutive days from first use, once per organization, outside production (section 1.5);
- personal use by an individual, on their own devices, that is not for a business;
- educational use by students and teaching staff at a school, college or university;
- preparing contributions.
A paid commercial license is required, under section 3, for:
- any production use;
- use in or for a product or service that is sold, including hosted and SaaS offerings;
- any use by or for a business after the 30-day evaluation, including development and testing;
- any redistribution, modified or not.
Production use (section 1.6) includes running the software anywhere that serves anyone other than the developer evaluating it, and any use whose output (text, data, SQL or code) is relied on by a business or by anyone other than the developer.
Non-commercial and open-source projects are not automatically free. Past the evaluation period they need a license, and they may email the licensor to ask for a free one (section 2.2).
License keys are confidential and bound to the licensee; they must not be shared or published (section 5.4). Once a year the licensor may ask a user to certify its developer count, and may audit on 30 days' written notice (section 5.5).
There is no change date. The license never converts to an open-source license (section 4). The license is governed by the laws of the State of North Carolina (section 11).
Editions
Annual subscriptions in US dollars. COMMERCIAL-LICENSE.md is the authoritative price list and has the counting rules.
| Edition | Covers | Price per year | Support response |
|---|---|---|---|
| Developer | 1 developer | $349 | 2 business days |
| Team | Up to 10 developers | $1,490 | 2 business days |
| Business | 11 to 50 developers | $4,900 | 2 business days |
| Enterprise | Unlimited developers, one legal entity | $12,000 | 1 business day, priority |
| OEM / redistribution | Shipping IntentSharp to third parties | Quoted, from $25,000 | Priority |
When a subscription lapses, the licensee may keep using any version released on or before the lapse date (the maintenance-until date in its last key), without updates, fixes or support. Versions released after that date refuse the key (COMMERCIAL-LICENSE.md section 3 item 5 and FAQ 7.6).
The purchase path
- Evaluation keys: a 30-day, one-seat key from the evaluation form on the license service at
https://license.intentsharp.com. The service is built and tested, and that host name is bound to its Azure App Service app, but the service is not live yet. - Paid licenses: email
licensing@c2consultants.netwith your company name, the edition you need and the number of developers. That address isLicenseInfo.ContactEmail, andLicenseInfo.PurchaseUrlishttps://intentsharp.com/pricing, which opens once the website is deployed to Azure App Service. Both are compiled into every build. The license service also has an online Stripe checkout at/buy, which returns a buyer to/buy/completeafter payment and to/buyon cancel; until the service is live, email is the way to buy. Buyers who need a quote or an invoice are handled by hand for V1: the owner issues their keys with the license tool. - Refunds: every edition can be evaluated free for 30 days first, so payments are non-refundable, except that within 14 days of the first payment for a subscription the full payment is refunded if the key does not work and cannot be fixed. A refund ends the license for that term. Cancelling stops renewal; the paid term runs to its end.
- Editions, prices and the FAQ are in COMMERCIAL-LICENSE.md at the repository root.
- Put the key you receive in
IntentClientOptions.LicenseKey, throughIntentClientBuilder.WithLicenseKey, or in configuration atIntentSharp:Options:LicenseKeywhen you useAddIntentSharp.
What the code does
The key is a signed record checked offline when the client is built. In short:
- No network call, ever. The library holds public keys only.
- By default, a missing, invalid or expired key never stops the library. It logs a warning or an error when the client is built and again at most once an hour while it is used. A current evaluation key logs the days left; a current paid key logs one line naming the licensee and edition.
- The version gate is the one hard stop: a build released after a paid key's maintenance-until date makes
IntentClientBuilder.Build()throw aLicenseException. It never fires during a request. Evaluation keys are never gated; they report an evaluation or an ended evaluation by their expiry date. IntentClientOptions.FailWhenUnlicensed(default false) makesBuild()throw when there is no key, the key is invalid or the evaluation has ended.IntentClient.Licensereports the state evaluated atBuild(). At most once perIntentClientOptions.LicenseReminderIntervalthe reminder re-applies the date rules, so a long-running client moves from licensed to renewal due to lapsed (or from evaluation to ended evaluation) on time and then starts the repeated warning or error. The signature and the version gate are not checked again.- A seat count of 0 in a key means unlimited (Enterprise and OEM). Seats are informational.
- Every license log line uses
EventId9100, "IntentSharp.License".
The full state table, the key format, the reminder, key rotation, the license tool and the license service are in ../architecture/licensing.md. The decision is ADR 0010.
For contributors
Under section 7, a contribution grants the licensor a perpetual, irrevocable, royalty-free license to use and relicense it, including commercially. You confirm the work is yours to give. Contributors receive no license of any kind for their contribution beyond the free grant in section 2; there is no free or discounted commercial license for contributors (section 7.3). Preparing a contribution is covered by the free grant.
Tests that need license keys generate their own key pair with LicenseSigner.GenerateKeyPair(). Never
commit a private key; .gitignore excludes *.pem.
The license decision and its trade-offs are in ADR 0001.