Files
clinera-site/pi-worker
Azreen Jamal ea0ba4ee10 fix: major cleanup - verify cache, section cache, rate limit retry, split sweep from cleanup
- 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
2026-03-06 20:40:31 +08:00
..

🤖 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

  1. 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
  2. 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

  1. Copy .env.sample to .env and fill in credentials
  2. bun install
  3. bun run dev (local) or bash 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.