Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

open-commerce-agent

Provider-agnostic reference commerce agent. A fork of anthropics/commerce-agents designed for OpenAI Chat Completions–compatible endpoints — OpenRouter, Chutes, LiteLLM, vLLM, Ollama, LM Studio, self-hosted. (Only OpenRouter has been validated end-to-end so far — see the capability matrix.)

Apache-2.0. Vendored subset of Anthropic's original at a pinned commit (see UPSTREAM.md); wrapped with a streaming Anthropic Messages ⇄ OpenAI Chat Completions translator so the upstream ShoppingAgent orchestrator's tool-loop, gates, and prompt work unchanged against non-Anthropic backends.

Status: Alpha. Live on PyPI as open-commerce-agent. Runtime shim, request + response translation, both shopping + merchant orchestrators bundled, and end-to-end wiring against Claude (via OpenRouter) and OSS models (via OpenRouter) are proven working. First real user validation and capability-matrix rows for non-OpenRouter providers still to come.

Why

The upstream reference provides Messages API, Claude Agent SDK, and Managed Agents runtimes for Claude. This independent fork vendors the shopping and merchant Messages API subset and adds a client shim for OpenAI Chat Completions–compatible endpoints — so the same tools, prompts, gates, and orchestrators can run against models reached through OpenRouter, Chutes, LiteLLM, vLLM, or a self-hosted server.

This fork retains a pinned, attributed subset of upstream's shopping and merchant tools, prompts, gates, memory, and Messages API orchestrators, and translates model-client calls. It does not include the upstream Agent SDK, Managed Agents, examples, or other omitted components.

Install

pip install --pre open-commerce-agent

(--pre needed while the current version is an alpha — 0.1.0a1. Drop the flag once v0.1.0 final lands.)

The wheel bundles the vendored Anthropic subset as top-level commerce_common / shopping_agent / shopping_agent_runtime / merchant_agent / merchant_agent_runtime packages, so no post-install step is required. Both the shopping and merchant orchestrators use the same OpenAIChatCompatClient — one shim covers both agent families.

Source install (contributors, or before PyPI publish):

python -m venv .venv && source .venv/bin/activate
pip install -e '.[dev]'
bash scripts/install.sh   # installs the vendored subset editable

Editable-install needs the shell script because the vendored code sits under vendored/upstream/ at development time; the script pip install -es the three sibling packages so changes there flow without a reinstall. The wheel-install path doesn't need it — hatch bundles them into the wheel.

Quickstart

Copy configs/openrouter.env.example.env, fill in a key + model, then run the smoke against a built-in mock catalog:

source .env      # OPENAI_BASE_URL, OPENAI_API_KEY, MODEL
oca smoke        # or: python examples/smoke.py

You should see the model call searchadd_to_cart and end with a one-line assistant summary. That validates your provider+model combo.

To wire your own catalog, implement the StorefrontBackend protocol against your data (examples/mock_backend.py is a minimal reference, docs/adding-a-backend.md is the full guide), then:

from open_commerce_agent import build_client_from_env
from shopping_agent.config import ShoppingAgentConfig
from shopping_agent_runtime.orchestrator import ShoppingAgent

client, model = build_client_from_env()
agent = ShoppingAgent(
    backend=YourStorefrontBackend(),
    client=client,
    config=ShoppingAgentConfig(model=model),
)
# ... call agent.stream_turn(messages, session, state) per turn

See examples/smoke.py for the full session loop.

Capability matrix

Community-maintained — file a PR against this section when you add or update a row. Pass rate is from an internal reference task set (a public benchmark harness is a follow-up).

Section stub — real matrix landed after the first CI round of live smokes; see docs/capability-matrix.md for the current view.

Model Provider Tool-calling Streaming Notes
anthropic/claude-sonnet-4-5 OpenRouter OpenRouter route used as the current cross-model smoke baseline; tool-calling and streaming observed.
moonshotai/kimi-k2 OpenRouter Native tool_calls. Notably good product-selection prose.
file a PR

Provider recipes

