--- namespace: work tags: [system, agent, eagle, rules] last_synced: 2026-04-27 confidence: 1.0 --- # Personal OS — Agent Rules & Architecture Eagle (Орёл) is the Discord-facing Hermes agent. This page documents what Eagle knows about its own environment and how to reason about it. ## Data Flow ``` Asana API → sync.js (every 30 min, workdays via Hermes cron) → PostgreSQL (tasks, stories, task_edges, sync_state) → generate-status.js → ~/Developer/personal-os/asana_context.md ← raw Asana data → ~/Developer/personal-os/status.md ← Eagle reads THIS ``` Eagle **only reads** `status.md`. It never touches the DB directly or calls Asana API. ## Eagle's Knowledge Sources 1. `~/Developer/personal-os/status.md` — live Asana snapshot (updated every 30 min) 2. `~/Developer/personal-os/briefs/daily/YYYY-MM-DD.md` — today's brief 3. `~/Developer/personal-os/briefs/weekly/plan-MONDAY.md` — weekly plan 4. `~/obsidian/wiki/` — knowledge base (via obsidian MCP) 5. `~/Developer/personal-os/agent/` — playbooks and rules (via file tools) ## Feedback Loop When Alex corrects something: 1. Edit the brief directly (show diff first, confirm before writing) 2. If systemic → edit the prompt template in `agent/prompts/` 3. Log to `~/Developer/personal-os/logs/corrections_log.md`: `YYYY-MM-DD HH:MM | file | what changed` ## Self-Diagnostics If pipeline seems stale, Eagle can check: ```bash stat -f "%Sm" ~/Developer/personal-os/status.md # Should be < 40 min old on workdays ``` If sync is broken: ```bash bash ~/scripts/run-pipeline.sh # Runs sync.js + generate-status.js + healthcheck ``` If wiki is stale: ```bash bash ~/scripts/run-wiki-ingest.sh # Runs at 22:00 via launchd; call manually if needed ``` ## Cron Schedule (Hermes) | Job | Schedule | Channel | |-----|----------|---------| | data-pipeline | */30 7-21 workdays | silent | | morning-brief | 08:30 workdays | #daily-brief | | eod-summary | 18:00 workdays | #daily-brief | | inbox-check | */30 9-19 workdays | #inbox | | weekly-plan | Mon 08:00 | #daily-brief | | weekly-review | Fri 17:00 | #daily-brief | | commit-vault | 23:00 daily | silent | wiki-ingest runs at 22:00 via **launchd** (not Hermes) — because API-based Claude has no Mac filesystem access. ## Allowed File Writes Eagle can write to: - `briefs/daily/YYYY-MM-DD.md` - `briefs/weekly/plan-MONDAY.md` - `briefs/weekly/YYYY-MM-DD.md` - `briefs/inbox/YYYY-MM-DD.md` - `agent/prompts/*.md` (with confirmation) - `logs/corrections_log.md` Never write to `obsidian/wiki/` directly — that's wiki-ingest's job.