{
  inputs,
  lib,
  ...
}: {
  coding.agents.opencode = {
    enable = true;
    agentsInput = inputs.agents;
  };

  coding.opencode = {
    enable = true;

    ohMyOpencodeSettings = {
      agents = {
        sisyphus.model = "litellm/claude-opus-4-6";
        oracle.model = "litellm/claude-sonnet-4-6";
        librarian.model = "litellm/claude-sonnet-4-6";
        explore.model = "litellm/claude-haiku-4-5";
        multimodal-looker.model = "litellm/gpt-5.3-codex";
        prometheus.model = "litellm/claude-opus-4-6";
        metis.model = "litellm/claude-opus-4-6";
        momus.model = "litellm/claude-opus-4-6";
        atlas.model = "litellm/claude-sonnet-4-6";
      };
      categories = {
        visual-engineering.model = "zai-coding-plan/glm-5.1";
        ultrabrain.model = "litellm/claude-opus-4-6";
        deep.model = "litellm/claude-sonnet-4-6";
        artistry.model = "zai-coding-plan/glm-5.1";
        quick.model = "litellm/claude-haiku-4-5";
        unspecified-low.model = "litellm/claude-sonnet-4-6";
        unspecified-high.model = "litellm/claude-opus-4-6";
        writing.model = "zai-coding-plan/glm-5.1";
      };
    };
  };

  # Keep TUI settings in programs.opencode.tui to satisfy OpenCode v1.2.15+.
  programs.opencode.tui.theme = "opencode";

  # Override legacy default settings to avoid deprecated TUI keys in settings.
  programs.opencode.settings = lib.mkForce {
    plugin = ["oh-my-openagent"];
    formatter = {
      alejandra = {
        command = ["alejandra" "-q" "-"];
        extensions = [".nix"];
      };
    };

    # AZ-Gruppe LiteLLM endpoint + available models
    provider = {
      litellm = {
        npm = "@ai-sdk/openai-compatible";
        name = "LiteLLM (AZ-Gruppe)";
        options.baseURL = "https://llm.az-gruppe.com/v1";
        models = {
          "gpt-5.2" = {
            name = "GPT-5.2";
            limit = {
              context = 400000;
              output = 128000;
            };
          };
          "gpt-5.3-codex" = {
            name = "GPT-5.3 Codex";
            limit = {
              context = 400000;
              output = 128000;
            };
          };
          "claude-haiku-4-5" = {
            name = "Claude Haiku 4.5";
            options = {
              thinking = {
                type = "enabled";
                budget_tokens = 16000;
              };
            };
            limit = {
              context = 200000;
              output = 64000;
            };
          };
          "claude-sonnet-4-6" = {
            name = "Claude Sonnet 4.6";
            options = {
              thinking = {
                type = "enabled";
                budget_tokens = 16000;
              };
            };
            limit = {
              context = 200000;
              output = 64000;
            };
          };
          "claude-opus-4-6" = {
            name = "Claude Opus 4.6";
            options = {
              thinking = {
                type = "enabled";
                budget_tokens = 16000;
              };
            };
            limit = {
              context = 200000;
              output = 128000;
            };
          };
        };
      };
    };
  };
}
