> 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/configuration.md).

# Configuration

The only thing you configure is the **loader** you ship to customers. Everything else lives in your dashboard at [license.ohalee.com](https://license.ohalee.com).

## Loader (`plugins/ObsidianLoader/config.yml`)

Download the loader from your dashboard and set these four values — all shown on your product/license pages. The loader **fails closed** (the protected plugin will not run) if anything is missing or invalid, or if the license server is unreachable.

```yaml
# ObsidianLoader configuration

# Base URL of the license server.
serverUrl: "https://license.ohalee.com"

# The license key issued to this customer from your dashboard.
licenseKey: "OBS-XXXX-XXXX-XXXX-XXXX"

# Which product this loader should fetch. Shown in your dashboard for each product.
productId: "my-plugin"

# The server's Ed25519 public key, shown in your dashboard.
# Pinning this prevents a rogue server from substituting a malicious payload.
serverPublicKey: "PASTE_SERVER_PUBLIC_KEY_HERE"
```

| Value             | Where to find it                                             |
| ----------------- | ------------------------------------------------------------ |
| `serverUrl`       | Always `https://license.ohalee.com` for the hosted service.  |
| `licenseKey`      | The key you issued (or a buyer redeemed) — Licenses page.    |
| `productId`       | Your product's id — Products page.                           |
| `serverPublicKey` | Shown in your dashboard; the same key for all your products. |

{% hint style="info" %}
When you distribute the loader to a customer, the only value that changes per customer is `licenseKey`. `serverUrl`, `productId` and `serverPublicKey` are the same for everyone buying that product.
{% endhint %}

## Everything else is in the dashboard

You don't edit config files for the platform itself — products, licenses, seats, expiry, tiers/entitlements, release channels, trials, branding, marketplace webhooks, API keys and abuse limits are all managed from [license.ohalee.com](https://license.ohalee.com). See [features.md](/products/obsidian-license/features.md) for the full catalogue and [marketplace-automation.md](/products/obsidian-license/marketplace-automation.md) for the purchase webhooks.

## Self-hosting

If you run your own instance instead of the hosted service, the server is configured through environment variables (`.env`) — Postgres URL, `JWT_SECRET`, `MASTER_KEY`, SMTP, abuse thresholds, retention, etc. — and `serverUrl` / `serverPublicKey` come from your own deployment rather than the hosted values above. That operator setup is outside the scope of these customer-facing docs; contact support if you self-host.
