# Shared — DOX ## Purpose Cross-project modules: inference client and cedar-copper aesthetic tokens used by all three apps. ## Ownership - Inference client: `inference_client.py` - Aesthetic tokens: `cedar_copper_tokens.py` ## Local Contracts - `inference_client.py` provides `cooldown_status()`, `cooldown_active()`, `generate()`, and `chat_messages()` - Default model: `Qwen/Qwen2.5-1.5B-Instruct`. Override via `INFERENCE_MODEL`. - All LLM calls have always-fallback to procedural/template output - `cedar_copper_tokens.py` exports CSS variables for the sky-to-sunrise palette ## Work Guidance - Changes here affect all three apps — test across CritterCalm, FocusFriend, TinyBard - Cooldown defaults: tinybard 6s, focusfriend 10s, crittercalm 12s - Override via per-project env vars or global `INFERENCE_COOLDOWN_SECONDS` ## Verification - Inference client loads without errors - Cooldown system respects per-project timing - Cedar-copper tokens render consistent palette across all apps