See configs/ for ready-to-copy environment configurations for each supported provider:

  • configs/openrouter.env.example — OpenRouter (Claude, Kimi, DeepSeek, Qwen, GLM, Gemma, all via one endpoint)
  • configs/litellm.env.example — self-hosted LiteLLM proxy
  • configs/vllm.env.example — self-hosted vLLM with a chat template
  • configs/openai.env.example — hosted OpenAI (fallback)

None is a "default" — the point of this package is you pick.

What upstream did well that we kept

  • StorefrontBackend — clean abstract interface with one method per domain operation. Any catalog can implement it in under a day.
  • Provenance gates that block hallucinated product IDs and cart writes on unseen items. Safety-relevant, keep it.
  • Skills-as-prompt-modules pattern — the SKILL.md files under vendored/upstream/shopping-agent/skills/ and vendored/upstream/merchant-agent/skills/ are what make the agents feel domain-competent. Publish fork-specific skill additions here and track upstream changes in UPSTREAM.md.
  • The full turn loop + presentation-tool streaming + memory extraction.

What we changed (all in the wrapper layer, none in the vendored code)

  • runtime_openai_shim/ — the translation shim. See CHANGES.md for details.
  • No default model, no cache_control fakery, no Agent SDK or Managed Agents runtimes.

The shopping and merchant core, skills, and Messages API runtimes are vendored; Agent SDK and Managed Agents runtimes are not.

License

  • vendored/upstream/* — Apache-2.0, Anthropic PBC (see the vendored LICENSE).
  • src/open_commerce_agent/* — Apache-2.0, ORO AI.

Neither Anthropic nor Claude endorse or maintain this fork. This is an independent adaptation for the OpenAI-compat wire protocol.

Migrating from anthropics/commerce-agents

Already running the upstream reference and want to switch providers? The diff is roughly six lines. See docs/migrating-from-upstream.md.

Observability

OpenAIChatCompatClient(..., on_request=…, on_response=…) — plug in logging / tracing / cost accounting per model call without patching the shim. See docs/observability.md.

Reference

  • docs/agents.md — shopping vs merchant agent families, backend contracts, wiring shape.
  • docs/glossary.md — terms used across the codebase and docs (StorefrontBackend, provenance gate, orchestrator, shim, presentation vs data, session vs state, …).
  • docs/architecture.md — box diagram and the shim's place in the request path.
  • docs/troubleshooting.md — symptom → fix for the failure modes we've actually seen (empty responses, cart stays empty, tool-calls dropped, provider quirks).
  • docs/versioning.md — SemVer policy, vendored SHA sync cadence, release checklist.
  • docs/testing.md — test tier map for contributors.
  • docs/adr/ — architecture decision records.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

open_commerce_agent-0.1.0a2.tar.gz (281.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

open_commerce_agent-0.1.0a2-py3-none-any.whl (220.3 kB view details)

Uploaded Python 3

File details

Details for the file open_commerce_agent-0.1.0a2.tar.gz.

File metadata

  • Download URL: open_commerce_agent-0.1.0a2.tar.gz
  • Upload date:
  • Size: 281.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for open_commerce_agent-0.1.0a2.tar.gz
Algorithm Hash digest
SHA256 02cccbdf75c37b0db07a68ef939f8a76ad310cd908288534c97e808e23d03fe0
MD5 c56e7c93a2f4f52247ae3fdf1311d33b
BLAKE2b-256 154a13a7791fd2cc7fa3de97ff6e78cf5f710f42b033f86c48a1bb9ec2f0281a

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_commerce_agent-0.1.0a2.tar.gz:

Publisher: release.yml on ORO-AI/open-commerce-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file open_commerce_agent-0.1.0a2-py3-none-any.whl.

File metadata

File hashes

Hashes for open_commerce_agent-0.1.0a2-py3-none-any.whl
Algorithm Hash digest
SHA256 cbd4dd6c14df4b8e613f2aa98ab238e58906d4aa6cecb22bf04e4a3efcdd7707
MD5 952b2e2819f398ffcbdf0cce72e4e6dd
BLAKE2b-256 05770a568fd942752278e1fc699ac04af642993adc570c21b10831274af06bd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_commerce_agent-0.1.0a2-py3-none-any.whl:

Publisher: release.yml on ORO-AI/open-commerce-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0a2 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page