An AI agent with a nervous system.

OpenClaw running on local infrastructure — persistent memory, relationship graph, mutual monitoring. On a Mac mini. No cloud bill.

9Forge services
30Graph nodes
24/7Always running
0External APIs
scroll
01 — What it is

Most AI has amnesia. This one doesn't.

Standard AI tools start fresh every conversation. No memory of what you worked on yesterday, who your collaborators are, what's in progress.

OpenClaw is an AI agent that lives on your machine and talks to you through Discord or Telegram. Forge is the local infrastructure underneath — databases, a vector store, and a relationship graph that knows context across time.

Every night it summarizes the day. Every session it warms up with graph context. It monitors its own health and alerts you when something breaks.

Standard setup
OC + Forge
Starts fresh every session
Memory compounds over time
Context lost when chat ends
Nightly summarizer auto-archives
No awareness of relationships
Graph maps people, projects, tools
Cloud-dependent, subscription costs
Self-hosted, no extra APIs
No health monitoring
Mutual watchdog — OC + n8n
02 — Forge infrastructure

Nine services. One Mac mini.

Forge is a local intelligence stack that auto-starts on boot. Every service runs on a fixed port and the whole thing is monitored by a heartbeat every 30 minutes. Click any service to learn more.

:3457
KV Store
Foundation persistence layer
:3458
Cache
Ephemeral fast lookups
:3459
Message Queue
Async task routing
:3460
Database
Document DB with schemas and indexes
:3461
Vector DB
Semantic search, auto-indexed
:3462
Graph Memory
Relationship traversal, HTTP API
:3464
Memory Validator
Write gatekeeper before every store
:3465
Dashboard
Monitors all services

KV STORE — :3457

The foundation everything else builds on. A simple key-value store that acts as the persistence backbone for the document database and anything needing fast, durable storage.

03 — Memory pipeline

Memory that compounds.

Every session is logged. Every night it's summarized and indexed. The graph tracks relationships with confidence scores. OC starts each session knowing what matters.

01
During session
OC logs everything
All activity written to ~/.openclaw/workspace/memory/YYYY-MM-DD.md in real time.
02
11 PM ET — nightly
Summarizer runs in isolated mode
Cron fires in its own session (so it can't be swallowed by an active conversation). Attribution-filtered: John's views vs external content are classified separately.
03
Before every write
Validator checks the summary
Memory Validator (port 3464) checks date timezone, duplicates, near-duplicate similarity, and format before anything lands.
04
After validation
Summary POSTed to Vector DB
Stored in the daily-logs collection. Now semantically searchable — OC can recall anything by meaning, not just keywords.
05
7 AM — every morning
Health check verifies last night's entry
Morning cron confirms the summary landed. If missing, it Telegrams you immediately.
06
Session start
Graph traversal warms up context
BFS traversal from your node through the relationship graph. Direct edges first — OC starts each session knowing what's currently relevant.
30graph nodes
23edges
14edge types
5confidence tiers
SOURCE CONFIDENCE WEIGHT
john-confirmed1.0
seed0.7
summarizer0.6
session-inferred0.4
oc-inferred0.3
04 — Monitoring

OC watches n8n. n8n watches OC.

A mutual watchdog means neither side has a single point of failure. The heartbeat fires every 30 minutes. If anything goes quiet, you hear about it on Telegram.

OpenClaw
Mac mini — always on
Heartbeat every 30 min
MONITORS
→ n8n health every 5 min
DEAD MAN'S SWITCH
← n8n alerts if OC goes silent
n8n
Hostinger VPS — external automation
CHECK SCHEDULE
every 30mHeartbeat checks all 9 Forge services (ports 3457–3465) and pushes status to n8n
every 5mn8n health check runs — 2 consecutive failures trigger a KV store alert, heartbeat picks it up
nightly 11pmSummarizer cron fires, validates its own write, logs to cron-history
daily 7amMorning check verifies last night's memory entry landed — Telegrams if missing
monday 10amWeekly graph review + cron-history digest sent to Telegram
05 — What it looks like

Real conversations.

OC lives in Discord and Telegram. These are examples of what context-aware sessions actually look like.

What were we working on last Tuesday?
OC via forge-recallTuesday you were debugging the nightly summarizer — it was running in main session mode and getting swallowed by active conversations. Fixed it by adding isolated mode. You also trimmed MEMORY.md from 20KB to 8.5KB that afternoon. Want me to pull the full log?
Yes, and check if we resolved the timezone bug that day too
OC — vector search: daily-logsTimezone fix landed Wednesday morning, not Tuesday. Tuesday's log shows the fix was identified but the TZ=America/New_York patch went in the following session. The bug: UTC "yesterday" at 11 PM ET was resolving to the wrong calendar day.
What does the graph know about my current projects?
OC via forge-graph — BFS from JohnDirect edges (confidence ≥ 0.7): you own forge, claw-job, and forge-vector-db. Forge depends_on the KV store and DB. OC evolved_from Entropy.

Session-inferred edges (0.4): the AI@Work presentation belongs_to radflavor.xyz, which you own via Cloudflare Pages. Graph review is Monday — want me to queue any edge updates?
OC heartbeat — 14:30 ETAll 9 services healthy. n8n reachable. No alerts in KV store. Cursor advanced. Daily log entry confirmed for today.
OC — 14:35 ET alertn8n health check failed twice in a row. VPS may be unreachable. Alert written to KV store. Check Telegram — dead man's switch should have fired if OC went quiet.
It's back now, I restarted it
OCConfirmed — n8n responding on port 5678. Logging the outage to cron-history. No memory writes missed during the window.
Should I use Postgres or SQLite for the new project?
OC — SOUL.md: take a stance, no hedgingSQLite. You're running everything locally, you don't have concurrent writers, and you've already got Forge's DB layer for structured storage. Postgres adds operational overhead you don't need right now. If you hit a real scaling problem later, migrate then.
What if I want to expose it externally later?
OCStill SQLite for now. "Later" is the key word — cross that when you have actual external traffic, not hypothetical traffic. The refactor is one afternoon, not a week.
06 — SOUL.md

OC has rules it lives by.

SOUL.md defines OC's behavioral constraints — earned over time, not set once. These govern how it responds, not just what it knows.

CORE RULE
Stop, Count, Then Execute.
Before acting on any multi-step task, OC pauses, enumerates the steps, and confirms before proceeding.
COMMUNICATION
Take a stance. No hedging.
Never "you could do X or Y." Give a recommendation. If uncertain, ask one clarifying question — then execute.
DISPLAY
ET for all user-facing output.
Internal comparisons in UTC are fine. Anything shown to the user uses America/New_York. Display layer and logic layer are separate.
MEMORY
Validate before every write.
Every memory write — graph node, edge, daily log, vector chunk — goes through the validator first. No exceptions.