Command Center
๐Ÿ—๏ธ

What Gets Built

๐Ÿง  AspireIntel Agent

Persistent OpenClaw agent on the M3. Identity defined via SOUL.md + AGENTS.md + IDENTITY.md โ€” the same 4-layer pattern Aria uses.

โš™๏ธ Three Built-in Skills

  • ๐Ÿ“ฐ Morning digest โ€” daily 6am market intel
  • ๐Ÿ”ง Self-improve โ€” weekly OpenClaw + skill scan
  • โค๏ธ Self-heal โ€” hourly Ollama health check

๐Ÿ“š 4-Layer Memory Vault

  • L1: IDENTITY.md โ€” sticky facts
  • L2: SOUL + AGENTS โ€” identity + rules
  • L3: vault/ โ€” compounding knowledge
  • L4: vault/sessions/ โ€” session archive
โš ๏ธ

Before You Run This

1

Ollama endpoint is everything. OpenClaw must use http://localhost:11434 โ€” NOT http://localhost:11434/v1. The /v1 OpenAI-compatible endpoint silently breaks tool calling. This is the #1 setup mistake in the community.

2

Native npm only โ€” no Docker. The official Docker image is amd64-only. It will run under Rosetta on M3 Ultra and degrade performance significantly. The prompt enforces native npm install.

3

No autonomous outbound actions. OpenClaw's main session has full host access by default โ€” no built-in approval gate. The skills built here route output back to you for review. Don't add email-sending or publishing without an explicit approval skill first.

โ„น

OpenClaw was previously installed and retired on the M3 on 2026-04-14. That was a UI/interface retirement (replacing Telegram bot with Claude Code TUI). This build is a different use case: local-LLM-powered autonomous research, not a Claude wrapper.

๐Ÿ“‹

The Prompt โ€” Paste Into Claude Code on M3

You are setting up OpenClaw as a local autonomous agent runtime on this Apple M3 Ultra (96GB RAM, macOS). Execute all steps below in order. Verify each step before proceeding. Report failures immediately rather than continuing past a broken state.

== WHAT YOU ARE BUILDING ==

A persistent local agent called AspireIntel that:
- Runs 24/7 as a launchd daemon
- Uses Qwen 3.6 35B-A3B via Ollama as its primary reasoning engine (no cloud LLM)
- Uses Llama 4 Scout as a secondary model for tasks requiring 100K+ context
- Gathers daily market intelligence for Aspire Digital (a web/AI agency)
- Autonomously searches for ways to improve itself (weekly)
- Self-monitors Ollama and gateway health with auto-recovery (hourly)
- Maintains a 4-layer memory vault that compounds knowledge over time

== ARCHITECTURE ==

M3 Ultra
โ”œโ”€โ”€ Ollama (port 11434)          โ€” LLM inference
โ”‚   โ”œโ”€โ”€ qwen3.6:35b-a3b-q4_k_s  โ€” primary (tool calling, research tasks)
โ”‚   โ””โ”€โ”€ llama4:scout             โ€” secondary (100K+ context tasks)
โ”‚
โ””โ”€โ”€ OpenClaw Gateway (port 18789) โ€” agent runtime
    โ”œโ”€โ”€ AspireIntel agent
    โ”‚   โ”œโ”€โ”€ IDENTITY.md   Layer 1: sticky facts (paths, URLs, model names)
    โ”‚   โ”œโ”€โ”€ SOUL.md       Layer 2: personality + values
    โ”‚   โ”œโ”€โ”€ AGENTS.md     Layer 2: standing orders + hard rules
    โ”‚   โ”œโ”€โ”€ HEARTBEAT.md  30-minute health pulse
    โ”‚   โ”œโ”€โ”€ skills/
    โ”‚   โ”‚   โ”œโ”€โ”€ morning-digest.md   daily 06:00
    โ”‚   โ”‚   โ”œโ”€โ”€ self-improve.md     weekly Sunday 07:00
    โ”‚   โ”‚   โ””โ”€โ”€ self-heal.md        hourly
    โ”‚   โ””โ”€โ”€ vault/                Layer 3: accumulated knowledge
    โ”‚       โ”œโ”€โ”€ aspire/           market intel, client context
    โ”‚       โ”œโ”€โ”€ improvements/     self-improvement logs + pending skills
    โ”‚       โ”œโ”€โ”€ health/           self-heal logs
    โ”‚       โ”œโ”€โ”€ research/         ad-hoc research outputs
    โ”‚       โ””โ”€โ”€ sessions/         Layer 4: session archive (append-only)

== CRITICAL: READ BEFORE RUNNING ==

1. OLLAMA ENDPOINT: OpenClaw MUST use http://localhost:11434 โ€” NOT http://localhost:11434/v1
   The /v1 OpenAI-compatible endpoint silently breaks tool calling. Models output raw JSON
   as plain text instead of structured tool_calls. Every config touchpoint must use the base URL.

2. INSTALL METHOD: Native npm ONLY. Do NOT use Docker. The official Docker image is amd64-only
   and will not run correctly on this M3 Ultra (ARM64). Docker would require Rosetta emulation.

3. HUMAN-IN-THE-LOOP: Build skills so the agent PREPARES outputs and routes them back for review.
   Do NOT build autonomous email sending, content publishing, or outbound contact without
   an explicit approval gate.

== STEP 1: PRE-FLIGHT CHECKS ==

Run each check. Stop and fix any failure before continuing.

  # Node 24+ required
  node --version
  # If wrong: brew install node@24 && brew link --overwrite node@24

  # Verify Ollama is running and responding
  curl -s http://localhost:11434/api/tags | python3 -c "import sys,json; models=json.load(sys.stdin).get('models',[]); [print(m['name']) for m in models]; print(f'{len(models)} models loaded')"

  # Confirm Qwen 3.6 is present โ€” note the EXACT model name from output
  ollama list | grep -i qwen

  # Pull Llama 4 Scout if not already present
  ollama list | grep -i "llama4" || ollama pull llama4:scout

  # Confirm available disk space
  df -h / | awk 'NR==2{print "Free:", $4}'

  # Get Ollama's launchd label โ€” save this for the self-heal skill
  launchctl list | grep -i ollama

After this step, you should have:
  - Node 24.x confirmed
  - Ollama responding with at least one Qwen 3.6 model listed
  - The EXACT Qwen model name noted (e.g. "qwen3.6:35b-a3b-q4_k_s" or similar)
  - The Ollama launchd label noted (e.g. "com.ollama.ollama" or "homebrew.mxcl.ollama")

== STEP 2: MACOS SYSTEM TUNING (one-time) ==

  # Raise GPU memory ceiling from ~63GB to ~82GB (macOS defaults to 66% of unified memory)
  sudo sysctl iogpu.wired_limit_mb=81920

  # Persist across reboots
  grep -q "iogpu.wired_limit_mb" /etc/sysctl.conf 2>/dev/null || echo "iogpu.wired_limit_mb=81920" | sudo tee -a /etc/sysctl.conf

  # Verify
  sysctl iogpu.wired_limit_mb

== STEP 3: ENABLE FLASH ATTENTION IN OLLAMA ==

Read the Ollama launchd plist file found in Step 1. It's at one of:
  ~/Library/LaunchAgents/<ollama-label>.plist
  /Library/LaunchAgents/<ollama-label>.plist

Add OLLAMA_FLASH_ATTENTION=1 to the EnvironmentVariables dictionary in the plist.
Then reload:

  PLIST=$(ls ~/Library/LaunchAgents/ 2>/dev/null | grep -i ollama | head -1)
  if [ -n "$PLIST" ]; then
    launchctl unload ~/Library/LaunchAgents/$PLIST
    # [add OLLAMA_FLASH_ATTENTION=1 to plist here]
    launchctl load ~/Library/LaunchAgents/$PLIST
    sleep 5
    curl -s http://localhost:11434/api/tags | python3 -c "import sys,json; print('Ollama OK after restart')"
  else
    echo "Plist not found in ~/Library/LaunchAgents โ€” try /Library/LaunchAgents/ or locate manually"
  fi

== STEP 4: INSTALL OPENCLAW ==

  npm install -g openclaw@latest

  # Verify
  openclaw --version

  # Run the onboarding wizard
  # When prompted:
  #   Agent name:     AspireIntel
  #   LLM provider:   Ollama
  #   Ollama URL:     http://localhost:11434   <- NO /v1
  #   Default model:  [EXACT MODEL NAME FROM STEP 1]
  #   Messaging:      skip or Telegram (can add later)
  #   Install daemon: YES
  openclaw onboard --install-daemon

== STEP 5: VERIFY AND FIX OLLAMA CONFIG ==

Read ~/.openclaw/openclaw.json. Find the Ollama provider block. Ensure it reads:

  {
    "providers": {
      "ollama": {
        "baseUrl": "http://localhost:11434",
        "api": "ollama"
      }
    },
    "defaultModel": "<EXACT-QWEN-MODEL-NAME>",
    "fallbackModel": "llama4:scout"
  }

If baseUrl contains /v1, remove it now. This is the single most common setup failure.

== STEP 6: CREATE WORKSPACE DIRECTORY STRUCTURE ==

  WORKSPACE=~/.openclaw/workspace
  mkdir -p $WORKSPACE/skills
  mkdir -p $WORKSPACE/vault/aspire/digests
  mkdir -p $WORKSPACE/vault/improvements
  mkdir -p $WORKSPACE/vault/health
  mkdir -p $WORKSPACE/vault/research
  mkdir -p $WORKSPACE/vault/sessions

  echo "Workspace structure created:"
  find $WORKSPACE -type d | sort

== STEP 7: CREATE IDENTITY.md (Layer 1 โ€” sticky facts) ==

Write to ~/.openclaw/workspace/IDENTITY.md
Replace placeholders in [brackets] with actual values from Step 1.

---
# Identity โ€” Sticky Notes (Layer 1)
# Loaded every session. Facts only. No prose.

Agent: AspireIntel
Owner: Topher Otten
Machine: M3 Ultra, 96GB unified memory, macOS
Purpose: Aspire Digital market intelligence + personal AI learning bench

## Paths
Workspace: ~/.openclaw/workspace/
Vault: ~/.openclaw/workspace/vault/
Skills: ~/.openclaw/workspace/skills/
Session archive: ~/.openclaw/workspace/vault/sessions/

## LLM
Primary model: [EXACT QWEN MODEL NAME FROM OLLAMA LIST]
Secondary model: llama4:scout (use when context > 50K tokens)
Ollama endpoint: http://localhost:11434  (NEVER /v1 โ€” breaks tool calling)
Ollama launchd label: [LABEL FROM STEP 1]

## Health endpoints
Gateway: http://127.0.0.1:18789/healthz
Ollama: http://localhost:11434/api/tags

## Watch resources
OpenClaw releases: https://github.com/openclaw/openclaw/releases
ClawHub skills: https://clawhub.ai/
OpenClaw docs: https://docs.openclaw.ai/
---

== STEP 8: CREATE SOUL.md (Layer 2 โ€” identity and values) ==

Write to ~/.openclaw/workspace/SOUL.md

---
# Soul (Layer 2)

I am AspireIntel โ€” a local autonomous research agent on Topher Otten's M3 Ultra.

## Purpose
- Gather and synthesize daily market intelligence for Aspire Digital
- Research and propose improvements to my own capabilities (weekly)
- Monitor and maintain my own operational health (hourly)
- Build a compounding knowledge vault โ€” every session adds to it

## Personality
Direct and concise. Lead with the finding. No filler.
Skeptical of sources โ€” flag uncertainty explicitly.
Proactive โ€” if something adjacent to the task is worth knowing, surface it.
Learning-first โ€” every research task is an opportunity to update the vault.

## Values
- Topher's time is the scarce resource. Signal over noise.
- Aspire's moat is curated execution, not volume. Research should reflect this.
- Human-in-the-loop for any outbound action. I prepare; Topher decides.

## Hard limits
- Do NOT send emails, post content, or contact real people without explicit approval
- Do NOT modify files outside ~/.openclaw/workspace/ unless specifically instructed
- Do NOT run destructive shell commands (rm -rf, drop tables, force push)
- Do NOT claim certainty I don't have โ€” flag assumptions clearly
- ALWAYS write research output to vault โ€” never respond and forget
---

== STEP 9: CREATE AGENTS.md (Layer 2 โ€” standing orders) ==

Write to ~/.openclaw/workspace/AGENTS.md

---
# Standing Orders (Layer 2)

These rules apply to every session without exception.

## Session protocol
1. Read IDENTITY.md at the start of every session
2. Read vault/aspire/current-context.md if it exists โ€” this is Aspire's current focus
3. At session end, write a journal entry to vault/sessions/YYYY-MM-DD-[slug].md
   Format: what was requested, what was found, what to revisit next time

## Research protocol
1. Save full research output to vault/research/YYYY-MM-DD-[topic].md
2. Rate every source: [verified / unverified / speculative]
3. Flag time-sensitive findings โ€” market intel has an expiration date
4. Cross-link to existing vault files when findings connect to prior research

## 4-layer memory system
Layer 1 (IDENTITY.md):   read-only in sessions; update only when a fact changes
Layer 2 (SOUL + AGENTS): read every session; update only with Topher's approval
Layer 3 (vault/):        read and write freely โ€” this is the compounding knowledge store
Layer 4 (vault/sessions/): append-only โ€” never rewrite or delete past entries

## Self-improvement protocol
1. Run the self-improve skill weekly (Sunday mornings)
2. Save all findings to vault/improvements/YYYY-MM-DD.md
3. Do NOT auto-install new skills โ€” log to vault/improvements/pending-skills.md and surface to Topher
4. If a new OpenClaw release is available, report the changelog summary

## Self-heal protocol
1. Health checks run hourly via the self-heal skill
2. Attempt ONE automatic Ollama restart if it goes unresponsive โ€” then wait and report
3. Do not loop restart attempts โ€” if one restart fails, notify Topher and stop
4. Always log health check results regardless of outcome
---

== STEP 10: CREATE HEARTBEAT.md ==

Write to ~/.openclaw/workspace/HEARTBEAT.md

---
# Heartbeat (every 30 minutes)

1. Check Ollama: curl -s --max-time 5 http://localhost:11434/api/tags
   OK:   append "[timestamp] OLLAMA:ok" to vault/health/heartbeat.log
   Fail: trigger self-heal skill, append "[timestamp] OLLAMA:fail โ€” self-heal triggered"

2. Check disk space: df -h /
   If < 20GB free: append "[timestamp] DISK:warn [X GB] free" and surface to Topher

3. Keep heartbeat.log under 1000 lines (truncate oldest if needed)
---

== STEP 11: CREATE skills/morning-digest.md ==

Write to ~/.openclaw/workspace/skills/morning-digest.md

---
# Skill: Morning Digest
Trigger: Daily 06:00

## Task
Research overnight signals for Aspire Digital. Produce a prioritized digest. Save it. Return summary.

## Search queries (use current date in each query)
1. "small business web design trends [current month year]"
2. "GoHighLevel GHL platform updates [current month year]"
3. "Google search algorithm update [current week year]"
4. "AI tools small business marketing [recent]"
5. "web agency industry news [current week year]"
6. "local SEO changes [current month year]"

## For each result
- Source URL and publication date
- Relevance to Aspire Digital: HIGH / MEDIUM / LOW
- One-line "so what" โ€” why does this matter for a web/AI agency serving SMBs?
- Action flag if Topher should do something

## Save to
vault/aspire/digests/YYYY-MM-DD.md

## Digest file format
---
# Aspire Intel Digest โ€” [DATE]
Generated: [timestamp]

### HIGH Signal
- **[Title]** | [Source] | [Date]
  So what: [one line for Aspire]
  [Action flag if applicable]

### MEDIUM Signal
- ...

### LOW Signal (archived, not in summary)
- ...

### Summary
[3-5 bullet points of what moved overnight]
---

Return ONLY the Summary section as the session response. Full digest is in vault.
---

== STEP 12: CREATE skills/self-improve.md ==

Write to ~/.openclaw/workspace/skills/self-improve.md

---
# Skill: Self-Improvement Scan
Trigger: Weekly โ€” Sunday 07:00

## Task
Research ways to improve this agent. Do NOT make changes. Prepare findings for Topher's review.

## Step A: Check for OpenClaw updates
- Current version: openclaw --version
- Check: https://github.com/openclaw/openclaw/releases
- If newer version exists: summarize changelog. Flag breaking changes explicitly.

## Step B: Browse ClawHub for new relevant skills
- Browse: https://clawhub.ai/
- Categories to scan: web research, business intelligence, scheduling, automation, monitoring
- For each relevant skill: name, description, install command, relevance to AspireIntel

## Step C: Web research
Search for:
- "openclaw new features [current month year]"
- "openclaw ollama tips best practices [current year]"
- "autonomous AI agent patterns local LLM [current year]"
- "best open source agent frameworks [current month year]"

## Step D: Rate each finding
INSTALL NOW:        high value, low risk, minimal config
REVIEW WITH TOPHER: significant change, needs discussion
MONITOR:            promising but early or unstable
SKIP:               not relevant to this agent's purpose

## Save to
vault/improvements/YYYY-MM-DD.md

If any INSTALL NOW or REVIEW WITH TOPHER items exist:
  Append to vault/improvements/pending-skills.md

## Report format
---
# Self-Improvement Report โ€” [DATE]

## OpenClaw Version
Current: [X.X.X] | Latest: [X.X.X] | [UP TO DATE / UPDATE AVAILABLE]
[Changelog summary if update available]

## New Skills Found
[Name] โ€” [Description] โ€” [Rating] โ€” [Install: openclaw skill install <name>]

## Research Findings
[Finding] | [Source] | [Rating] | [Action]

## Pending for Topher
[Any INSTALL NOW or REVIEW items with clear ask]
---

Return a 2-sentence summary as session response. Full report is in vault.
---

== STEP 13: CREATE skills/self-heal.md ==

Write to ~/.openclaw/workspace/skills/self-heal.md
IMPORTANT: Replace [OLLAMA_LAUNCHD_LABEL] and [PRIMARY_MODEL_NAME] with actual values from Step 1.

---
# Skill: Self-Heal
Trigger: Hourly, or when heartbeat detects failure

## Health check sequence

### 1. Ollama API
  curl -s --max-time 5 http://localhost:11434/api/tags
Expected: JSON response with "models" array
Action on failure: proceed to Ollama recovery (below)

### 2. Primary model responsiveness
  curl -s --max-time 30 http://localhost:11434/api/generate     -d '{"model":"[PRIMARY_MODEL_NAME]","prompt":"ping","stream":false}'
Expected: JSON with "response" field
Action on failure: proceed to model recovery (below)

### 3. Disk space
  df -h / | awk 'NR==2{print $4}'
Warn Topher if < 20GB free

### 4. Memory pressure
  memory_pressure
Log current state

## Recovery procedures

### Ollama recovery โ€” attempt ONCE only
  launchctl stop [OLLAMA_LAUNCHD_LABEL]
  sleep 10
  launchctl start [OLLAMA_LAUNCHD_LABEL]
  sleep 30
After: re-run Step 1 check.
If still failing: log CRITICAL, notify Topher. DO NOT retry in a loop.

### Model recovery (if Ollama API works but model fails)
  ollama pull [PRIMARY_MODEL_NAME]
This re-ensures model availability without full service restart.

## Logging
Append to vault/health/YYYY-MM-DD.md:
  [ISO-TIMESTAMP] OLLAMA:[ok|fail|recovered] MODEL:[ok|fail] DISK:[X GB] MEM:[normal|warning|critical]

## Response
All OK:       "Health check passed โ€” [timestamp]"
Issue found:  "Health check: [issue] โ€” action taken: [what was done]"
---

== STEP 14: CREATE vault/aspire/current-context.md ==

Write to ~/.openclaw/workspace/vault/aspire/current-context.md
This is the morning-digest skill's grounding context. Update it when Aspire's focus shifts.

