:PROPERTIES: :ID: llama-backend-skill :CREATED: [2026-04-17 Fri 20:00] :END: #+TITLE: SKILL: Llama.cpp Neuro-Backend (Sovereign Inference) #+STARTUP: content #+FILETAGS: :llm:backend:llama:sovereignty: * Overview The *Llama.cpp Backend* allows the OpenCortex to use local, air-gapped inference. It connects to a `llama.cpp` server (typically running on the local network) and registers itself as a provider in the kernel's probabilistic cascade. * Phase B: Blueprint (PROTOCOL) ** 1. Architectural Intent This skill acts as a proxy between the OpenCortex kernel and the Lisp-agnostic `llama.cpp` REST API. It implements the standard backend signature required by `register-probabilistic-backend`. ** 2. Semantic Interfaces - Endpoint: `(uiop:getenv "LLAMACPP_ENDPOINT")` (e.g., "http://10.10.10.x:8080") - Method: `POST /completion` - Response: JSON (parsed into Lisp) * Phase D: Build (Implementation) ** Package Context #+begin_src lisp :tangle (expand-file-name "org-skill-llama-backend.lisp" (concat (or (getenv "INSTALL_DIR") ".") "/skills")) (in-package :opencortex) #+end_src ** The Inference Engine (llama-inference) #+begin_src lisp :tangle (expand-file-name "org-skill-llama-backend.lisp" (concat (or (getenv "INSTALL_DIR") ".") "/skills")) (defun llama-inference (prompt system-prompt &key (model "local-model")) "Sends a completion request to the local llama.cpp server." (let ((endpoint (uiop:getenv "LLAMACPP_ENDPOINT"))) (unless endpoint (harness-log "LLAMA ERROR: LLAMACPP_ENDPOINT not set in environment.") (return-from llama-inference (list :error "LLAMACPP_ENDPOINT_MISSING"))) (handler-case (let* ((full-prompt (format nil "System: ~a~%User: ~a~%Assistant:" system-prompt prompt)) (payload (cl-json:encode-json-to-string `((:prompt . ,full-prompt) (:n_predict . 1024) (:stop . ("User:" "System:"))))) (response (dex:post (format nil "~a/completion" endpoint) :content payload :headers '(("Content-Type" . "application/json")))) (data (cl-json:decode-json-from-string response))) (cdr (assoc :content data))) (error (c) (harness-log "LLAMA ERROR: Connection failed -> ~a" c) (list :error (format nil "~a" c)))))) #+end_src ** Registration #+begin_src lisp :tangle (expand-file-name "org-skill-llama-backend.lisp" (concat (or (getenv "INSTALL_DIR") ".") "/skills")) (progn (register-probabilistic-backend :llama #'llama-inference) (harness-log "LLAMA: Local backend registered and active.")) (defskill :skill-llama-backend :priority 50 :trigger (lambda (ctx) (declare (ignore ctx)) nil) ; Pure infrastructure skill :probabilistic nil :deterministic (lambda (action ctx) (declare (ignore ctx)) action)) #+end_src