diff --git a/nix/templates/harness-base.nix b/nix/templates/harness-base.nix index e58829d8..d80fc572 100644 --- a/nix/templates/harness-base.nix +++ b/nix/templates/harness-base.nix @@ -134,6 +134,29 @@ in ''; }; + options.hyperhive.effortLevel = lib.mkOption { + type = lib.types.enum [ + "medium" + "high" + "xhigh" + ]; + default = "medium"; + example = "high"; + description = '' + Baseline claude effort level for this agent. Rendered into the + `HYPERHIVE_EFFORT_LEVEL` environment variable; the harness resolves + effort as operator-override-file → this env → built-in `"medium"`, + and passes the result to `claude --effort` at turn launch. + + `"medium"` (the default) keeps token spend low and works well with + the harness across families. `"high"` matches the current platform + default; `"xhigh"` is recommended for coding / high-autonomy work on + capable models (Opus 4.8+) at higher token cost. The operator can + override at runtime per-agent via the web UI (applied on the next + session); any rebuild that changes this option resets that override. + ''; + }; + options.hyperhive.allowedBashPatterns = lib.mkOption { type = lib.types.listOf lib.types.str; default = [ ]; @@ -912,6 +935,10 @@ in # surfaces it to the frontend; an empty value falls back to the # built-in default list. HIVE_AVAILABLE_MODELS = lib.concatStringsSep "," config.hyperhive.availableModels; + # HYPERHIVE_EFFORT_LEVEL is the per-agent baseline effort (see + # hyperhive.effortLevel). The harness resolves operator-override-file + # → this env → "medium" and passes it to claude --effort at turn launch. + HYPERHIVE_EFFORT_LEVEL = config.hyperhive.effortLevel; HIVE_ASSETS_DIR = "${pkgs.hyperhive-assets}/share/hyperhive"; SHELL = "${pkgs.bashInteractive}/bin/bash"; }