Skip to content

Add OrcaReplay to LLM & MCP Testing - #117

Merged
cleder merged 1 commit into
cleder:mainfrom
xizhuomengcontin:add-orcareplay
Sep 15, 2026
Merged

cleder merged 1 commit into
cleder:mainfrom
xizhuomengcontin:add-orcareplay

Conversation

@xizhuomengcontin

@xizhuomengcontin xizhuomengcontin commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Following up on #116, where you said "I stay with the zen of Python: practicality beats purity, and say things you use to test Python. ;-) Your PR is welcome."

Disclosure: I maintain OrcaReplay. Apache-2.0, free, no paid tier, no account.

Placement

## LLM & MCP Testing, alphabetically between mcp-server-fuzzer and Sabot. One line, no other change.

What it does, in the terms this list cares about

You have a Python test or agent script that calls an LLM. Run it once under orca record; afterwards orca replay runs the same script again with the provider unreachable, serving the recorded responses back. No key, no network to the vendor, no token spend, and the conversation is byte-identical. A session that failed in CI becomes something you can re-run locally.

Nothing is installed into your code — no fixture, no decorator, no patching. The recorder moves a base-URL variable for the child process it launches, which is why it works the same for a bare openai script, LangChain, CrewAI, LlamaIndex or LiteLLM without per-framework support.

On the Python question from #116

The recorder itself is a Node CLI (npm i -g orcareplay), which is what I flagged in the issue before sending this. Since then the Python side is also on PyPI: pip install orcareplay-openai-agents adds an OpenAI Agents SDK tracing processor. So the entry is a tool you use to test Python, and there is now a Python package in it too — but I would rather you judged it on the first half, since that is the honest framing.

Two limits, stated here rather than discovered later

  • A matching replay is not a determinism result. It shows the recorded run reproduces, not that the model is stable across calls.
  • Replay is not a sandbox. Model-provider egress is blocked, but recorded tool calls still execute for real — a recorded curl reaches the network.

Nearest existing entry

Cornell under Mock and Stub is described as "record & replay mock server", which is the closest thing already listed. The difference worth knowing: Cornell is a server you point your code at, so the code under test must be configured for it; this wraps the process instead and needs no change to the code. Happy for you to decide the LLM section is the wrong home and move it there, or to decline — it is your list.

Summary by Sourcery

New Features:

  • Add OrcaReplay to the LLM & MCP Testing resources list with a description of its record-and-replay workflow for Python agent sessions.

@semanticdiff-com

Copy link
Copy Markdown

Review changes with  SemanticDiff

@sourcery-ai

sourcery-ai Bot commented Sep 15, 2026

Copy link
Copy Markdown
Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Adds an alphabetically placed OrcaReplay entry to the LLM & MCP Testing section, describing its process-level recording and provider-independent replay workflow for turning failed agent sessions into regression tests.

Sequence diagram for OrcaReplay recording and replay

sequenceDiagram
    participant Orca as OrcaReplay CLI
    participant Script as Python agent script
    participant Provider as Model provider
    participant Replay as Recorded responses

    Orca->>Script: Launch under orca record
    Script->>Provider: Model API call
    Provider-->>Script: Model response
    Orca->>Orca: Record conversation

    Orca->>Script: Launch under orca replay
    Script->>Replay: Model API call
    Replay-->>Script: Recorded response
    Script-->>Orca: Reproduce recorded run
Loading

File-Level Changes

Change Details Files
Adds OrcaReplay to the LLM & MCP Testing resource list as an external-process record-and-replay tool for Python agent and LLM scripts.
  • Places the entry alphabetically between mcp-server-fuzzer and Sabot.
  • Describes provider-call recording, offline replay, regression-testing use case, and Apache-2.0 licensing.
README.md

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Tip of the day
💡 Did you know, you can reply 'qodo' on any finding to push back, ask questions, or dig deeper

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Add OrcaReplay to LLM and MCP testing resources

📝 Documentation 🕐 Less than 5 minutes

Grey Divider

AI Description

• Adds OrcaReplay to the LLM and MCP testing resource list.
• Highlights offline replay of recorded Python agent sessions for regression testing.
High-Level Assessment

