Files
clinera-site/pi-worker
Azreen Jamal ccdbf94450 fix: detect Pi API errors in event stream (exit code 0 on failure)
Pi CLI exits with code 0 even when the Anthropic API returns errors
(e.g. insufficient credits). The error is only visible in the JSON
event stream as stopReason:"error" with an errorMessage field.

Now the executor parses message_end/turn_end events for errorMessage
and treats them as failures, preventing false "task completed" reports.
2026-03-06 15:41:02 +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.