Skip to content

docs/api-reference/configuration.mdx documents trade_base_url/local_port/timeout config surface that doesn't exist in either SDK #1680

Description

@realfishsam

Gap

docs/api-reference/configuration.mdx documents, as first-class ExchangeOptions constructor kwargs and env vars shared identically by both SDKs:

  • trade_base_url / tradeBaseUrl — override the default https://trade.pmxt.dev
  • local_port / localPort — override the default pmxt-core port (3847)
  • timeout — default per-request timeout in seconds
  • Env vars PMXT_TRADE_BASE_URL, PMXT_LOCAL_PORT, PMXT_TIMEOUT
  • A full three-tier "Base URL resolution" precedence system (explicit kwarg → env var → default) for trade_base_url, mirroring the one that genuinely exists for base_url/PMXT_BASE_URL.

None of trade_base_url/tradeBaseUrl, local_port/localPort, timeout, PMXT_TRADE_BASE_URL, PMXT_LOCAL_PORT, or PMXT_TIMEOUT appear anywhere in either SDK. HOSTED_TRADING_BASE_URL = "https://trade.pmxt.dev" is a hardcoded constant with zero override mechanism in both SDKs; the local server port is hardcoded (DEFAULT_PORT = 3847) with no dedicated port option or env var; no per-request timeout kwarg exists in either client constructor (TS hardcodes a 30s AbortSignal.timeout; Python hardcodes scattered timeout=10/timeout=30 on individual internal calls). Separately, PMXT_LOG_LEVEL (also documented on this page as shared) is real but TypeScript-only — there is no equivalent anywhere in the Python SDK, contradicting the doc's framing of a single shared configuration surface across both languages. This same PMXT_LOCAL_PORT claim is repeated as a working self-hosted feature in docs/guides/self-hosted.mdx:148.

Core

N/A — these are pure SDK-side configuration knobs; core has no notion of them.

TypeScript SDK

  • sdks/typescript/pmxt/constants.ts:31-34ENV object only has BASE_URL and API_KEY keys, no TRADE_BASE_URL/LOCAL_PORT/TIMEOUT.
  • sdks/typescript/pmxt/hosted-routing.ts:23HOSTED_TRADING_BASE_URL hardcoded, no override path.
  • sdks/typescript/pmxt/server-manager.ts:33,59DEFAULT_PORT = 3847 hardcoded.
  • sdks/typescript/pmxt/client.ts:557 — hardcoded AbortSignal.timeout(30_000).
  • PMXT_LOG_LEVEL exists here: sdks/typescript/pmxt/logger.ts:22-23, server-manager.ts:211.

Python SDK

  • sdks/python/pmxt/constants.py:32ENV = SimpleNamespace(BASE_URL=..., API_KEY=...), same two-key limitation.
  • sdks/python/pmxt/server_manager.py:36DEFAULT_PORT = 3847 hardcoded.
  • No trade_base_url, local_port, or timeout kwarg anywhere in sdks/python/pmxt/client.py.
  • PMXT_LOG_LEVEL — missing entirely, no match anywhere under sdks/python/pmxt/.

Evidence

grep -rn "PMXT_TRADE_BASE_URL\|PMXT_LOCAL_PORT\|PMXT_TIMEOUT" sdks/typescript/pmxt sdks/python/pmxt → zero matches in either tree. grep -rn "tradeBaseUrl\|trade_base_url\|localPort\|local_port" sdks/typescript/pmxt/*.ts sdks/python/pmxt/*.py (excluding tests) → zero matches. grep -rn "PMXT_LOG_LEVEL" sdks/typescript/pmxt sdks/python/pmxt confirms it exists only in the TypeScript files listed above.

Impact

Medium-high — this is the most detailed page in the docs for configuring hosted-vs-self-hosted routing, and roughly a third of its documented surface (3 of 7 constructor kwargs called out, 3 of 6 env vars, and the entire "trade base URL precedence" section) describes behavior that doesn't exist. A user following this page to point a staging environment at a custom trading-API mirror, override the local sidecar port, or tune request timeouts would find none of those knobs work, with no error or fallback — the unrecognized env vars are silently ignored since the SDKs never read them.


Found by automated Core-to-SDK surface coverage audit

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions