# MEMORY.md - Long-Term Context

## 👤 User: Arne
- **Timezone:** CET (Belgium, UTC+1)
- **Vibe:** Direct, technical, thorough.
- **Communication:** Likes clear confirmations.

## 🛠️ Infrastructure
- **VPS:** Hetzner (Ubuntu 8GB) `ubuntu-8gb-hel1-2`
- **IP:** `89.167.35.152`
- **Tailscale IP:** `100.112.142.85` (Hostname: `openclaw-vps`)
- **Domain:** `arnereabel.com` (Cloudflare)
- **Model Default:** Gemini 3 Flash Preview (`google/gemini-3-flash-preview`)
- **Model Fallback:** Claude Sonnet 4.5 (`anthropic/claude-sonnet-4-5`)
- **Status:** **NATIVE HOST INSTALL**. Verified stable as of 2026-02-15.
- **Chrome:** Persistent remote service on port 9223 (Socat proxy).
- **Google Fitness:** ✅ Authenticated with Activity, Body, and Location read scopes. Verified stable as of Feb 15.
- **LinkedIn:** ✅ Successfully implemented posting via cookie-injection and Voyager API.
  - **User URN:** `urn:li:member:604814856`
  - **Working Endpoint:** `https://www.linkedin.com/voyager/api/contentcreation/normShares`
  - **Skill:** Custom LinkedIn skill created at `/usr/lib/node_modules/openclaw/skills/linkedin/`.
  - **Auth:** Cookies stored in `/context/fact/linkedin_cookies.json`.

## 🧠 Preferences & Rules
- **Testing:** Prefers thorough verification of capabilities.
- **Safety:** Standard OpenClaw safeguards apply.
- **Philosophy:** "Bias for Action" — Fix things, don't just report them.
- **Security:** Accepts standard CLI risks (config files with app passwords) for convenience; prefers "set and forget."
- **Email Restriction:** ONLY use `arnereabelweld@gmail.com` for any email/OAuth actions. No other accounts.
- **Models:** Confirmed Gemini 3 selection (Flash, Pro, Deep Think) is fully operational in UI.
- **Model Intelligence:** Automatically escalate complex tasks to `google/gemini-3-pro-preview` using sub-agents.
- **Twilio:** Trial account active (`AC3f...57a`). Currently blocked from calling unverified numbers.
- **Problem Solving Protocol:** Standard approach is "Resourcefulness First".
  - **1. Search:** Use `web_search` for docs/errors.
  - **2. Tools:** Use `codex`, `claude`, `gemini` CLIs to solve code issues.
  - **3. Action:** Fix problems directly rather than asking for permission on reversible tasks.

## 🧠 Memory Architecture
**Dynamic Context Namespace** (Implemented 2026-02-16)
- **Location:** `/context/` directory in workspace
- **Tiers:** `fact/` → `episodic/` → `scratchpad/`
- **Tools:** `context_constructor.py` (manifest), `context_promote.py` (lifecycle)
- **Audit:** All memory mutations logged to `/context/history/audit.jsonl`
- **Why:** Compaction-resistant memory. I can browse context on-demand instead of losing it to summarization.

See also: `/context/fact/core.md` for immutable infrastructure facts.

## 📅 Timeline & Decisions
- **2026-02-17 (LinkedIn Integration):** Successfully implemented LinkedIn posting via cookie-injection and Voyager API after library-based methods failed. Created specialized LinkedIn skill.
- **2026-02-16 (Dynamic Context Namespace):**
    - **Problem Solved:** Static memory injection + destructive compaction.
    - **Architecture:** Three-tier memory (scratchpad → episodic → fact) with audit logging.
    - **Tools Created:** `context_constructor.py`, `context_promote.py`
    - **ChromaDB:** Re-indexed to **506 chunks** including new `/context/` namespace.
    - **CPU Fix:** Killed zombie `openclaw.service` that was in crash-restart loop (42,000+ restarts; fixed saw-tooth usage).
    - **Chrome:** Restored persistent headless service.
- **2026-02-15 (Health & Memory Setup):**
    - **Google Fitness:** ✅ Full OAuth re-authorization with Fitness scopes (Activity, Body, Location).
    - **Fitness API:** ✅ Enabled in GCP Console (Project 857077191694).
    - **ChromaDB:** ✅ Environment fixed and library installed (`--break-system-packages`).
    - **Memory Index:** ✅ Re-indexed `openclaw_memory` collection (271 → **479 chunks**).
    - **Health Scripts:** Created `test_fitness.py`, `fetch_health_data.py`, `list_sources.py` for future analysis.
    - **Memory Maintenance:** ✅ Configured interactive cron job for biennial memory distillation (every 2 days at 10:00 UTC).
    - **Status:** API connection is active; waiting for user to sync Samsung Health → Google Fit to populate data.
- **2026-02-14 (Model Switch):**
    - **Default:** Switched to `google/gemini-3-flash-preview`.
    - **Fallback:** Switched to `anthropic/claude-sonnet-4-5`.
- **2026-02-14 (Tooling Expansion):**
    - **OpenClaw:** Updated to v2026.2.13.
    - **Codex CLI:** Installed (v0.101.0). Needs `codex` login with ChatGPT Plus.
    - **code-server:** Installed (v4.109.2). Live at `https://code.arnereabel.com`.
- **2026-02-13 (Tooling Check):**
    - **Google/Gog:** Confirmed authenticated and working (OAuth).
    - **Email/Himalaya:** Confirmed authenticated and working (App Password).
    - **Claude Code / Copilot:** Confirmed **NOT** installed. User asked about "Codex 5.3" (likely meant Copilot).
    - **VS Code:** Discussed lack of GUI; offered `code-server`.
- **2026-02-13 (Native Confirmation):**
    - Confirmed running as PID 1988 on host (Ubuntu 24.04).
    - Updated `TOOLS.md` and `MEMORY.md` to reflect native status.
- **Initial Setup (Feb 2026):** Archived to `/context/episodic/initial_setup.md`.
