Skip to main content
By default, environment sessions hit the inference endpoints they were built against. When you want a session to instead talk to your own inference server — for example a self-hosted vLLM cluster exposing an OpenAI-compatible API — pass env_overrides to Environment.session(...).
from openreward import OpenReward

client = OpenReward()
env = client.environments.get("GeneralReasoning/counter")

with env.session(
    task=task,
    env_overrides={"OPENAI_BASE_URL": "https://my-vllm.example.com/v1"},
) as session:
    ...
The overrides are upserted onto the main container of the session pod at session-create time, before any tool calls run.

Accepted keys

If you are the owner of the environment, you may override any env var on the main container — handy when developing or testing your own environment. Other callers are restricted to the following keys; anything else returns a 400:
KeyPurpose
OPENAI_BASE_URLOverride the OpenAI-compatible endpoint URL
OPENAI_API_KEYOverride the OpenAI API key
ANTHROPIC_BASE_URLOverride the Anthropic endpoint URL
ANTHROPIC_API_KEYOverride the Anthropic API key
For API keys you do not need to redirect to a custom endpoint, prefer the secrets= channel — it never exposes the raw value to your environment code. See Keeping Secrets Secret. Use env_overrides for the API key only when it is paired with a custom *_BASE_URL whose host the secrets egress allowlist would otherwise reject.

Pool isolation

Sessions created with overrides run in a separate pod pool from default sessions, keyed by a hash of the overrides map. Two callers passing the same env_overrides will share a pool; callers passing different overrides will not.