From 9cf77d2ab8ac61845713c8e158b925b29a4c4cce Mon Sep 17 00:00:00 2001 From: Hyperling Date: Mon, 5 Oct 2026 17:28:03 -0700 Subject: [PATCH] zeroclaw, continue attempting to automate the process, don't have good enough reception to successfully download yet. --- tasks/workstation/linux/software/zeroclaw.yml | 127 +++++++++++++++--- 1 file changed, 106 insertions(+), 21 deletions(-) diff --git a/tasks/workstation/linux/software/zeroclaw.yml b/tasks/workstation/linux/software/zeroclaw.yml index c2557e2..eada1ad 100644 --- a/tasks/workstation/linux/software/zeroclaw.yml +++ b/tasks/workstation/linux/software/zeroclaw.yml @@ -11,6 +11,12 @@ # Individual Guides # - https://github.com/zeroclaw-labs/zeroclaw # - https://wiki.archlinux.org/title/Ollama +# +# Model Explanations +# - https://webscraft.org/blog/ollama-na-8-gb-ram-yaki-modeli-pratsyuyut-u-2026?lang=en +# +# Models +# - https://ollama.com/search # Currently only testing this on Arch based distros (pacman). - name: Workstation | Linux | Software | ZeroClaw @@ -20,43 +26,122 @@ ansible.builtin.set_fact: zeroclaw: zeroclaw ollama: ollama + llm_installs: + - qwen3.5:4b + #- deepseek-r1:1.5b + #- deepseek-r1:7b + #- mistal:7b + #- ministral:3b + #- ministral:8b + #- mistal:7b + #- glm4-flash + #- qwen3.5:4b + #- qwen3:4b # most similar to Ask Brave + llm_removals: + - qwen2.5 - # 1. Install - - name: Workstation | Linux | Software | ZeroClaw | 01 | Install + - name: Workstation | Linux | Software | ZeroClaw | Facts 02 + ansible.builtin.set_fact: + ollama_runit_dir: "{{ runit_service_dir }}/{{ ollama }}" + zeroclaw_runit_dir: "{{ runit_service_dir }}/{{ zeroclaw }}" + + - name: Workstation | Linux | Software | ZeroClaw | Facts 03 + ansible.builtin.set_fact: + ollama_runit_start: "{{ ollama_runit_dir }}/{{ runit_service_script }}" + zeroclaw_runit_start: "{{ zeroclaw_runit_dir }}{{ runit_service_script }}n" + + ### TBD/TODO: Add to Env! (bash_profile, zprofile) + ### OLLAMA_MAX_LOADED_MODELS=1 + + - name: Workstation | Linux | Software | ZeroClaw | Install ansible.builtin.package: name: - "{{ zeroclaw }}" - "{{ ollama }}" state: present - - name: Workstation | Linux | Software | ZeroClaw | 02 | Pull Model - ansible.builtin.debug: - msg: TBD - ### ollama serve & # start Ollama server - ### ollama pull llama3.2 # ~2GB, or a smaller model for less RAM + #- name: Workstation | Linux | Software | ZeroClaw | ollama | Script [runit] + # ansible.builtin.shell: "{{ item }}" + # loop: + # - "mkdir -p {{ ollama_runit_dir }}" + # - "echo '#!/bin/sh' > {{ ollama_runit_start }}" + # - "echo 'ollama serve' >> {{ ollama_runit_start }}" + # - "chmod +x {{ ollama_runit_start }}" + # register: shell_check + # changed_when: shell_check.rc == 0 + # when: ansible_service_mgr == "runit" - - name: Workstation | Linux | Software | ZeroClaw | 03 | Config + ## This is safe to run without wasting too many resources, allows pulling. + #- name: Workstation | Linux | Software | ZeroClaw | ollama | Enable + # ansible.builtin.service: + # name: "{{ ollama }}" + # state: started + # enabled: true + + - name: Workstation | Linux | Software | ZeroClaw | ollama | Enable + ansible.builtin.blockinfile: + path: "{{ user_user.home }}/.config/i3/config" + marker: "# {mark} MANAGED BY ANSIBLE | zeroclaw" + block: | + exec --no-startup-id pgrep -x ollama || ollama serve >~/Reports/{{ ansible_hostname }}.ollama.log 2>&1 + state: present + + - name: Workstation | Linux | Software | ZeroClaw | Models | Install + ansible.builtin.shell: | + set -o pipefail + item='{{ item }}' + if ollama list | grep -q $item; then + echo "OKAY" && + return + else + ollama pull $item && + echo "INSTALLED" && + return + fi + echo "FAILED" + loop: "{{ llm_installs }}" + register: shell_check + changed_when: "'INSTALLED' in shell_check.stdout" + failed_when: "'FAILED' in shell_check.stdout" + become: true + become_user: "{{ user }}" + + - name: Workstation | Linux | Software | ZeroClaw | Models | Remove + ansible.builtin.shell: | + set -o pipefail + item='{{ item }}' + if ollama list | grep -q $item; then + ollama rm $item && + echo "INSTALLED" && + return + else + echo "OKAY" && + return + fi + echo "FAILED" + loop: "{{ llm_removals }}" + register: shell_check + changed_when: "'INSTALLED' in shell_check.stdout" + failed_when: "'FAILED' in shell_check.stdout" + become: true + become_user: "{{ user }}" + + - name: Workstation | Linux | Software | ZeroClaw | Config ansible.builtin.debug: msg: TBD ### ~/.zeroclaw/config.toml` ### `default_provider = "ollama"` pointing at `http://127.0.0.1:11434` - - name: Workstation | Linux | Software | ZeroClaw | 04 | Test + - name: Workstation | Linux | Software | ZeroClaw | Test ansible.builtin.debug: msg: TBD ### zeroclaw agent -m "Hello!" # quick test - - name: Workstation | Linux | Software | ZeroClaw | 05 | Init Scripts | zeroclaw - ansible.builtin.debug: - msg: TBD - ### `/run/runit/zeroclaw/run` - ### `zeroclaw daemon` - - - name: Workstation | Linux | Software | ZeroClaw | 05 | Init Scripts | ollama - ansible.builtin.debug: - msg: TBD - when: ansible_service_mgr == "runit" - ### `/run/runit/ollama/run` - ### `ollama serve` + ### Nah, run on command instead of as daemon, otherwise will eat power. + ###- name: Workstation | Linux | Software | ZeroClaw | Init Scripts | zeroclaw + ### ansible.builtin.debug: + ### msg: TBD + ###### `/run/runit/zeroclaw/run` + ###### `zeroclaw daemon` when: ansible_pkg_mgr == "pacman"