Skip to content

feat(orcareplay): add OrcaReplay feature - #243

Closed
xizhuomengcontin wants to merge 1 commit into
devcontainers-extra:mainfrom
xizhuomengcontin:feat/orcareplay
Closed

xizhuomengcontin wants to merge 1 commit into
devcontainers-extra:mainfrom
xizhuomengcontin:feat/orcareplay

Conversation

@xizhuomengcontin

Copy link
Copy Markdown

Adds a Dev Container Feature for OrcaReplay, an Apache-2.0 npm CLI (orcareplay → binary orca, Node 20+).

Tests pass in my fork before opening this

CONTRIBUTING asks for that, so here is the run:
https://github.com/xizhuomengcontin/features/actions/runs/34737655136Features - Test, test (orcareplay) ✅ on mcr.microsoft.com/devcontainers/base:debian.

The scenario is a bare Debian base with no node feature, because npm-package bootstraps Node LTS itself when npm is missing — same as typescript, prettier and renovate-cli do.

What the feature installs

"features": {
    "ghcr.io/devcontainers-extra/features/orcareplay:1": {}
}

It records an AI coding agent's session at the boundary between the agent and its model provider — from outside the agent process — and can replay that recording so the same run happens again with no provider call and no API key:

$ orca record claude -- claude -p "fix the failing test"
$ orca replay last
info replay.done reused=6/6 exact=6 divergences=0 exit=0

Why it fits this registry in particular: claude-code, opencode, codename-goose-cli, codebuddy-code and archon are already features here, and those are exactly the CLIs orca record wraps. A dev container is a natural place to run an agent under a recorder — the recording is a file in the workspace, so a session captured in the container can be replayed anywhere without credentials.

Authoring notes

  • Scaffolded with just add orcareplay; library_scripts.sh is the untouched template copy.
  • install.sh is the npm-package helper path, pinned to npm-package:1.0.4 — matching codebuddy-code, the most recently added npm-based agent CLI feature. (aws-cdk still pins 1.0.3; I followed the newer one deliberately rather than copying a stale pin.)
  • installsAfter lists the npm-package helper and devcontainers/features/node.
  • Version starts at 1.0.0; version-checker.py skips the bump check for a feature absent from the base branch, which is the case here.
  • test.sh checks orca --version (the binary is orca, not orcareplay — worth knowing if you review the test).
  • src/orcareplay/README.md follows the generated shape of the other npm-package features.

One thing I did not do: I left on_changes_only filtering and the release workflow alone, and touched no file outside src/orcareplay/ and test/orcareplay/.

Happy to adjust the description, the pinned helper version, or the test scenario if you would rather they match a different exemplar.

@koralowiec

Copy link
Copy Markdown
Member

Hi @xizhuomengcontin! I have to close this PR as I don't consider OrcaReplay a core feature, please see #244 for more info

@koralowiec koralowiec closed this Sep 13, 2026
@xizhuomengcontin

Copy link
Copy Markdown
Author

Completely fair — thanks for saying it plainly rather than letting it sit in the queue, and for writing #244.

Reading that, the timing was just unlucky on my part: I opened this the same day you decided to scope the project down, and a per-tool feature is exactly the kind of thing you are pruning. No argument from me.

Your point that specific tools belong in mise/uv/the Dockerfile rather than as features is a good one, and it is the more useful path for us anyway — I will take it there instead.

Good luck with the scope-down; keeping the largest feature collection alive for two years was a real service.

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.

3 participants