Lumen
Lumen has been updated, please send email to help@ncsa.illinois.edu with subject Lumen if you have questions. Certain models will need to be acknowledged before use (one time only).

Configuring Clients

Clients are named identities for automated tools or apps that need their own API access, separate from personal user accounts.

When to Use Clients

Clients are useful when:

  • You have an application or service that calls AI models on behalf of users
  • You run automated scripts or pipelines that need stable, long-lived credentials
  • You want to separate application usage from personal usage and budgets
  • A team needs to share API access without giving out personal keys

Global Defaults

Under clients.default, set the default coin pool and model access for any client that doesn't have a named entry:

clients:
  default:
    max: 100.0            # coin budget (-2 = unlimited, 0 = blocked)
    refresh: 0.05         # coins added per hour
    starting: 100.0       # coins when pool is first created
    model_access:
      default: blacklist   # deny everything not explicitly listed
      blacklist: []        # always-deny list
      whitelist: [dummy]   # always-allow list
Field Description
max Daily coin budget (0 = blocked, -2 = unlimited)
refresh Coins replenished per hour (0 = no auto-refresh)
starting Initial coins when a client's pool is created
model_access.default Default behavior for unlisted models: whitelist, blacklist, or graylist
model_access.whitelist Models always accessible to this client
model_access.blacklist Models always denied to this client
model_access.graylist Models the client can access after consent is recorded via the UI

Per-Client Overrides

Add a named entry under clients to give a specific client different settings:

clients:
  default:
    max: 100.0
    refresh: 0.05
    starting: 100.0
    model_access:
      default: blacklist

  research-bot:
    max: 500.0
    refresh: 1.0
    starting: 500.0
    model_access:
      default: whitelist
      whitelist: [gpt-4o, llama3, qwen3.5-9b-q5]

A named entry completely replaces the defaults for that client — there is no partial inheritance. Any field omitted from a named entry is not inherited from default; the client will have no budget or model access for that field until it is explicitly set.

Creating Clients

Clients must be created through the web interface at /clients by an admin — YAML named entries only control budgets and model access for clients that already exist in the database. The sync command (uv run flask init-db) and the config watcher will silently skip any named entry for a client that hasn't been created through the UI yet.

Once a client exists, the UI lets you assign managers and create API keys, and the YAML controls the coin budget and model access that sync applies.

National Center for Supercomputing Applications

Lumen

Illinois Computes GitHub Repository Request Feature