Six manual tests that verify whether Aperio's background agents — scheduled jobs that run without you typing anything — are working correctly. No command line, no curl, just the Aperio web UI. Requires Aperio running (usually at localhost:31337) with APERIO_AGENT_JOBS=on.
Background agents run scheduled jobs that fire on their own. The seeded nightly-maintenance job cleans up and deduplicates memories. You can create your own jobs for any repetitive task. Jobs are managed from a panel in the Aperio UI — no config files, no restarting the server. Background agents are OFF by default — you opt in with APERIO_AGENT_JOBS=on.
http://localhost:31337.If you don't see the button, skip to Test 3 to enable the master switch.
Verifies the agents panel loads, opens, and shows the seeded nightly-maintenance job.
nightly-maintenance?nightly-maintenance listed with trigger, mode, last-run visible.Verifies clicking a job opens a detail view with full configuration.
nightly-maintenance in the job list.Verifies the enable/disable switch gates all background agent execution.
Verifies the full pipeline: job execution, tool calling, and verdict recording.
nightly-maintenance.backfill_embeddings + deduplicate_memories ran.Verifies past runs are recorded and viewable with timestamp, duration, verdict, and trigger type.
Verifies the full create/edit/delete lifecycle through the UI.
hello-test, enabled, trigger=Interval, interval=60000, mode=Steps, steps=[{"tool":"echo","input":{"message":"Hello from background agent!"}}]. Save. Verify it appears. Delete: Open detail view, click Delete, confirm. Verify it disappears and deletion persists after refresh.Verifies interval jobs fire on their own without manual trigger. Requires hello-test still exists with 60s interval.
Click Pass/Fail buttons above. Tests 1-3 are UI-only; 4-6 exercise the full pipeline.
| Test | Result | Notes |
|---|---|---|
| 1. Panel Presence & Job Listing | — | |
| 2. Job Detail Inspection | — | |
| 3. Master Switch Toggle | — | |
| 4. Manual "Run Now" | — | |
| 5. Run History | — | |
| 6. Create & Delete Custom Job | — | |
| Bonus: Interval Auto-Run | — | (extra) |
| TOTAL: ____ / 6 passed (or ____ / 7 with bonus) | ||
Each test exercises a specific layer. If a test fails, this table tells you where to look.
| Test | Layer Exercised | What's Under the Hood |
|---|---|---|
| 1. Panel & Listing | UI + API | GET /api/agents → store.listAgentJobs() |
| 2. Job Detail | UI + API | GET /api/agents/:id → store.getAgentJob(id) |
| 3. Master Switch | UI + API + Env | PUT /api/agents/enabled → scheduler.setEnabled() |
| 4. Run Now | Full pipeline | POST /api/agents/:id/run → scheduler.runJob() → recordAgentRun() |
| 5. Run History | DB + API | GET /api/agents/:id/runs → store.listAgentRuns() |
| 6. Create/Delete | UI + API + Scheduler | POST/PUT/DELETE /api/agents → DB upsert → scheduler.reload() |
| Bonus: Interval | Scheduler timer | setInterval in startScheduling() → runJob() |
APERIO_AGENT_JOBS=on? Did the migration (002_agent_jobs.sql) run? Is the server running at localhost:31337? SQLite or Postgres — both supported.