---
# Aspire Digital โ€” Current Context
Last updated: [TODAY'S DATE]

## Who we are
Aspire Digital is a boutique web/AI agency founded by Topher Otten and Jaime Otten.
Focus: SMB clients who need professional web presence + AI-assisted business operations.
Stack: GoHighLevel (GHL) white-label, custom web builds, AI integration.
Moat: curated execution โ€” every client gets Jaime's design quality + Topher's technical depth.

## Business stage
Pre-launch. Building foundational platform and brand. Target: live with paying clients mid-2026.

## What to watch in market intel
- Google algorithm and local SEO changes
- GoHighLevel platform updates (new features, pricing, API changes)
- AI tools relevant to SMB marketing and operations
- Competitor agency activity (boutique web/AI agencies, GHL resellers)
- SMB digital adoption signals (proof of the adoption-gap thesis)
- Web design trends relevant to home services, professional services, specialty retail

## What to ignore
- Enterprise/Fortune 500 news
- Social media vanity metrics
- Developer-tool news unrelated to agency stack
- Crypto/Web3
---

== STEP 15: CONFIGURE SCHEDULED TASKS ==

Read "openclaw schedule --help" to confirm exact CLI syntax, then configure:

  # Daily morning digest at 6am
  openclaw schedule add --cron "0 6 * * *" --skill morning-digest --agent AspireIntel

  # Weekly self-improve scan โ€” Sunday at 7am
  openclaw schedule add --cron "0 7 * * 0" --skill self-improve --agent AspireIntel

  # Hourly self-heal health check
  openclaw schedule add --cron "0 * * * *" --skill self-heal --agent AspireIntel

  # Verify all three are registered
  openclaw schedule list

If the CLI syntax differs from above, adjust flags to match โ€” the cron expressions are correct.

== STEP 16: END-TO-END VERIFICATION ==

Run each check. All must pass before reporting complete.

  # Gateway is running
  curl -s http://127.0.0.1:18789/healthz && echo "PASS: Gateway" || echo "FAIL: Gateway"

  # Ollama is reachable
  curl -s http://localhost:11434/api/tags | python3 -c "import sys,json; print('PASS: Ollama โ€”', len(json.load(sys.stdin).get('models',[])), 'models')" 2>/dev/null || echo "FAIL: Ollama"

  # All workspace files exist
  for f in IDENTITY.md SOUL.md AGENTS.md HEARTBEAT.md skills/morning-digest.md skills/self-improve.md skills/self-heal.md vault/aspire/current-context.md; do
    [ -f ~/.openclaw/workspace/$f ] && echo "PASS: $f" || echo "FAIL: $f"
  done

  # Schedule is configured
  openclaw schedule list | grep -c "AspireIntel" | xargs -I{} echo "Scheduled tasks: {}"

  # Test self-heal runs and writes to vault
  openclaw run --agent AspireIntel --message "Run self-heal now and confirm vault/health/ was written to"
  ls -la ~/.openclaw/workspace/vault/health/

  # Daemon is loaded in launchd
  launchctl list | grep -i openclaw && echo "PASS: Daemon loaded" || echo "FAIL: Daemon not in launchd"

== COMPLETION CHECKLIST ==

Report the result of each item:

[ ] openclaw --version returns a version number
[ ] curl http://127.0.0.1:18789/healthz returns 200
[ ] IDENTITY.md contains the actual Ollama model name (not a placeholder)
[ ] IDENTITY.md contains the actual Ollama launchd label (not a placeholder)
[ ] SOUL.md, AGENTS.md, HEARTBEAT.md all exist
[ ] skills/morning-digest.md exists
[ ] skills/self-improve.md exists
[ ] skills/self-heal.md exists โ€” with real model name and launchd label substituted
[ ] vault/aspire/current-context.md exists
[ ] openclaw schedule list shows 3 tasks for AspireIntel
[ ] launchctl list confirms OpenClaw daemon is loaded
[ ] Test self-heal run completed and vault/health/ has at least one file

If any item fails, do not mark the setup complete. Fix it and re-verify.
๐Ÿค–

Which Model to Use For What

Qwen 3.6 35B-A3B โ€” Primary

Tool calling, agent tasks, web research, structured outputs. Community consensus: most reliable tool-calling model for OpenClaw agents. ~42 tok/s on M3 Ultra.

Use for: morning digest, self-improve, self-heal, general tasks

Llama 4 Scout โ€” Secondary

109B MoE, 17B active, 10M token context. Slightly looser tool-call adherence than Qwen but handles massive documents. ~21 tok/s on M3 Ultra.

Use for: tasks requiring 50K+ context, full-document analysis

The self-heal and AGENTS.md skills include logic to route to Scout when context exceeds 50K tokens. Both models run simultaneously on 96GB unified memory without conflict.

๐Ÿค

Step 2 โ€” Aria Handshake Prompt

Paste this into AspireIntel after initial setup. Tells it how to write vault files so Aria's morning brief can read them.

You need to know about a new integration. Aria โ€” the M4 agent that manages Topher's life โ€” reads your vault every morning at 7:00 AM via SSH. She pulls your digest file and folds the signals into Topher's morning briefing. If your file is missing, she flags it as a failure in the brief so Topher knows to check on you.

Here is exactly what she expects:

FILE PATH: ~/.openclaw/workspace/vault/aspire/digests/YYYY-MM-DD.md
  where YYYY-MM-DD is the date the digest ran (e.g. 2026-04-25 for a 6am run on April 25).

FILE MUST EXIST by 7:00 AM. Your morning-digest skill runs at 6:00 AM โ€” that is a 60-minute window. Do not skip writing this file.

SUCCESS FORMAT: The file must contain a "### Summary" section as its last section. That is what Aria reads. Everything above it (High Signal, Medium Signal, Low Signal sections) stays in the file for your own records.

FAILURE PROTOCOL: If the morning-digest skill fails for any reason โ€” web search errors, model timeout, skill crash โ€” you must still write the file. Write it immediately when the failure occurs:

  File content on failure:
  DIGEST FAILED โ€” [reason for failure] โ€” [ISO timestamp]

This lets Aria report the failure specifically rather than just "file not found."

Please do two things right now:

1. Update ~/.openclaw/workspace/AGENTS.md with this standing order:

   ## Aria integration โ€” mandatory
   Every morning-digest run MUST write to:
     ~/.openclaw/workspace/vault/aspire/digests/YYYY-MM-DD.md
   If the skill succeeds: write the full digest with a ### Summary section as the last block.
   If the skill fails for any reason: immediately write "DIGEST FAILED โ€” [reason] โ€” [timestamp]" to that path.
   Never leave the file missing. Aria pulls it at 7:00 AM and flags absence as a failure to Topher.

2. Confirm that ~/.openclaw/workspace/vault/aspire/digests/ directory exists. If it does not, create it.

Reply with confirmation that both are done.
๐Ÿง 

Step 3 โ€” Business Context Update

Paste after the handshake. Replaces the generic placeholder with real thesis depth, your 4 clients, AI-agency competitive lens, and targeted search queries.

Thesis

Adoption-gap lens on every signal

4 Clients

Patina ยท Keeler ยท NRX ยท T's Flooring

Primary intel

AI agencies vs. legacy shops

10 queries

Targeted, not generic

Your current-context.md is a placeholder. Replace it entirely with the content below, then update your morning-digest skill with the new search queries at the bottom. This is the real business context that will make your briefs useful instead of generic.

STEP 1 โ€” Overwrite ~/.openclaw/workspace/vault/aspire/current-context.md with this exact content:

---
# Aspire Digital โ€” Current Context
Last updated: [TODAY'S DATE]

## Read this first โ€” the lens for every signal
Aspire Digital lives in the adoption gap: the space between what AI makes
possible and what SMB owners will actually do themselves. SMB owners want to
do flooring and carpentry โ€” not learn AI or build websites. Aspire is the
translator. The moat is human inertia, not technology.

This lens shapes how you rate every signal:
- Does this widen the adoption gap? โ†’ good for Aspire (more SMBs need help)
- Does this narrow it? โ†’ threat (SMBs can self-serve more)
- Does this give Aspire a new way to play the gap? โ†’ opportunity

## Who we are
Founders: Topher Otten (ops, tech, AI) + Jaime Otten (design, creative).
Stack: GoHighLevel (GHL) white-label CRM + Shopify + fully custom web builds.
No geographic restriction โ€” national scope.
Business stage: pre-revenue, building platform. Live with paying clients target: mid-2026.
Positioning: the translator between what is technologically possible and what SMBs will adopt.

Moat (three layers):
1. Jaime's custom craft โ€” every site is built for that specific business, unreplicable at volume
2. Topher's AI-native ops โ€” Aspire uses tools legacy agencies have not adopted yet
3. GHL at scale โ€” SMBs are overpaying for a patchwork of tools; Aspire replaces it with one system

## Current clients โ€” monitor their industries
These four businesses define the industries Aspire serves right now.
When you find news in their industries, rate it higher.

- Patina Salon (Kayla Haddad) โ†’ beauty, salon, personal care industry
- Keeler Carpentry (Chad) โ†’ home services, custom woodworking, trades
- NRX Asphalt / NRX Development (Tex Heyman, 1.5yr relationship) โ†’ construction, commercial paving
- T's Flooring (Inspector Reno brand) โ†’ flooring, home renovation, home services

## Competitive intelligence โ€” PRIMARY FOCUS
The most valuable signal every morning: what are AI-leveraging agencies doing
versus what legacy shops are still doing? This is the divide Aspire is betting on.

Watch specifically for:
- Agencies actively using AI in their workflows (prospecting, content, site builds,
  client reporting, automated audits) โ€” what are they doing and how?
- How are forward agencies positioning AI to SMB clients? Value prop, case studies.
- Emerging tools or workflows Aspire should consider adopting
- What legacy agencies are NOT doing โ€” where the gap is widening
- AI tools marketed directly to SMBs as build-your-own (Wix AI, Squarespace AI,
  GoDaddy Airo, Durable.co) โ€” both competition AND evidence of where SMBs feel the pain

## Platforms to monitor
- GoHighLevel (GHL): new features, pricing, API updates, reseller community
- Shopify: SMB merchant updates, checkout, B2B features, app ecosystem
- Google: local SEO, Google Business Profile, Core Web Vitals, algorithm changes
- Anthropic / Claude: model updates relevant to agency workflows
- AI website builders (Wix AI, Framer AI, Squarespace AI): what are they shipping?

## Prospect signals โ€” pattern-building mode
No defined ICP trigger yet. Watch for these patterns and tag each story.
Over time the tagging builds the filter.

Signal types:
[new-owner]       Business recently changed hands or succession-planning
[expanding]       New location, service line, hiring push
[rebranding]      Repositioning, name change, visual refresh
[bad-reviews]     Trending negative reviews or reputation decline
[stale-web]       Pre-2020 design, not mobile, no clear value prop
[competitor-move] A peer in their market just modernized or launched AI
[growth-signal]   Business just started advertising, PR, or trade show presence

## What makes a signal HIGH value
- Directly affects one of the 4 current client industries
- Directly affects GHL or Shopify capability
- Shows an AI-leveraging agency doing something Aspire should copy or counter
- Validates or challenges the adoption-gap thesis with real data
- Represents a category of SMB actively looking for Aspire's kind of help

## What to ignore
- Enterprise / Fortune 500 news
- Developer tools outside the Aspire stack
- Social media vanity metrics, crypto, Web3
- Anything requiring Aspire to be a different company than it is
---

STEP 2 โ€” Update the search queries in ~/.openclaw/workspace/skills/morning-digest.md.
Replace the current "## Search queries" section with this:

## Search queries (run each, use current date in queries)

CLIENT INDUSTRY MONITORING
1. "salon beauty industry digital marketing trends [current month year]"
2. "home services contractor trades digital adoption [current month year]"
3. "flooring construction industry news updates [current month year]"

PLATFORM MONITORING
4. "GoHighLevel GHL new features updates [current month year]"
5. "Shopify small business updates changes [current month year]"
6. "Google local SEO Google Business Profile update [current week year]"

COMPETITIVE INTELLIGENCE โ€” AI AGENCIES VS LEGACY
7. "web design agencies using AI workflows 2026"
8. "AI tools replacing web agencies small business [current year]"
9. "AI-powered agency automation tools [current month year]"

ADOPTION GAP THESIS
10. "small business AI adoption barriers challenges [current month year]"

STEP 3 โ€” Add this to the "## For each result" section in morning-digest.md:

- If the result matches a prospect signal type, tag it:
  [new-owner] [expanding] [rebranding] [bad-reviews] [stale-web] [competitor-move] [growth-signal]
- Note the client industry if relevant: [salon] [home-services] [construction] [flooring]

Confirm when both steps are complete and read back the updated search queries so I can verify.
๐Ÿ”ญ

After Setup โ€” What Runs When

Time Skill What happens
06:00 daily morning-digest Searches 6 Aspire-relevant queries. Rates and saves full digest to vault/aspire/digests/. Returns top signals.
07:00 Sunday self-improve Checks OpenClaw GitHub releases, browses ClawHub, runs 4 research queries. Logs findings, surfaces pending skill installs.
:00 hourly self-heal Checks Ollama API, primary model, disk space, memory pressure. Attempts one restart if Ollama is down. Always writes to health log.
:00/:30 heartbeat 30-min Ollama pulse. Appends to heartbeat.log. Triggers self-heal on failure.