Operations

Automate collection, retain evidence for every run

Wasteless selects the scheduler for your system, reruns the pipeline every five minutes by default and reports incomplete collections.

Verified against the product code8 minOps and platform engineers

Four useful commands

Terminal
wasteless schedule
wasteless status
wasteless collect
wasteless unschedule
CommandPurpose
scheduleInstall or reinstall periodic collection
statusShow UI and scheduler state
collectRun a collection immediately
unscheduleRemove the system schedule

What a collection runs

StagesOperationsDependency
1 to 6CloudWatch, underused EC2, stopped EC2, EBS, EIP, snapshotsboto3 and PostgreSQL
7 to 10Load balancer, NAT Gateway, VPC, gp2 to gp3Steampipe

An atomic lock prevents overlapping collections. If Steampipe is missing, the last four stages are skipped with a warning and collection_runs records a partial run.

A scheduler for each platform

PlatformMechanismKeep in mind
macOSlaunchd LaunchAgentLoads and follows the configured interval
Linux with systemdUser timerenable-linger runs without an SSH session
Linux or WSL without systemdcrontabThe environment must remain active

Three jobs depend on FastAPI

JobPurpose
sync_aws_jobSynchronize resource state and mark some recommendations obsolete
grace_executor_jobExecute scheduled actions whose delay has elapsed
terraform_pr_sync_jobTrack opened Terraform pull requests

These APScheduler jobs are separate from the system schedule. They run only while FastAPI is active.

Inspect every run

Logs
wasteless logs
tail -100 ~/.wasteless.log
grep -i error ~/.wasteless.log | tail -20
PostgreSQL
SELECT ran_at, full_run, skipped_steps
FROM collection_runs
ORDER BY ran_at DESC
LIMIT 10;

Set frequency with COLLECT_INTERVAL_SEC in wasteless.sh, then rerun wasteless schedule.

View source on GitHub