> For the complete documentation index, see [llms.txt](https://docs.ohalee.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ohalee.com/products/obsidian-license/features.md).

# Features

## Runs on

**Paper** (Bukkit, Spigot), **Velocity**, and **plain Java**: a Spring Boot service, a CLI tool, a daemon, anything with a JVM. One set of licenses and one dashboard across all of them, and the interfaces you compile against are public at [github.com/ohAleee/obsidianlicense-api](https://github.com/ohAleee/obsidianlicense-api).

## The problem it solves

Minecraft plugin developers sell jars on marketplaces like BuiltByBit or Voxel (Polymart). A plain `.jar` is trivial to copy and reshare: a buyer of one license can hand the file to hundreds of servers with no way for the developer to detect or stop it, and a refunded buyer keeps running it forever. Obsidian License gives the developer a live, revocable control plane over every copy in the wild, and can additionally remove the plaintext jar from the equation entirely.

## Two ways to use it

* **License check**, the simple one. Your plugin ships as a normal jar and calls the server on startup for a signed yes or no. One method call, no restructuring. See [license-check.md](/products/obsidian-license/license-check.md).
* **Protected plugin**, the strong one. The compiled plugin never lands on the customer's disk; a thin loader decrypts and runs it in memory. See [protected-plugins.md](/products/obsidian-license/protected-plugins.md).

Both share everything below, and you pick per product.

## Core capabilities

* **Encryption and code protection** (protected mode): AES-256-GCM at rest, Ed25519-signed activation responses, in-memory class loading, so no plaintext jar ever lands on a customer's disk.
* **Signed license checks** (both modes): the answer, the tier and the entitlements are signed against a nonce your plugin chose, so a fake server or a replayed response cannot grant a license.
* **Licensed downloads**: let a valid license pull the current build straight from the platform, and a revoked key stops downloading immediately. See [downloads.md](/products/obsidian-license/downloads.md).
* **License management**: create, edit, revoke and delete keys, with seats (machine-activation limits), expiry dates, notes, bulk issuance and CSV export.
* **Tiers and entitlements**: attach a tier label and an arbitrary entitlement bag (feature flags, limits) to each key, delivered inside the signed response so one product can sell Basic and Premium with no separate builds. See [tiers-and-entitlements.md](/products/obsidian-license/tiers-and-entitlements.md).
* **Several jars per product**: ship a lobby plugin and a game plugin under one product and one key, and let each server pull the jar it needs. See [multiple-jars.md](/products/obsidian-license/multiple-jars.md).
* **Versioned releases and channels**: every upload is a retained version. Put trusted customers on a **beta** channel and promote or roll back instantly. Each server picks up the right build on its next start based on its license channel.
* **Free trial keys**: enable a self-serve trial per product and share one link. Prospects claim a time-limited, seat-limited key (deduped per IP) and convert themselves.
* **Machine binding**: each license is bound to a configurable number of machines, resettable when a customer migrates hardware, by you or by the buyer from the self-service portal.
* **Self-service customer portal**: buyers enter their key to see status and bound machines, and free a seat themselves when they move servers (rate-limited). This is the number one DRM support ticket, answering itself.
* **Custom branding**: put your name, accent colour, logo and support link on the customer-facing redeem, status, portal and trial pages so the whole flow feels like your product.
* **Access logs**: every attempt, allowed or denied, recorded with IP, OS, Java version and machine fingerprint, streamed live in the dashboard and exportable.
* **Abuse protection**: per-IP auto-ban and per-license rate limiting to blunt sharing and brute-force attempts.
* **Marketplace automation**: connect **BuiltByBit** and **Voxel** (formerly Polymart) with your own private, per-tenant webhook and secret. A purchase auto-issues a key, a refund or chargeback auto-revokes it. See [marketplace-automation.md](/products/obsidian-license/marketplace-automation.md).
* **Analytics**: activation trends, active installs, denials and top products.

## The SaaS / business layer

* **Plans & billing** - Stripe-backed subscriptions (Checkout + a self-service Billing Portal). Plans gate `maxProducts`, `maxLicenses`, `maxSeatsPerLicense`, marketplace integrations and each growth feature above. A free tier ships out of the box; failed payments and cancellations automatically fall a tenant back to the free plan.
* **Team and reseller accounts**: invite teammates to manage products and licenses without sharing billing or login credentials, or add scoped **resellers** who can only issue keys for the products you assign them. Invitations to an existing account have to be accepted before anything changes for that account.
* **AI agent support (MCP)**: point Claude, Cursor or any MCP client at the platform and it can read the implementation guides, scaffold a licensed plugin, create products, upload builds and issue keys for you. See [mcp-server.md](/products/obsidian-license/mcp-server.md).
* **API keys**: personal, revocable tokens for automating license management or CI-driven plugin uploads.
* **Security**: TOTP-based 2FA on login and an audit log of sensitive actions (revocations, plan changes, admin impersonation).
* **GDPR tooling**: self-service account data export and account deletion.
* **Admin console** (operator only): manage tenants, plans, the feature catalogue and the global audit log.

## Who it's for

Indie and studio developers who sell paid Minecraft (Paper) plugins and want to stop shared and refunded copies, get visibility into where their plugin actually runs, and automate license delivery from the marketplaces they already sell on.
