Skip to content

[Feature]: Allow configuring OpenCode binary and launch arguments globally and per workspace #505

@rbcb-dev

Description

@rbcb-dev

App Variant

Server CLI / Desktop

Operating System & Version

Linux, macOS, Windows

This feature request is cross-platform, but it is especially useful on Linux/macOS where users often launch tools through wrapper scripts, sandboxing commands, or alternative OpenCode installations.

Issue Summary

Please allow configuring the OpenCode executable and additional launch arguments used by CodeNomad when starting OpenCode workspaces.

Today, CodeNomad appears to support selecting or resolving the OpenCode binary globally, but the server launch arguments are effectively controlled by CodeNomad. It would be useful to support:

  1. A configurable OpenCode binary path.
  2. Configurable extra arguments for the OpenCode process.
  3. Optional per-workspace/per-project overrides for the binary and arguments.

This would make it possible to use custom wrappers, sandboxing, profile-specific launchers, environment-specific OpenCode installs, or alternate OpenCode versions without replacing the global opencode binary.

I searched existing issues/PRs before opening this. I found a related but different issue about respecting OPENCODE_CONFIG_DIR when launching OpenCode workspaces, but I did not find an issue specifically asking for configurable OpenCode binary arguments and per-workspace launch overrides.

Steps to Reproduce

Example use cases that are difficult or not possible today:

  1. Use a wrapper command instead of plain opencode.
  2. Add custom arguments before or around the OpenCode invocation.
  3. Launch OpenCode through a sandboxing or isolation tool such as bubblewrap.
  4. Use a different OpenCode binary or wrapper for different projects/workspaces.
  5. Use different environment-specific OpenCode launch setups for work projects, personal projects, or experimental projects.

A generic desired launch shape would be:

<custom-binary> <custom-args...> serve --port 0 --print-logs --log-level <level>

Examples:

/path/to/custom-opencode-wrapper serve --port 0 --print-logs --log-level debug
bwrap --dev-bind / / --tmpfs /some/path opencode serve --port 0 --print-logs --log-level debug
/path/to/project-specific-opencode-wrapper serve --port 0 --print-logs --log-level debug

Today this is awkward if CodeNomad only supports a single binary path and hardcodes the rest of the arguments.

Expected Behavior

CodeNomad should support configurable OpenCode launch settings.

Suggested global config shape:

server:
  opencode:
    binary: /path/to/opencode-or-wrapper
    args:
      - serve
      - --port
      - "0"
      - --print-logs
      - --log-level
      - debug

Alternatively, if CodeNomad needs to keep ownership of the required serve --port 0 ... arguments, it could support prepend/append arguments instead:

server:
  opencode:
    binary: /path/to/opencode-or-wrapper
    prependArgs: []
    appendArgs: []

or a backward-compatible shape:

server:
  opencodeBinary: /path/to/opencode-or-wrapper
  opencodeExtraArgs:
    - --some-custom-flag

Optional per-workspace/per-project override:

workspaces:
  - path: /path/to/project-a
    opencode:
      binary: /path/to/opencode-wrapper-a
      args: []

  - path: /path/to/project-b
    opencode:
      binary: /path/to/opencode-wrapper-b
      args: []

Another possible approach would be to allow a project-local config file such as .codenomad/config.yaml:

opencode:
  binary: /path/to/project-wrapper
  args: []

Expected result:

  • users can configure the OpenCode executable globally;
  • users can configure additional launch arguments;
  • CodeNomad still appends or manages its required server arguments safely;
  • optional per-project overrides allow different workspaces to use different OpenCode launch setups;
  • the UI/logs show the resolved binary and final launch command for debugging, with sensitive values redacted.

Logs & Screenshots

Not applicable. This is a feature request.

Additional Context

This would help with several legitimate workflows:

  • using wrapper scripts around OpenCode;
  • using different OpenCode installations;
  • testing different OpenCode versions;
  • launching OpenCode through sandboxing or isolation tools such as bubblewrap;
  • applying project-specific environment variables or runtime isolation;
  • using different authentication/profile setups per workspace;
  • keeping workspaces reproducible without changing the global system opencode binary.

The per-project override is optional, but it would be very useful. A global binary + args setting would already solve many cases.

It would also be useful if CodeNomad exposed the resolved launch command in logs or a debug UI, with sensitive environment variables redacted.

Related prior work / similar area:

  • There is an existing issue about respecting user-provided OPENCODE_CONFIG_DIR when launching OpenCode workspaces. This feature request is related to the same launch-configuration area, but asks specifically for configurable binary/arguments and optional per-workspace overrides.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    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