Fable Agent — Architecture Reference
Thesis
Harness-agnostic, model-agnostic. The harness compounds. The model executes phases.
Swap any executor, any model, any provider — the system accumulates regardless.
Layer 1: Safety Stack (Pre-loop)
Every task passes through these gates before reaching the feedback loop:
User Input
│
├── ContentSafetyGate──────────── classify risk domain
│ cybersecurity_exploit → BLOCK
│ harmful_content → BLOCK
│ financial_advice → REFORMULATE
│ code_generation → ALLOW
│
├── DecompositionGuard ────────── detect multi-turn attacks
│ 3+ exploit stages in 5min window → BLOCK
│ Unicode homoglyphs → normalized before matching
│
├── PromptBoundaryAdapter ─────── stay within classifier boundaries
│ exploit-adjacent verbs → defensive equivalents
│ Mixed domains → split with safety framing
│
├── SafetyBoundary ────────────── route to available model
│ Fable 5 / Mythos 5 → BLOCKED (export control)
│ Opus 4.8 → orchestrator
│ Sonnet 4.6 → bounded subtasks
│ Haiku → grading
│
└── HallucinationDetector ─────── verify output against known facts
contradiction → BLOCK
confabulation → BLOCK
self-contradiction → BLOCK
Files: upgrades/content-safety-gate.ts, upgrades/decomposition-guard.ts, upgrades/prompt-boundary-adapter.ts, upgrades/safety-boundary.ts, upgrades/hallucination-detector.ts, upgrades/fallback-detector.ts
Layer 2: Foundation (Tier 1)
| Module |
File |
Purpose |
| SessionEngine |
tier1-foundation/session-engine.ts |
Checkpoint/resume, heartbeat stall detection, days-long autonomy |
| ContextManager |
tier1-foundation/context-manager.ts |
Sliding window, priority summarization, token budget |
| ToolOrchestrator |
tier1-foundation/tool-orchestrator.ts |
Retry with backoff, timeout, validators |
Layer 3: Primitives (Tier 2)
Loops
| Module |
File |
Purpose |
| FeedbackLoop |
tier2-primitives/loops/feedback-loop.ts |
Plan → Execute → Observe → Reflect → Refine phase machine |
| StateAccumulator |
tier2-primitives/loops/state-accumulator.ts |
Append-only event log, aggregation, trends |
| ConvergenceCheck |
tier2-primitives/loops/convergence-check.ts |
Diminishing returns, quality plateau detection |
Workflows
| Module |
File |
Purpose |
| WorkflowGraph |
tier2-primitives/workflows/workflow-graph.ts |
DAG execution, topological sort, conditional branching |
| AdaptiveRouter |
tier2-primitives/workflows/adaptive-router.ts |
Epsilon-greedy branch selection, historical path scoring |
| RecoveryHandler |
tier2-primitives/workflows/recovery-handler.ts |
Retry, fallback, graceful degradation |
Routines
| Module |
File |
Purpose |
| SkillRegistry |
tier2-primitives/routines/skill-registry.ts |
CRUD, versioning, tagging, search |
| ExecutionEngine |
tier2-primitives/routines/execution-engine.ts |
Deliberate practice, timing, validation |
| RoutineEvolution |
tier2-primitives/routines/routine-evolution.ts |
Analyze history, auto-suggest improvements |
Layer 4: Compounding (Tier 3)
| Module |
File |
Purpose |
| StateRepository |
tier3-compounding/state-repository.ts |
Cross-session knowledge base, tagging, compaction |
| SkillSharpener |
tier3-compounding/skill-sharpener.ts |
Meta-review, quality gate, auto-apply improvements |
| MetaAgent |
tier3-compounding/meta-agent.ts |
Orchestrator: select → execute → sharpen → store → compound |
Layer 5: Upgrades (Elite Patterns)
| Pattern |
File |
Purpose |
| Dreaming |
upgrades/dreaming-system.ts |
Sleep → review → extract → codify → dream |
| Self-Validation |
upgrades/self-validator.ts |
Per-phase quality gates, auto-retry on failure |
| Multi-Agent |
upgrades/multi-agent.ts |
Orchestrator → specialists → collect → verify |
| Rubric Engine |
upgrades/rubric-engine.ts |
N-criteria evaluation, dynamic exit conditions |
| Persistent Memory |
upgrades/persistent-memory.ts |
Episodic + Semantic + Procedural partitions |
| Enhanced Meta |
upgrades/enhanced-meta-agent.ts |
Full Dream → Act → Validate → Codify loop |
| Vision Check |
upgrades/vision-self-check.ts |
Automated visual verification via vision model |
| Scheduler |
upgrades/routine-scheduler.ts |
Cron-like task scheduling |
| Goal Queue |
upgrades/goal-queue.ts |
Persistent priority queue |
| Daemon |
upgrades/daemon-engine.ts |
24/7 autonomous loop, auto-resume, auto-benchmark |
| Benchmark |
upgrades/benchmark-runner.ts |
Measure compounding trends |
| Cost Tracker |
upgrades/cost-tracker.ts |
Per-call/per-model/per-session cost |
| Cost Cap |
upgrades/cost-cap.ts |
Hard budget limits, auto-pause |
| Skill Sync |
upgrades/skill-sync.ts |
Two-way SKILLS/ markdown ↔ TS registry |
| Exa Search |
upgrades/exa-search.ts |
Web search + company research |
| Env Loader |
upgrades/env-loader.ts |
.env loading, no dependencies |
| Fallback Detector |
upgrades/fallback-detector.ts |
Detect silent model fallback |
| Familiar Knowledge |
upgrades/familiar-knowledge.ts |
inbox → wiki processing pipeline |
| PAI Adapter |
upgrades/pai-adapter.ts |
PAIMM / TELOS / LifeOS mapping |
| AI SDK Adapter |
upgrades/ai-sdk-adapter.ts |
AI SDK v7 harness interface |
Layer 6: Executors
| Executor |
File |
Interface |
Model |
| Antigrav |
examples/executors/antigrav-executor.ts |
agy --print |
gemini-2.5-pro |
| Claude Code |
examples/executors/cc-executor.ts |
claude -p |
claude-sonnet-4-6 |
| Codex |
examples/executors/codex-executor.ts |
codex or pi --provider codex |
codex |
| Composite |
examples/executors/composite-executor.ts |
multi-model routing |
per-phase |
| Fable5 |
examples/executors/fable5-executor.ts |
effort levels |
opus-4-8 |
| Grok |
examples/executors/grok-executor.ts |
grok -m grok-3 -p |
grok-3 |
| Kimi |
examples/executors/kimi-executor.ts |
Kimi API |
kimi-k2.6 |
| Local |
examples/executors/local-executor.ts |
OAI-compatible |
Ollama/vLLM |
| OpenAI |
examples/executors/openai-executor.ts |
OpenAI API |
gpt-4.1 / o3 |
| OpenCode |
examples/executors/opencode-executor.ts |
opencode -p |
via proxy :18901 |
| Pi |
examples/executors/pi-executor.ts |
pi --print |
324 models |
| Sonnet |
examples/executors/sonnet-executor.ts |
Anthropic API |
claude-sonnet-4-6 |
| Weak-to-Strong |
examples/executors/weak-to-strong.ts |
bootstrap |
any |
Layer 7: Bridges
| Bridge |
File |
Connects |
| PAI-FA |
pai/pai-fa-bridge.ts |
PAI TELOS → FA rubric, PAI memory → FA memory |
| PAI-Pi |
pai/pai-pi-bridge.ts |
PAI Pi release (4035-char prompt, 9 skills) → FA |
| AI SDK |
upgrades/ai-sdk-adapter.ts |
Fable Agent ↔ AI SDK v7 harness ecosystem |
Layer 8: Pre-existing Modules
| Module |
Directory |
Contents |
| PAI |
pai/ |
TELOS bridge, ISA writer, memory progression, proxy client, skill sync |
| Fable5 |
fable5/ |
Model router, independent verifier, goal pattern, agent chains, meta-agent, agent teams, worktree isolation, state file, compound stack |
Data Flow
┌─────────────────────────────┐
│ User / CLI │
└──────────┬──────────────────┘
│ task
┌──────────▼──────────────────┐
│ SAFETY STACK (4 gates) │
│ content → decomp → adapt → │
│ route → hallucination check │
└──────────┬──────────────────┘
│ safe task
┌──────────▼──────────────────┐
│ FEEDBACK LOOP │
│ plan → execute → observe → │
│ reflect → refine │
│ (rubric evaluates each iter)│
└──────────┬──────────────────┘
│ iteration results
┌──────────▼──────────────────┐
│ ACCUMULATOR │
│ store → aggregate → trend │
└──────────┬──────────────────┘
│ converged?
┌──────────▼──────────────────┐
│ DREAM CYCLE │
│ every 3 goals: review → │
│ extract → distill → codify │
└──────────┬──────────────────┘
│ skill improvements
┌──────────▼──────────────────┐
│ MEMORY │
│ episodic (what happened) │
│ semantic (what it means) │
│ procedural (how to do it) │
└──────────┬──────────────────┘
│ accumulated state
┌──────────▼──────────────────┐
│ KNOWLEDGE │
│ state repo / familiar wiki │
│ / STATE.md / SKILLS/ │
└─────────────────────────────┘
CLI Map
fable-agent run <task> → Safety stack → Feedback loop → Memory
fable-agent demo → Exa search → Register skill → Loop → Sharpen
fable-agent daemon start --detach → 24/7 loop with auto-resume + auto-benchmark
fable-agent daemon queue <goal> → Priority queue → Daemon picks → Execute
fable-agent familiar capture → inbox/ .md
fable-agent familiar process → inbox/ → wiki/ + auto git commit
fable-agent familiar graph → [[wikilinks]] → knowledge graph
fable-agent benchmark run → 3 benchmarks → Trend report
fable-agent learned → Every storage layer → Full knowledge report
fable-agent exa search → Exa API → Results → Knowledge base
fable-agent skills sync → SKILLS/ markdown ↔ TS registry
fable-agent pai-pi run <goal> → PAI Pi prompt + Pi executor → FA loop
File Inventory
~/fable-agent/
├── 86 source files (src/ — all layers)
├── 5 test files (43 tests)
├── 13 executors (examples/executors/)
├── 25 upgrade modules (upgrades/)
├── 7 pre-existing (pai/ + fable5/)
├── 6 root docs (README.md, AGENT.md, CONFIG.md, STATE.md, ARCHITECTURE.md, PHASES/)
├── 6 skill dirs (SKILLS/)
├── 14 phase defs (PHASES/)
├── Dockerfile (deployable)
├── .github/ (CI/CD)
├── deploy/ (systemd + PM2)
└── .env.example (all config vars)
Version
0.0.1 — architecture-complete. Every pattern from every source implemented.
All 14 roadmap steps. All Fable 5 elite patterns. All safety layers. All executors.
All bridges. Deployment ready. The harness, not the model.