Skip to content

feat: make ServeConfig.address optional with no default - #2301

Merged
mikasenghaas merged 1 commit into
mainfrom
feat/optional-serve-address
Aug 8, 2026
Merged

feat: make ServeConfig.address optional with no default#2301
mikasenghaas merged 1 commit into
mainfrom
feat/optional-serve-address

Conversation

@mikasenghaas

@mikasenghaas mikasenghaas commented Aug 8, 2026

Copy link
Copy Markdown
Member

Summary

  • ServeConfig.address is now str | None = None: the config no longer bakes in a bind address, leaving the choice to whoever hosts the env.
  • serve_env accepts address=None and falls back to its previous default loopback bind (tcp://127.0.0.1:5000), so standalone serving behaves exactly as before.
  • Nothing inside verifiers reads ServeConfig.address (the eval runner binds an OS-assigned tcp://127.0.0.1:0), so this only affects downstream consumers of the config.

Companion to PrimeIntellect-ai/prime-rl#3218, which consumes vf.ServeConfig as-is per source: an unset address means the prime-rl launcher serves the source at a derived loopback address, a set one marks the server externally managed (e.g. its own k8s pod).

🤖 Generated with Claude Code

Note

Make ServeConfig.address optional with None as default

Changes ServeConfig.address from a required str defaulting to "tcp://127.0.0.1:5000" to Optional[str] defaulting to None. When None, serve_env coerces the value to "tcp://127.0.0.1:5000" internally, keeping runtime behavior unchanged while allowing callers to omit the address and defer bind selection to the host.

Macroscope summarized 4aba2da.


Note

Low Risk
Small API/config default change with explicit runtime fallback; no auth or data-path changes.

Overview
ServeConfig.address no longer defaults to a bind URL — it is str | None with default None, so the [serve] block does not imply where the ZMQ ROUTER listens; hosts (eval runner, external launchers) decide or derive an address.

serve_env accepts address=None and normalizes to tcp://127.0.0.1:5000 at entry, so direct/standalone serving keeps the same loopback bind as before. Docstrings describe that split: unset config defers to the host; unset serve_env arg still gets the historical default.

Reviewed by Cursor Bugbot for commit 4aba2da. Bugbot is set up for automated code reviews on this repo. Configure here.

None leaves the bind to whoever hosts the env: serve_env falls back to
its default loopback bind, a launcher may derive one per server.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Comment thread verifiers/v1/serve/pool.py
@macroscopeapp

macroscopeapp Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 4aba2da

This change makes the address config optional by moving the default value from the config declaration into the serve_env function body. Runtime behavior is unchanged - the same default address is applied when none is provided.

You can customize Macroscope's approvability policy. Learn more.

@mikasenghaas
mikasenghaas merged commit 29e3a0f into main Aug 8, 2026
12 of 13 checks passed
@mikasenghaas
mikasenghaas deleted the feat/optional-serve-address branch August 8, 2026 18:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant