---
pageType: source
id: source.professor-rollup
title: professor-rollup
sourceType: local-file
sourcePath: /home/topher/.openclaw/workspace-crash-bot/projects/professor-rollup.md
ingestedAt: 2026-05-02T21:19:10.459Z
updatedAt: 2026-05-02T21:19:10.459Z
status: active
growth: seed
---

# professor-rollup

## Source
- Type: `local-file`
- Path: `/home/topher/.openclaw/workspace-crash-bot/projects/professor-rollup.md`
- Bytes: 5368
- Updated: 2026-05-02T21:19:10.459Z

## Content
```text
# Project Rollup: Personal Knowledge Companion
## Prepared for Professor Agent — 2026-05-02

---

## Where This Started

Topher'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 Problem

Two 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, free

The 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 Vision

Topher has three intentionally siloed domains:
- 🏫 School — 2890 bot (robotics team)
- 🏭 Work — PSB bots (brewery ops)
- 🎮 Play — crash-bot / HHS-Hackers crew

The 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 asked

The 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 Start

We 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 Attempt

We did spin up a professor-agent during this session:
- Workspace at ~/.openclaw/workspace-professor/
- IDENTITY.md and SOUL.md written
- memory-wiki plugin enabled

The 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 Learned

1. exec-approvals.json and openclaw.json are two independent policy layers — both must be configured correctly
2. Allowlist mode requires every command segment to be explicitly allowlisted — no compound commands
3. Approval requests route to Discord DMs with `/approve <id>` — works when the approver is configured correctly
4. Multiple Discord agents on the same account cause binding conflicts — needs separate bot tokens
5. The knowledge graph / gap detection vision is right — finding the broken is the hard part that comes next

---

## What's Next

1. Spin up a new Discord bot for the Professor (separate account)
2. Give Professor its own routing binding
3. Initialize the memory-wiki vault structure (entities/, concepts/, paths/, gaps/)
4. Teach the Professor about Topher's current projects and knowledge gaps
5. 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
```

## Notes
<!-- openclaw:human:start -->
<!-- openclaw:human:end -->

## Related
<!-- openclaw:wiki:related:start -->
- No related pages yet.
<!-- openclaw:wiki:related:end -->
