diff --git a/doom/.config/doom/README.org b/doom/.config/doom/README.org index 584784a..bc5f6be 100644 --- a/doom/.config/doom/README.org +++ b/doom/.config/doom/README.org @@ -112,7 +112,9 @@ My current workflow consist in having the 3-5 files I work on open in vertical s #+begin_src emacs-lisp (map! :leader (:prefix ("w" . "window") - :desc "Minimize window" "O" #'minimize-window)) + :desc "Minimize window" "O" #'minimize-window) + (:prefix ("z" . "Personal") + :desc "Hermes Agent" "h" #'gortium/hermes-vterm)) #+end_src ** Ultra-scroll @@ -1830,6 +1832,25 @@ Org-AI (org-ai-install-yasnippets)) ; if you are using yasnippet and want `ai` snippets #+end_src +** +Hermes Agent+ +Hermes Agent runs on lazyworkhorse server. Launched via SSH in a vterm buffer. + +#+begin_src emacs-lisp +(after! vterm + (defun gortium/hermes-vterm () + "Launch Hermes Agent in vterm via SSH to lazyworkhorse (CLI mode)." + (interactive) + (let ((buf (get-buffer-create "*hermes*"))) + (switch-to-buffer buf) + (unless (and (eq major-mode 'vterm-mode) + (get-buffer-process buf)) + (vterm-mode) + (let ((proc (get-buffer-process buf))) + (when proc + (process-send-string + proc "ssh -t lazyworkhorse 'docker exec -it hermes /opt/hermes/.venv/bin/hermes'\n"))))))) +#+end_src + * Tramp Remote connection to server inside emacs (with all my config) <3 diff --git a/doom/.config/doom/config.el b/doom/.config/doom/config.el index ee75e4d..64b3639 100644 --- a/doom/.config/doom/config.el +++ b/doom/.config/doom/config.el @@ -18,7 +18,9 @@ (map! :leader (:prefix ("w" . "window") - :desc "Minimize window" "O" #'minimize-window)) + :desc "Minimize window" "O" #'minimize-window) + (:prefix ("z" . "Personal") + :desc "Hermes Agent" "h" #'gortium/hermes-vterm)) (use-package! ultra-scroll :init @@ -1053,6 +1055,20 @@ DIFF: :desc "GPT generate commit" "g" #'gortium/magit-gptel-generate-commit) +(after! vterm + (defun gortium/hermes-vterm () + "Launch Hermes Agent in vterm via SSH to lazyworkhorse (CLI mode)." + (interactive) + (let ((buf (get-buffer-create "*hermes*"))) + (switch-to-buffer buf) + (unless (and (eq major-mode 'vterm-mode) + (get-buffer-process buf)) + (vterm-mode) + (let ((proc (get-buffer-process buf))) + (when proc + (process-send-string + proc "ssh -t lazyworkhorse 'docker exec -it hermes /opt/hermes/.venv/bin/hermes'\n"))))))) + ;; set `tramp-direct-async-process' locally in all ssh connections (connection-local-set-profile-variables 'remote-direct-async-process diff --git a/hypr/.config/hypr/hyprland.conf b/hypr/.config/hypr/hyprland.conf index 8a57593..ffa46da 100644 --- a/hypr/.config/hypr/hyprland.conf +++ b/hypr/.config/hypr/hyprland.conf @@ -227,6 +227,7 @@ bind = $mainMod, X, swapwindow bind = $mainMod, B, exec, python /home/tpouplier/ExoKortex/4-Automata/recordntrans/record_transcribe.py # bind = $mainMod, G, exec, nerd-dictation end bind = $mainMod, A, exec, $music +bind = $mainMod, C, exec, emacsclient -n -c -e '(gortium/hermes-vterm)' # Full screen bind = SUPER, F, fullscreen diff --git a/zsh/.zshrc b/zsh/.zshrc index 742eaeb..23bd7c6 100644 --- a/zsh/.zshrc +++ b/zsh/.zshrc @@ -19,6 +19,33 @@ alias emacs="emacsclient -c -a emacs" # Opencode alias oc="opencode" +# Hermes Agent - SSH directly to remote server +alias hermes="ssh -t lazyworkhorse 'docker exec -it hermes /opt/hermes/.venv/bin/hermes'" + +hermes-cp() { + if [ $# -eq 0 ]; then + echo "Usage: hermes-cp [...]" + echo "" + echo "Copies files/directories from your Arch laptop into the Hermes" + echo "agent container at /opt/data/home/ preserving directory structure." + echo "" + echo "Examples:" + echo " hermes-cp document.pdf # single file" + echo " hermes-cp *.pdf # multiple files (glob)" + echo " hermes-cp manuals/ # whole directory" + echo " hermes-cp manuals/ keyence-docs/ # multiple items" + echo "" + echo "To copy to a different destination inside the container:" + echo " tar -czf - . | ssh gortium@lazyworkhorse \\" + echo " \"docker exec -i hermes sh -c 'cd /opt/data/projects && tar -xzf -'\"" + return 1 + fi + # tar everything into a single SSH pipe, extract inside container + # Supports: single files, directories, glob patterns, mixed args + tar -czf - "$@" | ssh gortium@lazyworkhorse \ + "docker exec -i hermes sh -c 'cd /opt/data/home && tar -xzf -'" +} + # Yazi alias y="yazi" function yy() {