diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 5de9830..5f44807 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -1,3 +1,3 @@ {"_type":"issue","id":"home-profile-restructuring-edz","title":"Create copy-hermes-skills systemd service","status":"closed","priority":1,"issue_type":"task","assignee":"m3tm3re","owner":"p@m3ta.dev","estimated_minutes":1,"created_at":"2026-04-26T12:30:10Z","created_by":"m3tm3re","updated_at":"2026-04-26T12:44:42Z","started_at":"2026-04-26T12:36:30Z","closed_at":"2026-04-26T12:44:42Z","close_reason":"Created systemd service in hosts/m3-hermes/services/hermes-agent.nix - copies skills to /var/lib/hermes/.agents/skills before hermes-agent starts","labels":["hermes-agent","nixos"],"dependencies":[{"issue_id":"home-profile-restructuring-edz","depends_on_id":"home-profile-restructuring-ycz","type":"blocks","created_at":"2026-04-26T14:30:57Z","created_by":"m3tm3re","metadata":"{}"}],"dependency_count":1,"dependent_count":1,"comment_count":0} -{"_type":"issue","id":"home-profile-restructuring-ycz","title":"Build hermes-agent skills using mkOpencodeSkills","status":"closed","priority":1,"issue_type":"task","assignee":"m3tm3re","owner":"p@m3ta.dev","estimated_minutes":2,"created_at":"2026-04-26T12:30:09Z","created_by":"m3tm3re","updated_at":"2026-04-26T12:35:15Z","started_at":"2026-04-26T12:31:35Z","closed_at":"2026-04-26T12:35:15Z","close_reason":"Added inputs to module signature and defined hermesSkills via inputs.agents.lib.mkOpencodeSkills with basecamp, anthropic, and kestra external skills. Verified with nixos-rebuild dry-run --flake .#m3-hermes (no errors).","labels":["hermes-agent","nixos"],"dependency_count":0,"dependent_count":1,"comment_count":0} +{"_type":"issue","id":"home-profile-restructuring-ycz","title":"Build hermes-agent skills using mkSkills:w","status":"closed","priority":1,"issue_type":"task","assignee":"m3tm3re","owner":"p@m3ta.dev","estimated_minutes":2,"created_at":"2026-04-26T12:30:09Z","created_by":"m3tm3re","updated_at":"2026-04-26T12:35:15Z","started_at":"2026-04-26T12:31:35Z","closed_at":"2026-04-26T12:35:15Z","close_reason":"Added inputs to module signature and defined hermesSkills via inputs.agents.lib.mkSkills with basecamp, anthropic, and kestra external skills. Verified with nixos-rebuild dry-run --flake .#m3-hermes (no errors).","labels":["hermes-agent","nixos"],"dependency_count":0,"dependent_count":1,"comment_count":0} {"_type":"issue","id":"home-profile-restructuring-cxa","title":"Verify skills available at /var/lib/hermes/.agents/skills","status":"closed","priority":2,"issue_type":"task","assignee":"m3tm3re","owner":"p@m3ta.dev","estimated_minutes":1,"created_at":"2026-04-26T12:30:10Z","created_by":"m3tm3re","updated_at":"2026-04-26T12:50:58Z","started_at":"2026-04-26T12:38:15Z","closed_at":"2026-04-26T12:50:58Z","close_reason":"Manually verified - skills are present at /var/lib/hermes/.agents/skills on m3-hermes","labels":["hermes-agent","testing"],"dependencies":[{"issue_id":"home-profile-restructuring-cxa","depends_on_id":"home-profile-restructuring-edz","type":"blocks","created_at":"2026-04-26T14:30:57Z","created_by":"m3tm3re","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0} diff --git a/flake.lock b/flake.lock index 61412cb..e071254 100644 --- a/flake.lock +++ b/flake.lock @@ -47,11 +47,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1777399938, - "narHash": "sha256-xXPqUQezDdDtF8MbpZnwD1HkybOYwF92evx8rJ6OXCU=", + "lastModified": 1778518220, + "narHash": "sha256-6AQs9VZ0/DuD4njPbYHRE4v+SgJc6SBrGwemTWxikVc=", "ref": "refs/heads/master", - "rev": "9a91f1ee0cf011a7eaf1f16a9e17610b0457e055", - "revCount": 85, + "rev": "b6e1aaa6261c5056d024d8d4785659eaa4e675e6", + "revCount": 87, "type": "git", "url": "ssh://gitea@code.m3ta.dev/m3tam3re/AGENTS" }, @@ -512,11 +512,11 @@ ] }, "locked": { - "lastModified": 1778444552, - "narHash": "sha256-f18pIiR9q/p1vHY93gmAum7aHhQOG49oGvAB9+lptRo=", + "lastModified": 1778503501, + "narHash": "sha256-08L/X4/do7nET4rzidJ76eV/1r+mB7DchVpdPypsghc=", "owner": "nix-community", "repo": "home-manager", - "rev": "dcebe66f958673729896eec2de4abfd86ef22d21", + "rev": "85ba629c79449badf4338117c27f0ee92b4b9f1a", "type": "github" }, "original": { @@ -602,11 +602,11 @@ "nur": "nur" }, "locked": { - "lastModified": 1778340253, - "narHash": "sha256-Fa/41Ab4AI6zxKEjJ8IjNWIapFMXm/L78IMUTJFqaj4=", + "lastModified": 1778516940, + "narHash": "sha256-BhC9zIEmXoWY0TK0achwUueKhzUA5sja6bjonzrEPxo=", "ref": "refs/heads/master", - "rev": "b7b9addbe0f2064db82906f3cc1cf6b4f7a82f31", - "revCount": 24, + "rev": "7894a89843559cb1597bf0f32e0579f37052f497", + "revCount": 28, "type": "git", "url": "ssh://gitea@code.m3ta.dev/m3tam3re/m3ta-home" }, @@ -627,11 +627,11 @@ "openspec": "openspec" }, "locked": { - "lastModified": 1778464839, - "narHash": "sha256-AoJGWHEiUyO+EvyxxkdW5YK0jV6Q7nOHDoDrwT58cZw=", + "lastModified": 1778508052, + "narHash": "sha256-kxzZvJv757TGfHReR21aX6N/jkGMWzGSy9GQEclYD4Y=", "ref": "refs/heads/master", - "rev": "14fd00426cebeca2bd918e1600c038e886d667fb", - "revCount": 293, + "rev": "8113723a48c4afa016881ccd5bc4be3fad2c7d5f", + "revCount": 294, "type": "git", "url": "ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs" }, @@ -649,11 +649,11 @@ "openspec": "openspec_2" }, "locked": { - "lastModified": 1778309566, - "narHash": "sha256-VMc0IOYWzNj6+KdWqggpZ9Mt9MkxYPcKP7smOIkbapo=", + "lastModified": 1778518789, + "narHash": "sha256-9WZvO2BBofC2Wp4dvP4/aQ6Jhmcxh9lEGTYj09hLXrI=", "ref": "refs/heads/master", - "rev": "db1a29df1584c0046a110ef693229be73b986cfc", - "revCount": 289, + "rev": "d64c581516c02702ec28e5d2304330d7b035235d", + "revCount": 295, "type": "git", "url": "ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs" }, @@ -830,11 +830,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1778462231, - "narHash": "sha256-ETxNoYDzDJRsQ9i8H20SLHfpyEhS5RsO6Es9rQiGr0Y=", + "lastModified": 1778507606, + "narHash": "sha256-6Yc2dIhijc8G+dbMNocyclxF19dUrjaT+EeXGrXmXlg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "38ebdae768604c382e08a0dd08912ef79425fb7e", + "rev": "39a7b8d815fcc8b689d56fc4a3fa8de4ef93d169", "type": "github" }, "original": { @@ -846,11 +846,11 @@ }, "nixpkgs-master_2": { "locked": { - "lastModified": 1778291595, - "narHash": "sha256-XZRSWn32HgzPiVBUgFu4QgefWq6LjXNljQbmdf52Q5U=", + "lastModified": 1778507606, + "narHash": "sha256-6Yc2dIhijc8G+dbMNocyclxF19dUrjaT+EeXGrXmXlg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "67d18561bfe53cee9d84a19cb5c0be3c8ef5c186", + "rev": "39a7b8d815fcc8b689d56fc4a3fa8de4ef93d169", "type": "github" }, "original": { @@ -1079,11 +1079,11 @@ "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1778482942, - "narHash": "sha256-sZuVkKuDiwj0TG9UG+1hmMnW/cLKbmY++xw4P6TRVLw=", + "lastModified": 1778506944, + "narHash": "sha256-lU0Bleh0reE+WU7j8Uiqsu6ekPav50L8sXsgOvEQS+0=", "owner": "nix-community", "repo": "NUR", - "rev": "a89886f8103fe501ba97ad74dce6d087db69c9f9", + "rev": "0166493cfe4e0e9927435c1cfbf5505cfb0d10d1", "type": "github" }, "original": { diff --git a/hosts/m3-atlas/services/hermes-agent.nix b/hosts/m3-atlas/services/hermes-agent.nix deleted file mode 100644 index 8c72954..0000000 --- a/hosts/m3-atlas/services/hermes-agent.nix +++ /dev/null @@ -1,191 +0,0 @@ -{config, ...}: let - # Default ElevenLabs voice: Bella (German-capable female) - elevenlabsVoiceId = "hpp4J3VqNfWAUOO0d1Us"; -in { - services.hermes-agent = { - enable = true; - addToSystemPackages = true; - - # Secrets via agenix - environmentFiles = [config.age.secrets."hermes-env".path]; - - # Non-secret environment variables - environment = { - # - }; - - # ── Container mode (podman) ────────────────────────────────────────── - container = { - enable = true; - backend = "podman"; - }; - - settings = { - # ── Model ────────────────────────────────────────────────────────── - model = { - default = "glm-5.1"; - provider = "zai"; - base_url = "https://api.z.ai/api/coding/paas/v4/"; - }; - - credential_pool_strategies = { - zai = "fill_first"; - }; - - toolsets = ["all"]; - - # ── Agent ────────────────────────────────────────────────────────── - agent = { - max_turns = 90; - gateway_timeout = 1800; - tool_use_enforcement = "auto"; - }; - - # ── Terminal ─────────────────────────────────────────────────────── - terminal = { - backend = "local"; - modal_mode = "auto"; - cwd = "."; - timeout = 180; - persistent_shell = true; - }; - - # ── Browser ──────────────────────────────────────────────────────── - browser = { - inactivity_timeout = 120; - command_timeout = 30; - cloud_provider = "local"; - }; - - # ── Checkpoints / Compression ────────────────────────────────────── - checkpoints = { - enabled = true; - max_snapshots = 50; - }; - - file_read_max_chars = 100000; - - compression = { - enabled = true; - threshold = 0.5; - target_ratio = 0.2; - protect_last_n = 20; - }; - - # ── Display ──────────────────────────────────────────────────────── - display = { - compact = false; - personality = "kawaii"; - resume_display = "full"; - busy_input_mode = "interrupt"; - inline_diffs = true; - skin = "default"; - tool_progress = "all"; - }; - - # ── TTS / STT / Voice ────────────────────────────────────────────── - tts = { - provider = "elevenlabs"; - elevenlabs = { - voice_id = elevenlabsVoiceId; - model_id = "eleven_multilingual_v2"; - }; - }; - - stt = { - enabled = true; - provider = "local"; - local = {model = "base";}; - }; - - voice = { - record_key = "ctrl+b"; - max_recording_seconds = 120; - silence_threshold = 200; - silence_duration = 3.0; - }; - - # ── Memory ───────────────────────────────────────────────────────── - memory = { - memory_enabled = true; - user_profile_enabled = true; - memory_char_limit = 2200; - user_char_limit = 1375; - }; - - # ── Delegation ───────────────────────────────────────────────────── - delegation = { - max_iterations = 50; - }; - - # ── Discord ──────────────────────────────────────────────────────── - discord = { - require_mention = true; - auto_thread = true; - reactions = true; - }; - - # ── Approvals / Security ─────────────────────────────────────────── - approvals = { - mode = "manual"; - timeout = 60; - }; - - security = { - redact_secrets = true; - tirith_enabled = true; - tirith_fail_open = true; - }; - - # ── Cron / Session ───────────────────────────────────────────────── - cron = {wrap_response = true;}; - - session_reset = { - mode = "both"; - idle_minutes = 1440; - at_hour = 4; - }; - - # ── Web ──────────────────────────────────────────────────────────── - web = {backend = "exa";}; - - # ── Platform Toolsets ────────────────────────────────────────────── - platform_toolsets = { - cli = [ - "browser" - "clarify" - "code_execution" - "cronjob" - "delegation" - "file" - "image_gen" - "memory" - "session_search" - "skills" - "terminal" - "todo" - "tts" - "vision" - "web" - ]; - telegram = [ - "browser" - "clarify" - "code_execution" - "cronjob" - "delegation" - "file" - "image_gen" - "memory" - "session_search" - "skills" - "terminal" - "todo" - "tts" - "vision" - "web" - ]; - }; - }; - }; -} diff --git a/hosts/m3-hermes/services/hermes-agent.nix b/hosts/m3-hermes/services/hermes-agent.nix index 68fcf26..d67bcd7 100644 --- a/hosts/m3-hermes/services/hermes-agent.nix +++ b/hosts/m3-hermes/services/hermes-agent.nix @@ -16,7 +16,7 @@ gccLibPath = "${pkgs.stdenv.cc.cc.lib}/lib"; # Build skills using agents flake lib for hermes user - hermesSkills = inputs.agents.lib.mkOpencodeSkills { + hermesSkills = inputs.agents.lib.mkSkills { inherit pkgs; customSkills = "${inputs.agents}/skills"; externalSkills = [ @@ -79,7 +79,13 @@ in { enable = true; addToSystemPackages = true; - extraPackages = with pkgs; [docker git tea nix]; + extraPackages = with pkgs; [ + docker + git + tea + nix + zellij + ]; # Secrets via agenix environmentFiles = [ @@ -240,6 +246,9 @@ in { user_id = "@chiron:m3ta.dev"; allowed_users = ["@m3tam3re:m3ta.dev"]; encryption = true; + group_sessions_per_user = true; + auto_thread = true; + dm_mention_threads = true; }; # ── Approvals / Security ─────────────────────────────────────────── diff --git a/hosts/m3-kratos/services/default.nix b/hosts/m3-kratos/services/default.nix index 1c01a34..829bdc5 100644 --- a/hosts/m3-kratos/services/default.nix +++ b/hosts/m3-kratos/services/default.nix @@ -1,7 +1,6 @@ {pkgs, ...}: { imports = [ ./containers - ./hermes-agent.nix ./mem0.nix # ./n8n.nix ./netbird.nix diff --git a/hosts/m3-kratos/services/hermes-agent.nix b/hosts/m3-kratos/services/hermes-agent.nix deleted file mode 100644 index f7fc934..0000000 --- a/hosts/m3-kratos/services/hermes-agent.nix +++ /dev/null @@ -1,184 +0,0 @@ -{config, ...}: let - # Default ElevenLabs voice: Bella (German-capable female) - elevenlabsVoiceId = "hpp4J3VqNfWAUOO0d1Us"; -in { - services.hermes-agent = { - enable = true; - addToSystemPackages = true; - - # Secrets via agenix - environmentFiles = [config.age.secrets."hermes-env".path]; - - # Non-secret environment variables - environment = { - GLM_BASE_URL = "https://api.z.ai/api/coding/paas/v4/"; - }; - - settings = { - # ── Model ────────────────────────────────────────────────────────── - model = { - default = "glm-5.1"; - provider = "zai"; - }; - - credential_pool_strategies = { - zai = "fill_first"; - }; - - toolsets = ["all"]; - - # ── Agent ────────────────────────────────────────────────────────── - agent = { - max_turns = 90; - gateway_timeout = 1800; - tool_use_enforcement = "auto"; - }; - - # ── Terminal ─────────────────────────────────────────────────────── - terminal = { - backend = "ssh"; - modal_mode = "auto"; - cwd = "."; - timeout = 180; - persistent_shell = true; - }; - - # ── Browser ──────────────────────────────────────────────────────── - browser = { - inactivity_timeout = 120; - command_timeout = 30; - cloud_provider = "local"; - }; - - # ── Checkpoints / Compression ────────────────────────────────────── - checkpoints = { - enabled = true; - max_snapshots = 50; - }; - - file_read_max_chars = 100000; - - compression = { - enabled = true; - threshold = 0.5; - target_ratio = 0.2; - protect_last_n = 20; - }; - - # ── Display ──────────────────────────────────────────────────────── - display = { - compact = false; - personality = "kawaii"; - resume_display = "full"; - busy_input_mode = "interrupt"; - inline_diffs = true; - skin = "default"; - tool_progress = "all"; - }; - - # ── TTS / STT / Voice ────────────────────────────────────────────── - tts = { - provider = "elevenlabs"; - elevenlabs = { - voice_id = elevenlabsVoiceId; - model_id = "eleven_multilingual_v2"; - }; - }; - - stt = { - enabled = true; - provider = "local"; - local = {model = "base";}; - }; - - voice = { - record_key = "ctrl+b"; - max_recording_seconds = 120; - silence_threshold = 200; - silence_duration = 3.0; - }; - - # ── Memory ───────────────────────────────────────────────────────── - memory = { - memory_enabled = true; - user_profile_enabled = true; - memory_char_limit = 2200; - user_char_limit = 1375; - }; - - # ── Delegation ───────────────────────────────────────────────────── - delegation = { - max_iterations = 50; - }; - - # ── Discord ──────────────────────────────────────────────────────── - discord = { - require_mention = true; - auto_thread = true; - reactions = true; - }; - - # ── Approvals / Security ─────────────────────────────────────────── - approvals = { - mode = "manual"; - timeout = 60; - }; - - security = { - redact_secrets = true; - tirith_enabled = true; - tirith_fail_open = true; - }; - - # ── Cron / Session ───────────────────────────────────────────────── - cron = {wrap_response = true;}; - - session_reset = { - mode = "both"; - idle_minutes = 1440; - at_hour = 4; - }; - - # ── Web ──────────────────────────────────────────────────────────── - web = {backend = "exa";}; - - # ── Platform Toolsets ────────────────────────────────────────────── - platform_toolsets = { - cli = [ - "browser" - "clarify" - "code_execution" - "cronjob" - "delegation" - "file" - "image_gen" - "memory" - "session_search" - "skills" - "terminal" - "todo" - "tts" - "vision" - "web" - ]; - telegram = [ - "browser" - "clarify" - "code_execution" - "cronjob" - "delegation" - "file" - "image_gen" - "memory" - "session_search" - "skills" - "terminal" - "todo" - "tts" - "vision" - "web" - ]; - }; - }; - }; -} diff --git a/issues.jsonl b/issues.jsonl index 16e5be1..8910474 100644 --- a/issues.jsonl +++ b/issues.jsonl @@ -1,3 +1,3 @@ {"id":"home-profile-restructuring-edz","title":"Create copy-hermes-skills systemd service","status":"closed","priority":1,"issue_type":"task","assignee":"m3tm3re","owner":"p@m3ta.dev","estimated_minutes":1,"created_at":"2026-04-26T12:30:10Z","created_by":"m3tm3re","updated_at":"2026-04-26T12:44:42Z","started_at":"2026-04-26T12:36:30Z","closed_at":"2026-04-26T12:44:42Z","close_reason":"Created systemd service in hosts/m3-hermes/services/hermes-agent.nix - copies skills to /var/lib/hermes/.agents/skills before hermes-agent starts","labels":["hermes-agent","nixos"],"dependencies":[{"issue_id":"home-profile-restructuring-edz","depends_on_id":"home-profile-restructuring-ycz","type":"blocks","created_at":"2026-04-26T14:30:57Z","created_by":"m3tm3re","metadata":"{}"}],"dependency_count":1,"dependent_count":1,"comment_count":0} -{"id":"home-profile-restructuring-ycz","title":"Build hermes-agent skills using mkOpencodeSkills","status":"closed","priority":1,"issue_type":"task","assignee":"m3tm3re","owner":"p@m3ta.dev","estimated_minutes":2,"created_at":"2026-04-26T12:30:09Z","created_by":"m3tm3re","updated_at":"2026-04-26T12:35:15Z","started_at":"2026-04-26T12:31:35Z","closed_at":"2026-04-26T12:35:15Z","close_reason":"Added inputs to module signature and defined hermesSkills via inputs.agents.lib.mkOpencodeSkills with basecamp, anthropic, and kestra external skills. Verified with nixos-rebuild dry-run --flake .#m3-hermes (no errors).","labels":["hermes-agent","nixos"],"dependency_count":0,"dependent_count":1,"comment_count":0} +{"id":"home-profile-restructuring-ycz","title":"Build hermes-agent skills using mkSkills","status":"closed","priority":1,"issue_type":"task","assignee":"m3tm3re","owner":"p@m3ta.dev","estimated_minutes":2,"created_at":"2026-04-26T12:30:09Z","created_by":"m3tm3re","updated_at":"2026-04-26T12:35:15Z","started_at":"2026-04-26T12:31:35Z","closed_at":"2026-04-26T12:35:15Z","close_reason":"Added inputs to module signature and defined hermesSkills via inputs.agents.lib.mkSkills with basecamp, anthropic, and kestra external skills. Verified with nixos-rebuild dry-run --flake .#m3-hermes (no errors).","labels":["hermes-agent","nixos"],"dependency_count":0,"dependent_count":1,"comment_count":0} {"id":"home-profile-restructuring-cxa","title":"Verify skills available at /var/lib/hermes/.agents/skills","status":"closed","priority":2,"issue_type":"task","assignee":"m3tm3re","owner":"p@m3ta.dev","estimated_minutes":1,"created_at":"2026-04-26T12:30:10Z","created_by":"m3tm3re","updated_at":"2026-04-26T12:50:58Z","started_at":"2026-04-26T12:38:15Z","closed_at":"2026-04-26T12:50:58Z","close_reason":"Manually verified - skills are present at /var/lib/hermes/.agents/skills on m3-hermes","labels":["hermes-agent","testing"],"dependencies":[{"issue_id":"home-profile-restructuring-cxa","depends_on_id":"home-profile-restructuring-edz","type":"blocks","created_at":"2026-04-26T14:30:57Z","created_by":"m3tm3re","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0} diff --git a/secrets/hermes-cloud-env.age b/secrets/hermes-cloud-env.age index d21287a..b62a4df 100644 Binary files a/secrets/hermes-cloud-env.age and b/secrets/hermes-cloud-env.age differ