Skip to content

Providers and models

PDLt calls two kinds of model, both through OpenRouter by default, with one key (OPENROUTER_API_KEY):

Role What it does Default Change it with
Task model (System 2) Interprets the request, plans, and writes the deliverable and its programs nvidia/nemotron-3-super-120b-a12b:free --model (REPL, headless); create_worker("api", model=...) (Python)
System 1 Routes each request and refuses out-of-bounds ones before any task-model call typesafe/jev-1.13, on OpenRouter's decisions endpoint SYS1_MODEL, SYS1_ENDPOINT, SYS1_API_KEY; or create_system1(...) in Python

Which models work

PDLt's requests use structured output (a JSON schema the reply must follow) and reasoning effort settings. Its request setup was developed and measured on openai/gpt-oss-120b (the catalogue baseline model) and the default free model. Other models may reject the schema or the settings; such a rejection is reported as a provider error (exit 4), never as a task result. Try a model on one task before relying on it. Measurements by provider, and the providers known to reject the schemas, are in PROVIDERS.md.

Provider order

OpenRouter serves one model through several providers. Unless told otherwise, PDLt asks for Baseten, then Crusoe, and lets OpenRouter fall back to others. Both serve every operation with PDLt's schemas.

To Use
Put another provider first OPENROUTER_PROVIDER=Name
Set the whole order OPENROUTER_PROVIDER_ORDER=A,B
Use only some providers, in order (REPL, headless) --api-providers A,B

A name PDLt does not know gets a warning, not a refusal, since OpenRouter adds providers.

Reasoning effort

By default each operation gets the model's own mapping: for gpt-oss, high before execution and low or medium when writing the deliverable. To override it:

Where Every operation One operation
REPL, headless --api-reasoning-effort low --api-reasoning-operation EXECUTE=medium (repeatable)
Catalogue runner --reasoning low --reasoning-op EXECUTE=medium (repeatable)

The operations: BOOTSTRAP_ANALYSIS, DRAFT_PROMPT, REVISE_PROMPT, INTERPRET_PROMPT_REVIEW, DRAFT_PLAN, REVISE_PLAN, INTERPRET_PLAN_REVIEW, INTERPRET_EXECUTION_INPUT, DRAFT_EXECUTE, EXECUTE, EXECUTE_UNCONFIRMED, EMIT_RESULT_IR.

Other limits per call

Setting Default Flag
Output tokens per call, reasoning included 16,384 --max-output-tokens
Wall-clock seconds per call, retries included 300 --api-call-deadline

A reply cut off at the output cap is a failed attempt. Network timeouts and provider errors are harness errors (exit 4), not model outcomes.

Your own provider

Any OpenAI-compatible Responses API host: --api-base-url URL --api-key-env NAME_OF_KEY_VARIABLE. Anything else: register a provider through the Extensions SDK.