Configuration
Environment variables control how jupyter-positron-server runs Positron Server inside your Jupyter environment.
Environment variables
| Variable | Description |
|---|---|
POSITRON_LICENSE_KEY_FILE |
Path to a license file that jupyter-positron-server passes to positron-server as --license-key-file. On Positron Server 2026.09.0 and newer, this file can be a raw license.lic. Leave it unset when the license file sits in the activation directory at <positron-server-path>/resources/activation/linux/<arch>/license.lic, which is where positron-server looks by default. |
POSITRON_LICENSE_MINTING_ENDPOINT |
URL of the JupyterHub minting endpoint that issues short-lived signed license tokens. Applies to Positron Server 2026.07.0 through 2026.08.2 only. Takes precedence over POSITRON_LICENSE_KEY_FILE. See Verifier setup. |
POSITRON_ENFORCED_SETTINGS |
JSON object of Positron settings that students cannot change. See Admin-enforced settings. |
POSITRON_HOST |
Host address for Positron Server to bind to. Defaults to 127.0.0.1. |
JSP_DEFAULT_FOLDER |
Directory that Positron Server opens. Defaults to JUPYTERHUB_ROOT_DIR, then HOME. |
JSP_POSITRON_LAUNCHER_DISABLED |
Set to any value to hide the Positron tile in the JupyterLab launcher. |
On Positron Server 2026.09.0 and newer, a license needs no environment variable at all. positron-server finds license.lic in its own activation directory. Both license variables are for deployments that keep the file somewhere else, or that still run on 2026.07.0 through 2026.08.2.
Admin-enforced settings
POSITRON_ENFORCED_SETTINGS lets administrators lock Positron settings so students cannot override them through the Settings UI, or by editing settings.json directly. Locked settings appear grayed out with a policy indicator. Enforced settings survive profile changes, workspace switches, and direct edits to ~/.positron-server/data/User/settings.json.
Requirements: jupyter-positron-server 0.0.4 or newer, and Positron Server 2026.07.1-5 or newer.
Create the config file:
Terminal
cat > /opt/tljh/config/jupyterhub_config.d/positron_enforced.py << 'EOF'
c.Spawner.environment = {
'POSITRON_ENFORCED_SETTINGS': '{"workbench.colorTheme":"Default Positron Dark","extensions.autoUpdate":false}'
}
EOFSessions that are already running keep their settings until a student starts a new session.
Each assignment to c.Spawner.environment replaces the whole dictionary. Set every session variable in one assignment, including PATH.
Memory requirements
Allocate at least 2.5 GB of RAM per Positron Server session. The right amount depends on the size of the workload:
- Light: single console, few extensions, simple scripts, basic app development
- Standard: runtime switching, multiple consoles, multiple extensions, app development
- Heavy: memory-intensive extensions such as file watchers or language servers, multiple concurrent apps, large datasets
Use the table below to match each workload level to its minimum and recommended memory allocation.
| Workload | Minimum | Recommended |
|---|---|---|
| Light | 2 GB | 2.5 GB |
| Standard | 2.5 GB | 4 GB |
| Heavy | 4 GB | 6 GB or more |
Signs of insufficient memory include slow runtime switching, extensions that fail to install, degraded app performance, and crashes during memory-intensive operations.
For the full guidance this section summarizes, see the Positron Pro memory allocation FAQ.
Hub license minting
Hub license minting is a former way of working, scoped to Positron Server 2026.07.0 through 2026.08.2, and not recommended for a new deployment. Positron Server 2026.09.0 and newer validate license.lic directly and need no minting service. See Verifier setup only if you are deploying that exact version range.