SamSaffron

jobs

"Work with scheduled jobs and container services. Use when creating, updating, pausing, debugging, or inspecting jobs; checking runs/events; or changing runit services like webui and jobs."

SamSaffron 124 21 Updated 4mo ago
GitHub

Install

npx skillscat add samsaffron/term-llm/jobs

Install via the SkillsCat registry.

SKILL.md

Jobs and Services

The container uses two related systems:

  • Services are long-running runit processes. Definitions live in /home/agent/.config/term-llm/services/<name>/run and are reinstalled into /etc/sv on container start by /home/agent/.config/term-llm/init.sh.
  • Jobs are scheduled or manual units managed by term-llm serve jobs, exposed on http://127.0.0.1:8080, and controlled through term-llm jobs.

Default services:

Service Purpose
webui Runs term-llm serve web on port 8081.
jobs Runs term-llm serve jobs on port 8080.

Default jobs:

Job Schedule Purpose
mine-sessions every 30 min Mine session transcripts into memory fragments.
update-recent every 10 min Promote fragments into recent.md.
system-upgrade Daily 05:00 UTC Run the distro package upgrade (pacman -Syu on Arch, dnf upgrade on Fedora).

Inspecting jobs

term-llm jobs list
term-llm jobs get <job-id-or-name>
term-llm jobs runs <job-id-or-name> --limit 20
term-llm jobs active
term-llm jobs run get <run-id>
term-llm jobs run events <run-id> --limit 200

Use --json when scripting or when you need exact IDs and payloads:

term-llm jobs --json list
term-llm jobs --json runs mine-sessions --limit 5

Creating a program job

Program jobs execute a command directly from the jobs worker:

term-llm jobs create --data '{
  "name": "example-program",
  "enabled": true,
  "runner_type": "program",
  "runner_config": {
    "command": "/usr/local/bin/term-llm",
    "args": ["memory", "update-recent", "--agent", "'$AGENT_NAME'"]
  },
  "trigger_type": "cron",
  "trigger_config": {"expression": "*/30 * * * *", "timezone": "UTC"},
  "concurrency_policy": "forbid",
  "timeout_seconds": 300,
  "misfire_policy": "skip"
}'

Creating an LLM job

LLM jobs run agent instructions in the background. Always set runner_config.agent_name explicitly. LLM jobs also require runner_config.cwd; it roots the run's file/shell tools without changing the jobs server process directory.

term-llm jobs create --data '{
  "name": "daily-review",
  "enabled": true,
  "runner_type": "llm",
  "runner_config": {
    "agent_name": "'$AGENT_NAME'",
    "instructions": "Review recent memory and produce a short status note.",
    "cwd": "'$PWD'"
  },
  "trigger_type": "cron",
  "trigger_config": {"expression": "0 9 * * *", "timezone": "UTC"},
  "concurrency_policy": "forbid",
  "timeout_seconds": 1800,
  "misfire_policy": "skip"
}'

Updating and operating jobs

term-llm jobs update <job-id-or-name> --data '{"enabled": false}'
term-llm jobs pause <job-id-or-name>
term-llm jobs resume <job-id-or-name>
term-llm jobs trigger <job-id-or-name>
term-llm jobs delete <job-id-or-name> --cancel-active
term-llm jobs run cancel <run-id>

Prefer update over delete/recreate when preserving run history matters.

Service changes

To add or change a long-running service, edit files under /home/agent/.config/term-llm/services. Each service directory needs an executable run script. Then restart the container or run the init hook:

bash /home/agent/.config/term-llm/init.sh

Debug service logs through Docker output for the workspace, or enter the container and inspect /etc/sv, /etc/runit/runsvdir, and the service run script.