Skip to content

Needs Apple System ​

The Needs Apple system automatically surfaces blockers requiring Apple's attention across all agency operations. It appears prominently at the top of Mission Control and in Apple's daily morning briefings.

Purpose ​

Aggregate and prioritize items that specifically need Apple's action:

  • DNS and domain changes
  • Account access and permissions
  • Strategic decisions and approvals
  • Infrastructure issues requiring admin access
  • Vendor account problems

How It Works ​

Data Collection ​

The system monitors multiple sources for blocked items:

1. Agent Handoffs

  • File: data/agent-handoffs.jsonl
  • Filter: Items tagged to: "apple"
  • Format: JSONL with fromAgent, description, context fields

2. Pending Work

  • File: memory/pending-work.md
  • Filter: Items marked as "Blocked on Apple"
  • Parse: Extracts description and context from markdown

3. Manual Additions

  • Method: Direct API calls from scripts or agents
  • Endpoint: POST /needs-apple/add

Automated Processing ​

Cron: needs-apple-sync
Schedule: Every 2 hours, 8am–10pm CT
Script: scripts/needs_apple_push.py

The sync process:

  1. Reads agent handoffs and pending work files
  2. Parses blocked items and context
  3. Deduplicates against data/needs_apple_seen.json
  4. Pushes new items to Convex database
  5. Prevents duplicate notifications on reruns

Deduplication Logic ​

Seen items tracking:

  • File: data/needs_apple_seen.json
  • Key: Hash of item description
  • Purpose: Prevent duplicate entries when cron reruns

API Endpoints ​

All endpoints require x-activity-secret header for authentication.

Add Item ​

http
POST /needs-apple/add
Content-Type: application/json
x-activity-secret: {secret}

{
  "fromAgent": "axel",
  "description": "DNS record needed: ventures.creatorsagency.co",
  "context": "Blocking new project deployment, needs A record pointing to 76.76.21.21"
}

List Items ​

http
GET /needs-apple/list
x-activity-secret: {secret}

Returns all unresolved items with timestamps and metadata.

Resolve Item ​

http
POST /needs-apple/resolve
Content-Type: application/json
x-activity-secret: {secret}

{
  "id": "item_id_from_list"
}

Marks item as resolved and records resolution timestamp.

Database Schema ​

Convex table: needs_apple

typescript
{
  fromAgent: string,      // Which agent identified the blocker
  description: string,    // Brief description of what's needed
  context?: string,       // Additional details and reasoning
  resolved: boolean,      // Whether Apple has addressed it
  createdAt: number,     // When item was added (timestamp)
  resolvedAt?: number,   // When item was resolved (timestamp)
}

Dashboard Display ​

Mission Control ​

  • Location: Hero section at top of home page
  • Layout: Card-based list of unresolved items
  • Features:
    • Resolve button for each item
    • Empty state when no blockers exist
    • Color-coded by age/priority
    • Links to relevant context when available

Apple's Morning Brief ​

  • Integration: Prepended to 6am Ops & Strategy Audit
  • Format: Bullet list with context
  • Frequency: Daily at 5am CT (before audit content)
  • Purpose: Ensure Apple sees blockers first thing

Adding Items from Code ​

Python Example ​

python
import requests
from pathlib import Path

# Load environment
env = dict(
    l.split('=', 1) 
    for l in Path('mission-control/.env.local').read_text().splitlines() 
    if '=' in l and not l.startswith('#')
)

site = env['NEXT_PUBLIC_CONVEX_SITE_URL'].strip()
secret = env['ACTIVITY_LOG_SECRET'].strip()

# Add item
response = requests.post(
    f"{site}/needs-apple/add",
    headers={
        "x-activity-secret": secret, 
        "Content-Type": "application/json"
    },
    json={
        "fromAgent": "axel",
        "description": "Vercel team-scoped API returning 403",
        "context": "Build health monitoring is blind since Mar 23. Need Apple to fix API token/team permissions."
    },
    timeout=10
)

Direct Script Usage ​

bash
cd /Users/aurora/.openclaw/workspace
python3 scripts/needs_apple_push.py \
  --agent "axel" \
  --description "DNS record needed" \
  --context "Type=A, Name=ventures, Value=76.76.21.21, Zone=creatorsagency.co"

Common Use Cases ​

DNS Changes ​

Most frequent category of Apple blockers:

  • A records for new subdomains
  • CNAME records for service redirects
  • TXT records for verification
  • SSL certificate approvals

Format for DNS requests:

Type=A, Name=ventures, Value=76.76.21.21, Zone=creatorsagency.co, Proxy=DNS only

Account Access ​

Second most common category:

  • Vercel team permissions
  • GitHub organization access
  • Vendor account reactivation
  • API key regeneration

Infrastructure Decisions ​

Strategic or security-related decisions:

  • Server provisioning approvals
  • Security setting changes
  • Integration authorizations
  • Budget-related infrastructure

Resolution Process ​

Apple's Workflow ​

  1. Morning review — see items in 6am audit
  2. Mission Control — view details in dashboard
  3. Take action — complete the requested task
  4. Mark resolved — click resolve button in dashboard

Automatic Resolution ​

Some items may auto-resolve if:

  • Underlying issue is fixed by other means
  • Item becomes obsolete due to changed requirements
  • Duplicate item is resolved elsewhere

Monitoring and Metrics ​

Dashboard Metrics ​

  • Total unresolved — count of open items
  • Average resolution time — how long items stay open
  • Most common categories — DNS, access, infrastructure
  • Agent distribution — which agents identify most blockers

Historical Data ​

All resolved items remain in database with resolution timestamps for analysis of:

  • Resolution patterns
  • Common blocker types
  • Response time trends
  • Agent reporting patterns

Integration Points ​

With Other Systems ​

  • HEARTBEAT.md — blocked items get parsed and surfaced
  • Agent handoffs — direct integration via JSONL format
  • Pending work — markdown parsing for blocked sections
  • Morning audits — automatic prepending to daily briefings

Security Notes ​

  • API requires secret header to prevent unauthorized additions
  • Only Apple can mark items resolved
  • All actions are logged with timestamps
  • Agent source is tracked for accountability