Licensing & Pricing
Licensing & Pricing — ɳSelf documentation.
The nself CLI is MIT licensed and free for everyone, including commercial use. Revenue comes from optional per-product plugin bundles, licensed under the nSelf Bundle License.
Pricing tiers
| Tier | Monthly | Annual | What’s included |
|---|---|---|---|
| Free | $0 | $0 | Core CLI + 127 free plugins (MIT, forever) |
| Any bundle | $0.99/mo | $9.99/yr | All plugins in that bundle (choose: ɳChat, ɳClaw, ɳFamily, ɳSentry, ClawDE) |
| ɳSelf+ | $3.99/mo | $39.99/yr | All 6 bundles + all apps + support via chat.nself.org or ɳChat app |
Annual billing saves approximately 16% compared to monthly. You can subscribe to multiple individual bundles, or use ɳSelf+ to get everything at a discount.
Bundle plugin membership
| Bundle | Price | Plugins |
|---|---|---|
| ɳTask | Free | storage, notifications, jobs, search, feature-flags, audit-log, webhooks, tokens |
| ɳChat | $0.99/mo | chat, livekit, recording, moderation, bots, realtime, auth |
| ɳClaw | $0.99/mo | ai, claw, claw-web, mux, voice, browser, google, notify, cron, claw-budget, claw-news |
| ɳFamily | $0.99/mo | social, photos, activity-feed, moderation, realtime, cms, chat |
| ɳSentry | $0.99/mo | nself-uptime-monitor, nself-status-page, nself-incident-mgmt, nself-alert-router, nself-slo-tracker, nself-synthetic-monitor, nself-rum, nself-errors, nself-cron-monitor, nself-oncall, nself-crash, nself-anomaly (+ nself-audit free) |
| ClawDE | $0.99/mo | claw, ai, realtime, auth, notify, cms, sync |
License key format
Keys follow the format nself_<product>_\<32+chars> (for example a bundle key or an nself_plus_... ɳSelf+ key). They are validated server-side at install time against ping.nself.org/license/validate.
Get a subscription
Go to nself.org/pricing and choose your bundle. After payment, you receive a license key.
Add your key
nself license set nself_pro_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Keys are stored in ~/.nself/license/ and used for all future plugin installs.
Manage multiple keys
# Add a key
nself license set nself_pro_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# List all active keys
nself license status
# Remove a key
nself license remove nself_pro_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Install plugins
# Install all plugins your keys enable
nself plugin install --all
# Or install specific plugins
nself plugin install ai claw mux voice browser # ɳClaw bundle
nself plugin install chat livekit recording # ɳChat bundle
After installing plugins, regenerate your config and restart:
nself build && nself restart
Verify your subscriptions
nself license status
# License Product Status Expires Plugins
# ****...ab12 ɳClaw Active 2027-03-15 11
nself license show --json
# {"key_prefix":"ab12","tier":"claw","bundles_unlocked":["nclaw"],
# "plugins_available_count":11,"days_to_expire":180,"cache_expiry":"2026-09-13"}
Validation flow
- Run
nself license set nself_pro_xxxxx...to save the key to~/.nself/license/key(chmod 0600). - Run
nself plugin install <name>. - CLI calls
https://ping.nself.org/license/validatewith{ key, domain, plugin }. - ping_api looks up the license record, decodes the tier, and returns:
200 OK { allowed: true, signed_url: "..." }if the tier permits this plugin.403 Forbidden { allowed: false, reason: "not_entitled" }if not.
- On allow, CLI downloads the plugin tarball via a 15-minute HMAC-SHA256 signed URL.
- CLI installs the plugin into the user’s nSelf project.
Subscription scope
One license key covers one server installation. No per-user or per-app charge. A single nself instance can serve multiple applications.
Renewal
Subscriptions auto-renew (monthly or annually depending on your plan). You receive an email reminder before expiry. After expiry, there is a grace period before plugins stop working (see the nSelf Bundle License §4).
nself license show --json
# {"key_prefix":"ab12","tier":"claw","bundles_unlocked":["nclaw"],
# "plugins_available_count":11,"days_to_expire":14,"cache_expiry":"2026-09-13"}
Grace period (offline)
By default, a bundle plugin install or restart validates live against ping.nself.org. When that
call cannot complete because of a network problem, not a rejection, the CLI falls back to your
local, signed license cache on a bounded grace ladder:
- Cache under 72 hours old: proceeds silently.
- Cache 72 hours to 7 days old: proceeds, with a warning that nself.org has been unreachable.
- Cache older than 7 days: fails closed. Plugin operations are refused until validation succeeds.
Both numbers are stated in full, alongside the separate 30-day post-expiry grace period, at the nSelf Bundle License §4.
This ladder applies only when the server cannot be reached at all
(cli/internal/license/checker.go:84-87). It does not apply, and there is no grace of any kind,
when the server does answer and rejects the key: a 401/403 response or a valid: false result
fails closed immediately regardless of cache age, and a revoked license is never granted grace
either.
Fail-open for CI and air-gapped installs
For CI runners and air-gapped installs that are offline by design, set NSELF_LICENSE_FAIL_OPEN=1.
This does not turn grace on or off globally. It only changes what happens on that same
network-unreachable branch above: instead of the bounded 72h/7d ladder, the CLI checks your
cache’s tier against the bundle you are installing with no age ceiling at all
(cli/internal/license/checker.go:124-151). It still never applies when the server answers with a
rejection, and it still never overrides a revoked license. Do not set this on a production
installation. The cache holds only the license key, with no per-machine identifier, so it can be
copied between hosts; the 72h/7d ceiling is what keeps a copied cache from working forever, and
this variable removes that ceiling. See Offline License Verification
for the full command reference.
For a fully disconnected host, use the export/import workflow instead of the network path:
# On a machine that can reach the internet:
nself license refresh # ensures the cache is current
nself license export > cache.json
# Copy cache.json to the disconnected host, then:
nself license import cache.json
import verifies the Ed25519 signature on the cache file before accepting it
(cli/internal/license/validate.go:177-195). NSELF_LICENSE_SKIP_VERIFY=1 (paired with
NSELF_LICENSE_SKIP_VERIFY_FORCE=1 and --force) lets nself license import accept an unsigned
cache file. It only affects import, not plugin install. Development and testing only — an
unsigned cache entry has not been verified as genuine, so using this on a production installation
defeats the point of signature verification.
Revocation
When a license is canceled or revoked server-side, plugins go dormant on the next nself build and the CLI prints a warning. Free plugins continue to work.
Upgrade to ɳSelf+
If you have individual bundle subscriptions and want to switch to ɳSelf+, subscribe at nself.org/pricing. Your individual subscriptions are replaced at your next renewal date and you get immediate access to all bundles.
FAQ
Is the core nself CLI affected by subscriptions? No. The CLI itself is MIT licensed and works fully without any license key.
What happens when my subscription expires?
Plugins continue to work for 30 days after expiry. This is the post-expiry grace period, separate from the offline grace period (that one covers an unreachable server, not an expired subscription). After 30 days, nself plugin install and nself restart will return an error until you renew.
Can I buy multiple bundles? Yes. Each bundle is independent. Add as many keys as you need. If you want three or more bundles, ɳSelf+ is cheaper.
Can I use one key on multiple servers? One key = one server. For multiple servers, purchase additional subscriptions.
Source
- SPORT:
.claude/docs/sport/F07-PRICING-TIERS.md - PPI:
~/Sites/nself/.claude/CLAUDE.md§ Plugin Licensing System - See also: Bundles, Plugin Catalog