summary refs log tree commit diff
path: root/modules/agent.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/agent.nix')
-rw-r--r--modules/agent.nix168
1 files changed, 0 insertions, 168 deletions
diff --git a/modules/agent.nix b/modules/agent.nix
deleted file mode 100644
index 880919b..0000000
--- a/modules/agent.nix
+++ /dev/null
@@ -1,168 +0,0 @@
-{ config, pkgs, hermes-agent, ... }:
-
-{
-  imports = [
-    hermes-agent.nixosModules.default
-  ];
-
-  age.secrets.renard-agent = {
-    file = ../secrets/renard-agent.age;
-    owner = "renard";
-    group = "renard";
-    mode = "0440";
-  };
-
-  users.groups.renard = { };
-  users.users.renard = {
-    isSystemUser = true;
-    group = "renard";
-    home = "/home/renard";
-    createHome = true;
-    shell = pkgs.bashInteractive;
-  };
-
-  services.hermes-agent = {
-    enable = true;
-
-    # the agent has it's own user on the host under
-    # which it runs and can change state at.
-    user = "renard";
-    group = "renard";
-    stateDir = "/home/renard";
-    createUser = false;
-
-    extraDependencyGroups = [ "messaging" ];
-
-    # packages for the agent to work with.
-    # it should also always be able to call `nix-shell` to gain access to more tools.
-    extraPackages = with pkgs; [
-      nix
-      nixfmt-rfc-style
-
-      openssh
-      tailscale
-
-      docker_29
-
-      jq
-      yq-go
-      ripgrep
-      fd
-      tree
-      file
-      unzip
-      gnused
-      gawk
-
-      curl
-      wget
-
-      htop
-      glances
-      lsof
-      iproute2
-      iputils
-      inetutils
-
-      dig
-      tcpdump
-      nmap
-
-      git
-
-      vim
-    ];
-
-    environmentFiles = [
-      # required secrets:
-      # * OPENROUTER_API_KEY
-      # * DISCORD_BOT_TOKEN
-      # * DISCORD_ALLOWED_USERS
-      config.age.secrets.renard-agent.path
-    ];
-
-    documents = {
-      "SOUL.md" = ../assets/agent/SOUL.md;
-    };
-
-    settings = {
-      model = {
-        provider = "openrouter";
-        # my current favorite budget model, with recent price
-        # changes by far the cheapest for the performance,
-        # with other chinese models also being close.
-        # only modality is text, requires auxiliary vision model!
-        # native price: $0.44/m in, $0.87/m out.
-        default = "deepseek/deepseek-v4-pro";
-      };
-
-      agent = {
-        reasoning_effort = "high"; # 'high' rated highest in benchmarks, tune to taste!
-        max_turns = 90;
-      };
-
-      auxiliary.vision = {
-        # auxiliary vision model for image comprehension.
-        # this qwen model is built for this exact use-case and is extremely
-        # cheap for the performance (though below gemini), however,
-        # it does not do any reasoning on the visual input!
-        # possible upgrade path for reasoning: qwen3-vl-30b-a3b-thinking
-        # native price: $0.13/m in, $1.56/m out.
-        provider = "openrouter";
-        model = "qwen/qwen3-vl-32b-instruct";
-        timeout = 120;
-      };
-
-      toolsets = [ "all" ];
-
-      terminal = {
-        backend = "local";
-        persistent_shell = true;
-        timeout = 180;
-      };
-
-      memory = {
-        memory_enabled = true;
-        user_profile_enabled = true;
-      };
-
-      # slightly higher limits and targets than default for better
-      # long session preservation.
-      compression = {
-        enabled = true;
-        threshold = 0.75;
-        target_ratio = 0.35;
-        protect_last_n = 40;
-      };
-
-      # progressive message editing, a little silly in discord but looks like
-      # the classic llm chats.
-      streaming = {
-        enabled = true;
-      };
-      display = {
-        streaming = true; # small regression with streaming.enabled, keep both on.
-        tool_progress = "new"; # only show fresh new tool calls, not every call.
-      };
-
-      discord = {
-        require_mention = false;
-        thread_require_mention = false;
-        auto_thread = false;
-        reactions = true;
-        history_backfill = true;
-        allow_mentions = {
-          everyone = false;
-          roles = false;
-          users = true;
-          replied_user = true;
-        };
-      };
-
-      unauthorized_dm_behavior = "ignore"; # ignore strangers
-
-      timezone = "Europe/Berlin";
-      group_sessions_per_user = false;
-    };
-  };
-}