# Project Rollup: Personal Knowledge Companion## Prepared for Professor Agent — 2026-05-02---## Where This StartedTopher's OpenClaw system went through a rough patch. A botched update took down the gateway for about 4 days. The 2890-Claw bot on the old Pi pulled most of the weight during the outage, and a full system restore from overnight backup got things running again. The gateway ended up bound to 0.0.0.0 which caused routing chaos during migration.Once things were back, we started cleaning up.---## The Exec Approval ProblemTwo agents are in play:- **crash-bot** — Topher's DM agent. Has full exec, no restrictions. This is the control center.- **crash-bot-public** — Server channel agent. Originally had zero exec. We needed to give it *some* capabilities (file reads, wiki writes, etc.) without opening a full shell to the whole server.We designed a two-layer approval system:**Layer 1 — openclaw.json (agent tool policy):**- crash-bot-public: exec in allow list, but with `security: "allowlist", ask: "on-miss"`- crash-bot (DM): `security: "full", ask: "off"`**Layer 2 — ~/.openclaw/exec-approvals.json (host policy):**- crash-bot-public: `security: "allowlist"` with an initially empty allowlist- crash-bot: `security: "full", ask: "off"`- Allowlisted commands: ls, cat, head, tail, pwd, echo, grep, jq, find, sort, uniq, wc, date, hostname, uptime, df, freeThe limitation we hit: in allowlist mode, every top-level command segment must be explicitly allowlisted. So `cd ... && jq ...` gets denied because `cd` isn't in the list. Single allowlisted commands work fine.---## The Personal Knowledge Companion VisionTopher has three intentionally siloed domains:- 🏫 School — 2890 bot (robotics team)- 🏭 Work — PSB bots (brewery ops)- 🎮 Play — crash-bot / HHS-Hackers crewThe Personal Knowledge Companion is a knowledge layer that maps what Topher knows, what's being learned, and where the gaps are — then proactively surfaces those gaps.The key insight: current agents are mostly command-and-reply. They don't do research, self-direct, or maintain persistent context. They feel like fancy autocomplete. The Professor changes that.The Professor Agent (the teacher, not the librarian):- Watches what you're working on- Assesses where you are on any given topic- Finds resources matched to your scale (home lab, not enterprise)- Organizes learning paths proactively- Delivers without being askedThe visual layer is a knowledge graph — relationships and connections, not just stored documents. Missing edges in the graph *are* the gaps.---## Claw Empire — The False StartWe looked at Claw Empire (GreenSheep01201/claw-empire) as a possible visual layer. It's a pixel-art office simulator where agents are employees in a virtual company. Git worktrees as agent meetings, deliverables as chat threads.Topher had Thinking spin it up to see what it actually was. It wasn't what we wanted — it was more of a coding shop orchestration tool, over-engineered for a personal life context.But: the *idea* of a playful visual layer that maps domains, agents, and knowledge flow — that's still interesting. Not Claw Empire specifically, but something that captures the same energy. A personal life dashboard that shows where knowledge is missing, what projects are active, and what the natural next steps are.Finding the broken will come with time.---## Professor Agent — First AttemptWe did spin up a professor-agent during this session:- Workspace at ~/.openclaw/workspace-professor/- IDENTITY.md and SOUL.md written- memory-wiki plugin enabledThe problem: we tried to route professor-agent DMs on the same Discord account as crash-bot (`accountId: crash`). The routing bindings overlapped — professor-agent was intercepting crash-bot's DMs before crash-bot could get them. We had to remove the binding to get crash-bot working again.The fix: we'll need a separate Discord bot account for the Professor. Two bots on the same account will always have routing overlap.---## What We Learned1. exec-approvals.json and openclaw.json are two independent policy layers — both must be configured correctly2. Allowlist mode requires every command segment to be explicitly allowlisted — no compound commands3. Approval requests route to Discord DMs with `/approve <id>` — works when the approver is configured correctly4. Multiple Discord agents on the same account cause binding conflicts — needs separate bot tokens5. The knowledge graph / gap detection vision is right — finding the broken is the hard part that comes next---## What's Next1. Spin up a new Discord bot for the Professor (separate account)2. Give Professor its own routing binding3. Initialize the memory-wiki vault structure (entities/, concepts/, paths/, gaps/)4. Teach the Professor about Topher's current projects and knowledge gaps5. Start building the gap detection logic — what topics are stale, what's missing, what's the natural next step---## Key Files- `memory/personal-knowledge-companion.md` — full concept- `projects/exec-approval-setup.md` — implementation guide- `projects/life-view-dashboard.md` — project index- `agents/professor-agent/agent/IDENTITY.md` — Professor's identity- `workspace-professor/SOUL.md` — Professor's soul