Changelog
latest
-
config.yamlacceptsharness-args: extra arguments per harness (pi,claude,codex), forwarded to the agent. They are placed ahead of anything passed after--, so a trailing prompt stays last. Removes the need to type flags such as--dangerously-skip-permissionson every run. -
config.yamlacceptspresetandenvlists, applied to every run as if passed with--presetand--env. Command-line values are appended to the configured ones. Presets are deduplicated, so naming an always-on preset again on the command line no longer produces a duplicate mount, which the container engines reject. -
config.yamlacceptsno-cache,verbose,quiet, andpreserve-containerbooleans, each setting the corresponding flag on every run. They can only turn a flag on; the flags have no negated form. -
A preset named in
config.yamlbut missing fromenvironments.yamlnow reportsconfig.yamland the offending name, instead of an error that reads as a mistyped--presetflag. -
--tmpreplaced by theorka tmpsubcommand. Same behaviour: the workdir is a freshmktemp -ddirectory that persists after the container exits. -
--scratchpad <NAME>replaced by theorka scratchpad [NAME]subcommand. Without a name, existing scratchpads are shown in an interactive fuzzy selector (type to narrow, arrows or Ctrl-N/Ctrl-P to move, Enter to select, Esc to abort).orka scratchpad --listprints the names without starting a container.orka config pathnow also prints the scratchpad root. -
Podman backend:
--useris no longer passed. It was redundant with--userns=keep-id, and it made Podman reverse-resolve the numeric UID to a username, which fails for LDAP/sssd users who are absent from/etc/passwd. Those runs failed withunknown user error looking up userand exit status 125. -
Bubblewrap backend: the agent binary’s package tree is now bind-mounted, not just its
bindirectory. npm-style installs place a relative symlink inbinpointing intolib/node_modules/...; binding onlybinleft that symlink dangling and the sandbox failed withexecvp ...: No such file or directory. The interpreter named in a script’s shebang is now mounted too. -
harness-version,pi-path,claude-path, andcodex-pathinconfig.yamlare now honoured. They were read as snake_case while the documented and shipped format is kebab-case, so all four were silently ignored. -
agent-browser and Chromium are now bundled directly into the base image (
orka-base). The separateorka-browser-baseintermediate image is gone. The base builds once and is shared across harness rebuilds as before. -
Chrome is now reachable by the container’s runtime user.
agent-browser installran as root during the base build and left the download in/root/.agent-browser/browsers, so browser tool calls failed in the running container. The download is relocated to/opt/browser-cacheand exposed throughAGENT_BROWSER_EXECUTABLE_PATH. The unusedPLAYWRIGHT_BROWSERS_PATHvariable is gone; custom base images that set it should setAGENT_BROWSER_EXECUTABLE_PATHinstead. -
--initreplaced byorka config init. New sibling subcommands:orka config completions <SHELL>prints a shell completion script (bash, zsh, fish, elvish, powershell), andorka config pathprints the configuration paths orka reads. -
--no-browserremoved. To run without browser support, provide a custom~/.config/orka/Dockerfile.basethat omits agent-browser.
previous
--initto write the bundled config templates (config.yaml,environments.yaml,orkashadow) to~/.config/orka/. Files that already exist are skipped.--quietto suppress image build output (build output is now shown by default; use--quietto hide it).--verbosenow passesVERBOSE=1into the container environment instead of controlling build output visibility.- Podman backend:
--userns=keep-idis now passed automatically so container file ownership matches the host user. --engine bubblewrapto run the agent in a bubblewrap user-namespace sandbox instead of a container. No image is built; the agent binary must already be installed on the host. Bind-mounts system paths, agent config directories, and user-specified volumes into the namespace. Linux only.pi-path,claude-path,codex-pathin~/.config/orka/config.yamlto set explicit paths to agent binaries that are not on PATH. Used only by the bubblewrap backend.--engineto select the container engine:docker(default) orpodman. The engine binary is used for all build and run commands.~/.config/orka/config.yamlfor persistent user defaults. Supportsengineandharness. Command-line flags always win. Copy the bundledconfig/config.yamlto get started.orkashadowfiles to hide sensitive files from the agent. Files matching patterns in~/.config/orka/orkashadow(global) or.orkashadow(per-repo, placed at the root of any mounted directory) are replaced with empty read-only stubs inside the container. The agent can see the filename but cannot read or write the content. Uses.gitignoresyntax. Copy the bundledconfig/orkashadowfor annotated examples.--file/-fto mount specific files into the container rather than the entire working directory. Repeatable. Each file is mounted at its host path; the container workdir is set to the invoking directory.--tmpto create a temporary directory withmktemp -dand use it as the container workdir. The directory persists after the container exits.--scratchpad <NAME>to create or reuse~/.local/share/orka/scratch/<NAME>as the container workdir.- Support claude-code (
--harness claude) - Support Codex (
--harness codex) --presetto mount named volume and env var sets; presets can be stacked--harness-versionto pin the agent version installed in the image--preserve-containerto keep the container after it exits (containers are removed on exit by default)--dry-runto print commands without executing them