Agentic Systems Engineering — small, single-purpose agents that run unattended.
Each repo below is one agent: a narrow job, a schedule, and a safety envelope. No frameworks, no dashboards — just processes that do their work and stay quiet until something breaks.
| Agent | What it does | Stack |
|---|---|---|
| self-healing-ops-agent | Cron-driven LLM agent that triages production failure signals and ships tested fix PRs | Bash + Claude CLI |
| email-triage-agent | Inbox agent: reply / ask-a-human / ignore, with exactly-once sends | Node |
| whatsapp-self-chat-agent | LLM agent in your WhatsApp self-chat that drafts and sends in your voice | Node |
| canvas-briefing-bot | Canvas LMS monitor through SSO+2FA, daily Telegram briefing | Python + Playwright |
| academic-job-digest | Daily scraper for entry-level academic research jobs with LLM enrichment | TypeScript + Playwright |
| market-brief-agent | Scheduled market digest + forward-to-LLM email agent | Next.js |
| agent-host-provisioning | Provision and validate a self-hosted agent host over Tailscale SSH | Bash |
- Single-purpose. One agent, one job. Composition happens at the OS level (cron, launchd, platform crons), not inside a monolith.
- Unattended. Every agent is built to run on a schedule with nobody watching: idempotent runs, explicit failure signatures, heartbeats where silence would be ambiguous.
- Cheap gate before LLM. Deterministic filters (regex, jq, dedup checks) run first; the model is only invoked when the cheap gate says something is worth its attention.
- Safety envelopes. Rate caps, dedup ledgers, circuit breakers, and audit gates bound what an agent can do in one run — a misbehaving agent degrades to doing nothing, not to doing damage.
- Everything env-configured. No identities, endpoints, or recipients in code. Clone, fill in
.env, run.