recruiter-responder: deploy stack + llama-cpp qwen3-8b + openclaw plugin mount
Three coupled changes for the new recruiter-responder pipeline:
1. stacks/llama-cpp/: add qwen3-8b text-only model to llama-swap. Uses
unsloth/Qwen3-8B-GGUF Q4_K_M, 16k context, no mmproj. Refactored the
download Job script + cmd renderer to handle text_only=true (skip
mmproj download + --mmproj flag). The 3 existing vision models stay
on text_only=false; no behaviour change for them.
2. stacks/recruiter-responder/: new stack. Namespace, 2 ExternalSecrets
(app secrets from secret/recruiter-responder, DB creds from Vault DB
engine static-creds/pg-recruiter-responder), Deployment (replicas=1,
Recreate -- IMAP IDLE + APScheduler want single leader), Service
ClusterIP. Image: forgejo.viktorbarzin.me/viktor/recruiter-responder.
3. stacks/openclaw/: add init container `install-recruiter-plugin` that
uses the recruiter-responder image to copy the .mjs plugin into
/home/node/.openclaw/extensions/recruiter-api/ on NFS. Couples plugin
version to the recruiter-responder image tag. Also injects
RECRUITER_RESPONDER_URL + RECRUITER_RESPONDER_TOKEN env vars (token
from openclaw-secrets.recruiter_responder_bearer_token, optional).
Pre-apply checklist for recruiter-responder stack:
- Vault: seed secret/recruiter-responder with webhook_bearer_token,
imap_{me,spam}_{user,pass}, smtp_password, claude_agent_token,
task_webhook_token.
- Vault: add secret/openclaw.recruiter_responder_bearer_token (same as
above webhook_bearer_token).
- dbaas: create DB recruiter_responder + role recruiter_responder,
and Vault DB-engine role static-creds/pg-recruiter-responder.
- Build + push image via Woodpecker (recruiter-responder repo CI).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
95b9f7bc89
commit
7e1580ba8c
4 changed files with 409 additions and 12 deletions
|
|
@ -456,6 +456,32 @@ resource "kubernetes_deployment" "openclaw" {
|
|||
# Dotfiles already exist on NFS at /home/node/.openclaw/dotfiles from
|
||||
# a previous clone. To update, run git pull manually or via CronJob.
|
||||
|
||||
# Init 3: install the recruiter-api OpenClaw plugin from the
|
||||
# recruiter-responder image into NFS extensions/. Plugin lifecycle
|
||||
# is coupled to the recruiter-responder image tag — bumping that
|
||||
# tag re-installs the plugin on next openclaw pod restart.
|
||||
init_container {
|
||||
name = "install-recruiter-plugin"
|
||||
image = "forgejo.viktorbarzin.me/viktor/recruiter-responder:latest"
|
||||
command = ["sh", "-c", <<-EOT
|
||||
set -eu
|
||||
mkdir -p /home/node/.openclaw/extensions/recruiter-api
|
||||
cp -r /app/openclaw-plugin/. /home/node/.openclaw/extensions/recruiter-api/
|
||||
chown -R 1000:1000 /home/node/.openclaw/extensions/recruiter-api
|
||||
echo "recruiter-api plugin installed at /home/node/.openclaw/extensions/recruiter-api"
|
||||
ls -la /home/node/.openclaw/extensions/recruiter-api
|
||||
EOT
|
||||
]
|
||||
volume_mount {
|
||||
name = "openclaw-home"
|
||||
mount_path = "/home/node/.openclaw"
|
||||
}
|
||||
resources {
|
||||
requests = { cpu = "50m", memory = "64Mi" }
|
||||
limits = { memory = "128Mi" }
|
||||
}
|
||||
}
|
||||
|
||||
# Main container: OpenClaw
|
||||
container {
|
||||
name = "openclaw"
|
||||
|
|
@ -533,6 +559,23 @@ resource "kubernetes_deployment" "openclaw" {
|
|||
}
|
||||
}
|
||||
}
|
||||
# Recruiter Responder API — consumed by the recruiter-api plugin
|
||||
# (mounted into /home/node/.openclaw/extensions/recruiter-api/ via
|
||||
# the install-recruiter-plugin init container below).
|
||||
env {
|
||||
name = "RECRUITER_RESPONDER_URL"
|
||||
value = "http://recruiter-responder.recruiter-responder.svc.cluster.local:8080"
|
||||
}
|
||||
env {
|
||||
name = "RECRUITER_RESPONDER_TOKEN"
|
||||
value_from {
|
||||
secret_key_ref {
|
||||
name = "openclaw-secrets"
|
||||
key = "recruiter_responder_bearer_token"
|
||||
optional = true
|
||||
}
|
||||
}
|
||||
}
|
||||
# Python packages path for skills
|
||||
env {
|
||||
name = "PYTHONPATH"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue