Skip to main content

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

  1. Run nself license set nself_pro_xxxxx... to save the key to ~/.nself/license/key (chmod 0600).
  2. Run nself plugin install <name>.
  3. CLI calls https://ping.nself.org/license/validate with { key, domain, plugin }.
  4. 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.
  5. On allow, CLI downloads the plugin tarball via a 15-minute HMAC-SHA256 signed URL.
  6. 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