Vache prompts. Claude codes.How it works

Zero-Cost Automation: 16 Tasks on a Local GPU

·5 min read·by Vache Sarkissian
Updated June 3, 2026
·
Reviewed March 28, 2026
automationlocal-gpuollamadevops
📚Top of Funnel

Written by Claude (Opus 4.6) Vache prompted, reviewed, and published. The data and benchmarks are real; the prose is AI-generated.

I run 16 automated tasks every day. They monitor dependencies, check vault health, scan for ecosystem updates, review commits, reindex semantic search, and send me Telegram summaries. The total API cost is $0.

The trick is local models. An AMD RX 9070 XT with 16GB VRAM running ollama-rocm can handle qwen3:8b at 85 tok/s and qwen2.5-coder:14b at 56 tok/s. That's fast enough for maintenance tasks that don't need frontier-model reasoning.

The Heartbeat System

The scheduler is a Markdown file — heartbeat/schedule.md — that defines tasks declaratively:

### deps-monitor
- Schedule: daily 06:15
- Model: local:qwen3:8b
- Script: deps-monitor.sh
- Allowed tools: Read, Bash
- Last run: 2026-02-19 20:12
- Last result: completed in 56s

A cron job reads this file, checks which tasks are due, and runs them. Each task gets a shell script that either calls a local model via ollama or runs pure computation (no model needed). Results are written back to the schedule file and batched into AM/PM Telegram digest notifications.

No framework. No orchestration platform. Just cron, bash, and ollama.

The Task Roster

Here's what runs daily, split by category:

Infrastructure (No Model Needed)

TaskScheduleWhat It DoesTime
vault-reindex03:00Re-embeds new/modified files for semantic search1s
daily-context06:30Aggregates project status, inbox, session states1s
am-digest09:15Batches morning task results into one Telegram message9s
pm-digest22:15Batches evening task results into one Telegram message0s
weekly-benchmarkSun 08:00Compares week-over-week model performance stats0s
reweave04:00Scans for semantic links between vault notes6s

These are pure scripts — no LLM inference. They read files, compute diffs, and format output.

Model-Powered (Local GPU)

TaskModelWhat It DoesTime
vault-healthqwen3:8bChecks file counts, stale sessions, empty files13s
morning-briefingqwen3:8bSummarizes overnight commits, open tasks, action items3s
deps-monitorqwen3:8bChecks npm registries for dependency updates56s
ecosystem-radarqwen3:8bScans for Claude Code updates, MCP changes25s
research-radarqwen3:8bChecks research feeds for relevant papers5s
sentry-alertsqwen3:8bPulls production error summaries4s
inbox-digestqwen3:8bSummarizes unread messages across projects12s
industry-scancoder:14bScans for industry-relevant AI tooling updates15s
rule-effectivenesscoder:14bAnalyzes which CLAUDE.md rules are preventing bugs78s
rule-decaycoder:14bFlags rules that haven't been hit recently55s
knowledge-reviewcoder:14bReviews knowledge files for staleness158s
commit-reviewcoder:14bAudits recent commits against project conventions29s

The split between qwen3:8b and qwen2.5-coder:14b is deliberate. General reasoning tasks (briefings, digests, health checks) use the smaller model — it's faster and plenty smart for summarization. Code-heavy tasks (commit review, rule analysis) use the 14B coder model for better pattern matching.

Both models fit in 16GB VRAM simultaneously with the embedding model (qwen3-embedding:0.6b at 639MB), so there's no model swapping overhead.

Self-Improving Rules

The most interesting tasks are rule-effectiveness and rule-decay. My vault has a RULES.md file with coding rules — things like "always deploy after adding Convex functions" or "no Date.now() in query handlers." Each rule tracks evidence:

### No Date.now() in Convex queries
- Last verified: 2026-02-19
- Hit count: 3
- Evidence: getInventoryAlerts fix (linesheet), ...

rule-effectiveness runs weekly to check if rules are actually preventing mistakes. It scans recent commits and code changes for patterns that match existing rules. If a rule catches something, the hit count increments.

rule-decay flags rules that haven't been hit in over 30 days. A rule that never fires might be too specific, already internalized, or no longer relevant. It doesn't auto-delete — it just surfaces candidates for human review.

The result is a rule set that improves over time. Rules that prove their value stay; rules that don't get questioned.

Weekly Stats

The benchmark task tracks performance across weeks. Last week (Feb 13-19):

MetricValue
Total runs31
Total execution time909s (~15 minutes)
Local model runs18 (58%)
API model runs6 (19%)
Script-only runs7 (23%)
Generation speed80.8 tok/s
Prompt processing0.297 ms/token

15 minutes of GPU time per day for continuous infrastructure monitoring. The GPU sits idle the other 23 hours and 45 minutes.

What Makes This Work

A few design decisions that matter:

Markdown-as-config. The schedule file is human-readable and version-controlled. No database, no YAML parser, no config format to learn. Edit the Markdown, cron picks it up.

Telegram notifications. Results batch into AM and PM digests. WARN and ERROR results push immediately. I get a morning summary at 9:15 and an evening one at 10:15 — two messages per day instead of sixteen.

Graceful degradation. If ollama is down, model-powered tasks skip with a logged error. Script-only tasks still run. Nothing crashes, nothing blocks.

Evidence-based rules. The self-improving rule system means the heartbeat isn't just monitoring — it's actively improving the development workflow. Every week, the rules get a little better tuned. The total investment was a few days of scripting and a GPU I already had. The return is continuous, zero-cost infrastructure monitoring that catches dependency updates, stale sessions, and rule violations before they become problems. For a solo developer managing six production apps and 1,567 vault files, that's a force multiplier.

Further Reading

Sources

About the Author

Vache Sarkissian

Building research infrastructure and products at the intersection of knowledge systems and machine learning. Creator of Linesheet Pro, vault-search, and the vachsark learning engine.

View Full Bio →
© 2026 Vache Sarkissian·Built with Claude Code
vachsark.com