Observed since 20 Oct, 21:42 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Automated agents for Claude Code
Automated agents for Claude Code.
Agents that run on your schedule, from a webhook, or on demand. They stay under budget and report back to your inbox.
Agents: for complete option references and scheduling examples, read
skills/9to5/SKILL.mdor install the skill withnpx skills add Michaelliv/9to5. You should run9to5 onboardto add instructions to~/.claude/CLAUDE.md.
The examples/ directory has ready-to-import agents:
9to5 agent import examples/morning-briefing.json
| Example | Schedule | What it does |
|---|---|---|
| Morning briefing | Daily 7am | Summarize last 24h of commits, PRs, issues, CI status |
| Security scan | Daily | Check recent commits for hardcoded secrets and vulnerability patterns |
| Test gap finder | Nightly | Find untested code in recent commits, suggest test skeletons |
| API contract watchdog | Every 2h | Hit API endpoints, compare responses to spec, flag drift |
| Project health check | Every 6h | Run tests, measure build times, track repo metrics over time |
| Ecosystem watch | Every 12h | Check for new releases of dependencies and breaking changes |
| Reddit trend scout | Every 4h | Scout trending posts and draft blog content |
| TODO tracker | Weekly | Inventory TODO/FIXME comments, track additions and removals |
| Stale branch archaeologist | Weekly | Assess old branches and recommend which are safe to delete |
| Dependency deep audit | Weekly | Analyze actual usage of deps, flag unmaintained or replaceable ones |
| Refactor spotter | Weekly | Find emerging code patterns worth extracting |
| License compliance | Weekly | Scan dependency tree for copyleft or problematic licenses |
| Drift detector | Daily | Compare IaC config against actual running state |
| Competitor comparison | Weekly | Research competitors and generate comparison docs via worktree PR |
Requires Claude Code installed and authenticated.
npm install -g 9to5
Or run without installing:
npx 9to5 <command>
# Create an agent that runs daily at 9am
9to5 agent add "morning-review" \
--prompt "Review yesterday's commits and summarize changes" \
--rrule "FREQ=DAILY;BYHOUR=9" \
--model sonnet \
--max-budget-usd 0.25
# Run it now to see what you get
9to5 agent run <id>
# Browse everything in the TUI
9to5 ui
claude -p?You could. 9to5 adds what you'd end up building yourself:
resume <run-id>9to5 agent)| Command | Description |
|---|---|
9to5 agent add <name> | Create a new agent |
9to5 agent edit <id> | Edit an existing agent |
9to5 agent list | List your agents |
9to5 agent run <id> | Run an agent now |
9to5 agent remove <id> | Remove an agent (--force to permanently delete) |
9to5 agent restore <id> | Restore a deleted agent |
9to5 agent hide <id> | Hide an agent from list and TUI views |
9to5 agent unhide <id> | Unhide a hidden agent |
9to5 agent list --deleted | List deleted agents |
9to5 agent export [id] | Export agent(s) as JSON |
9to5 agent import <file> | Import agent(s) from JSON |
| Command | Description |
|---|---|
9to5 runs [agent-id] | View run history |
9to5 resume <run-id> | Resume the Claude Code session from a previous run |
9to5 inbox | Check your inbox |
9to5 daemon)| Command | Description |
|---|---|
9to5 daemon start | Start the background daemon |
9to5 daemon stop | Stop the background daemon |
9to5 webhook)| Command | Description |
|---|---|
9to5 webhook info | Show webhook configuration and URLs |
9to5 webhook refresh | Regenerate the webhook secret |
9to5 webhook enable | Enable webhook triggers |
9to5 webhook disable | Disable webhook triggers |
9to5 webhook url <id> | Print trigger commands for an agent |
| Command | Description |
|---|---|
9to5 onboard | Add 9to5 instructions to ~/.claude/CLAUDE.md |
9to5 ui | Launch the interactive TUI dashboard |
Launch with 9to5 ui for a two-panel terminal dashboard:
r run, p pause/resume, dd delete (with u to undo), c copy output, ⏎ toggle read, q quitTrigger agents from GitHub Actions, CI, Zapier, or any script. Two trigger paths — local HTTP and remote via ntfy.sh — both secured with HMAC-SHA256 signing. No infrastructure, no dependencies, completely free.
Webhooks are enabled by default — the daemon auto-generates a secret on first start. Use webhook disable to turn them off.
# View webhook config and URLs
9to5 webhook info
# Get ready-to-use curl commands for an agent
9to5 webhook url <agent-id>
# Regenerate the secret (breaks existing integrations)
9to5 webhook refresh
Local trigger — POST to http://localhost:9505/trigger/<id> with a signed body and X-Signature header. Works for scripts on the same machine or in your local network.
Remote trigger — POST to the ntfy.sh URL shown by webhook info. The daemon subscribes via SSE. Works from anywhere — CI, GitHub Actions, other machines.
Both paths verify HMAC-SHA256 signatures and reject messages older than 5 minutes.
# Example: trigger from a script
SECRET='<your-webhook-secret>'
BODY='{"automation_id":"<id>","ts":'$(date +%s000)'}'
SIG=$(echo -n "$BODY" | openssl dgst -sha256 -hmac "$SECRET" | sed 's/^.* //')
# Local
curl -X POST http://localhost:9505/trigger/<id> \
-H "Content-Type: application/json" \
-H "X-Signature: $SIG" \
-d "$BODY"
# Remote (ntfy)
curl -X POST <ntfy-url> \
-H "Content-Type: application/json" \
-d '{"payload":"'"$BODY"'","sig":"'"$SIG"'"}'
All data is stored locally in ~/.9to5/ (SQLite database, daemon PID file, and webhook secret).
Landing page at michaelliv.github.io/9to5. For agent-friendly option references and scheduling examples, see skills/9to5/SKILL.md.
MIT
Download counts and popularity will appear here as the collector receives them.
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 21:42 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:d44b33e76eb0aab955d232c97ef2216df5452fe0871d69603c06e632b4699699