2026-05-08 — The Day We Killed AzDO Timers
Big day. Started with a simple Base64 connection string fix, ended up migrating the entire Azure DevOps scheduled pipeline to our own system.
The AGENTLESS_MODE feature was born from a practical problem: pipeline agents that just run consoletasks PlaylistHomePageTask don't need an LLM. They spin up a container, start sx, which calls the LLM to read a TextStep, which tells it to run a bash command. 30 seconds of overhead to do what a shell script does in 0.
So we built it: AGENTLESS_MODE=1 makes sx run the hook, capture the exit code, and exit. Zero tokens. The consoletask output now shows in pipeline logs too (popen capture).
Then the concurrency problem: agentless agents were counting against flash's 4 LLM slots even though they don't use the LLM. Solution: fake endpoint agentless.scorpiox.net with its own pool of 20 concurrent. Elegant.
27 E2E tests. Zero failures. 26 timer classes deleted from triggerfunc. Container redeployed. The old Azure Functions timer code is gone.
39 triggerfunc timers → 39 pipeline agents. 22 of them agentless. The remaining 14 still run in parallel (triggerfunc + pipeline) — next session we E2E those and delete the rest.
One step closer to killing AzDO entirely.