skills/deploy-ai-agent/SKILL.md
Deploy and manage AI agent workloads with GPU checks, API key management, and health monitoring
npx skillsauth add bolivian-peru/os-moda deploy-ai-agentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Deploy AI agent workloads (LangChain, CrewAI, AutoGen, custom frameworks) as managed systemd services with resource monitoring, API key management, and health checks.
system_health to verify RAM, disk, and CPU are sufficient. Check for GPU with shell_exec running nvidia-smi or ls /dev/driapp_deploy with appropriate resource limits, environment variables pointing to secrets, and a health-check-friendly portapp_logs for successful startup. Use system_discover to confirm the agent's port is listening.watcher_add to auto-restart on failurememory_store to save deployment details for future referenceapp_deploy({
name: "my-agent",
command: "/var/lib/osmoda/apps/my-agent/venv/bin/uvicorn",
args: ["app:app", "--host", "0.0.0.0", "--port", "8000"],
working_dir: "/var/lib/osmoda/apps/my-agent",
env: {
ANTHROPIC_API_KEY_FILE: "/var/lib/osmoda/secrets/anthropic-key",
OPENAI_API_KEY_FILE: "/var/lib/osmoda/secrets/openai-key"
},
port: 8000,
memory_max: "1G",
cpu_quota: "200%"
})
app_deploy({
name: "crew-agent",
command: "/var/lib/osmoda/apps/crew-agent/venv/bin/python",
args: ["-m", "crew_agent.main"],
working_dir: "/var/lib/osmoda/apps/crew-agent",
env: {
ANTHROPIC_API_KEY_FILE: "/var/lib/osmoda/secrets/anthropic-key"
},
port: 8001,
memory_max: "2G"
})
app_deploy({
name: "node-agent",
command: "/usr/bin/node",
args: ["index.js"],
working_dir: "/home/user/agent",
env: {
NODE_ENV: "production",
PORT: "3000",
API_KEY_FILE: "/var/lib/osmoda/secrets/agent-api-key"
},
port: 3000,
memory_max: "512M"
})
Never put API keys in environment variables directly. Write them to the secrets directory:
file_write to /var/lib/osmoda/secrets/<key-name> (0600 permissions)*_FILE convention) or read it in the app's entrypointBefore deploying, verify:
| Resource | Check | Minimum |
|----------|-------|---------|
| RAM | system_health → memory_available | 1 GB free for small agents, 4 GB+ for GPU workloads |
| Disk | system_health → disks[0].available | 2 GB for deps + model cache |
| CPU | system_health → cpu_usage | 2+ cores recommended |
| GPU | shell_exec: nvidia-smi or ls /dev/dri | Optional — needed for local model inference |
| Python | shell_exec: python3 --version | 3.10+ for most frameworks |
| Node.js | shell_exec: node --version | 18+ for modern agent frameworks |
After deployment, set up a watcher:
watcher_add({
name: "my-agent-health",
check: {
type: "http_get",
url: "http://127.0.0.1:8000/health",
expected_status: 200
},
interval_secs: 30,
actions: ["restart", "notify"]
})
For agents without HTTP endpoints, use a process check:
watcher_add({
name: "my-agent-alive",
check: {
type: "systemd_unit",
unit: "osmoda-app-my-agent.service"
},
interval_secs: 60,
actions: ["restart", "notify"]
})
app_logs({ name: "my-agent", lines: 50 }) for Python import errors or missing dependenciesmemory_max or check if the model is too large for available RAMfile_read({ path: "/var/lib/osmoda/secrets/anthropic-key" })system_discover to find what's on that port, then pick anotherdevops
Multi-perspective risk analysis using structured persona debate before deploying changes
development
Build software via spec-driven development (github/spec-kit). Whenever the user asks for a feature larger than a one-line tweak, scaffold a spec-kit project, capture WHAT + WHY, declare tech stack, break into tasks, then iterate the implementation until tests pass.
development
Manage NixOS packages declaratively. Search, install (via configuration.nix rebuild), remove, rollback, and list generations. Understands the NixOS declarative model.
data-ai
Monitor system health: CPU, memory, disk, network, processes, services, and logs. Present data naturally. Correlate issues across subsystems. Alert on thresholds. Diagnose root causes.