The README entry is the appropriate approach for this curated-resource repository. Its alphabetical placement and concise explanation of record-and-replay behavior fit the surrounding LLM and MCP testing entries; no architectural alternative is warranted.

Files changed (1) +1 / -0

Documentation (1) +1 / -0
README.mdList OrcaReplay as an LLM testing resource +1/-0

List OrcaReplay as an LLM testing resource

• Adds an alphabetically placed OrcaReplay entry under LLM & MCP Testing. The description explains provider-independent recording and offline replay of Python agent sessions for regression testing and identifies its Apache-2.0 license.

README.md

@mergify

mergify Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 1 issue

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="README.md" line_range="84" />
<code_context>
+- [OrcaReplay](https://github.com/Continuum-AI-Corp/OrcaReplay) - Records a Python agent's calls to its model provider from outside the process, then serves the recording back so the same run happens again with the provider unreachable and no key. Turns a failed session into a regression test. Apache-2.0.
</code_context>
<issue_to_address>
**🚨 issue (security):** The entry describes replay as making the same run happen again without warning that recorded tool calls execute for real; a user treating replay as an offline or safe regression run will still trigger side effects such as a recorded `curl` reaching the network.

**Triggers:** When a recorded agent run contains tool calls with external side effects.

**Suggested fix:** State that replay only blocks model-provider access and that recorded tools, including network calls, still execute normally.

```suggestion
- [OrcaReplay](https://github.com/Continuum-AI-Corp/OrcaReplay) - Records a Python agent's calls to its model provider from outside the process, then serves the recording back so the same run happens again with only model-provider access blocked; recorded tools, including network calls, still execute normally. Turns a failed session into a regression test. Apache-2.0.
```
</issue_to_address>

Sourcery assessment

Approval pending. 1 finding to address first.

Blocking findings: README.md:84


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

Comment thread README.md
## LLM & MCP Testing

- [mcp-server-fuzzer](https://github.com/Agent-Hellboy/mcp-server-fuzzer) - A comprehensive fuzzing tool designed specifically for testing Model Context Protocol (MCP) servers. It supports both tool argument fuzzing and protocol type fuzzing across multiple transport protocols.
- [OrcaReplay](https://github.com/Continuum-AI-Corp/OrcaReplay) - Records a Python agent's calls to its model provider from outside the process, then serves the recording back so the same run happens again with the provider unreachable and no key. Turns a failed session into a regression test. Apache-2.0.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚨 issue (security): The entry describes replay as making the same run happen again without warning that recorded tool calls execute for real; a user treating replay as an offline or safe regression run will still trigger side effects such as a recorded curl reaching the network.

Triggers: When a recorded agent run contains tool calls with external side effects.

Suggested fix: State that replay only blocks model-provider access and that recorded tools, including network calls, still execute normally.

Suggested change
- [OrcaReplay](https://github.com/Continuum-AI-Corp/OrcaReplay) - Records a Python agent's calls to its model provider from outside the process, then serves the recording back so the same run happens again with the provider unreachable and no key. Turns a failed session into a regression test. Apache-2.0.
- [OrcaReplay](https://github.com/Continuum-AI-Corp/OrcaReplay) - Records a Python agent's calls to its model provider from outside the process, then serves the recording back so the same run happens again with only model-provider access blocked; recorded tools, including network calls, still execute normally. Turns a failed session into a regression test. Apache-2.0.

@llamapreview llamapreview Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LlamaPReview — No blocking issues found

Read bounded PR-head context from README.md.

Review details and evidence

Material unknowns

  • Whether a second OrcaReplay entry already exists elsewhere in README.md outside the observed exact-head slices (lines 80–88, 105–111), which would make this PR add a duplicate listing. A duplicate would be a post-merge cleanup item, not a correctness failure; it does not change the clear merge posture or the P3 documentation finding.
    • Check: No pre-merge action required; if desired, grep the full README for the literal token OrcaReplay at PR head to confirm a single occurrence.

LlamaPReview checks

  • Read bounded PR-head context from README.md.
  • Inspected matching PR-head repository snippets in README.md.
  • Reviewed changed regions in README.md.

LlamaPReview is an open-source pull request reviewer. Read the exact code that produced this review.

@cleder
cleder merged commit 848eee1 into cleder:main Sep 15, 2026
5 checks passed
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.

2 participants