ea0ba4ee10
- Separate cleanupCompletedMyTasks (fast, no Pi) from sweepIncompleteTasks (with Pi verify) - Cache verified-not-done tasks for 30min to avoid re-checking every cycle - Cache project sections for 5min to reduce API calls - Add rate limit (429) retry with Retry-After header - Add server error (5xx) retry - Remove assignee:null - only use assignee_status:later - Keep tasks assigned to user always
🤖 Pi Worker
Autonomous agent that runs inside cr-server-new, picks up Asana tasks, and performs automated project improvements using the Pi improved agent.
What It Does
- Asana Task Execution: Polls Asana for tasks in "To Do" or "Pi Worker" sections, executes them using the Pi CLI agent, and reports results back as comments
- Autonomous Improvements: Periodically analyzes the project codebase and makes improvements (code quality, security, docs, testing, performance, type safety)
Architecture
Asana Board ←→ Pi Worker (cr-server-new) ←→ Pi CLI Agent ←→ Codebase
↕
Health Server (:8787)
Setup
- Copy
.env.sampleto.envand fill in credentials bun installbun run dev(local) orbash deploy.sh(production)
Configuration
| Variable | Description | Default |
|---|---|---|
ASANA_ACCESS_TOKEN |
Asana personal access token | Required |
ASANA_PROJECT_GID |
Project to poll (auto-discovered if empty) | Auto |
PI_MODEL |
AI model to use | claude-sonnet-4-6 |
POLL_INTERVAL_SEC |
Asana polling interval | 120 |
IMPROVEMENT_INTERVAL_SEC |
Auto-improvement interval | 3600 |
Asana Board Setup
Create these sections in your Asana project:
- To Do — Tasks for Pi Worker to pick up
- In Progress — Currently being executed
- Done — Completed tasks
- Pi Worker (optional) — Dedicated section for Pi Worker tasks
Health Check
curl http://localhost:8787/health
Logs
Logs are written to ./logs/pi-worker-YYYY-MM-DD.log and stdout.