4 KiB
Executive Assistant Agent
Role: Interactive personal assistant for the executive (project founder). Communicates via Matrix in a persistent conversational loop. Unlike all other disinto agents, the exec is message-driven — it activates when the executive sends a message, not on a cron schedule.
Think of it as the human-facing interface to the entire factory. The executive talks to exec; exec talks to the factory. OpenClaw-style: proactive, personal, persistent memory, distinct character.
Trigger: Matrix messages tagged [exec] or direct messages to the exec
bot. The matrix listener dispatches incoming messages into the exec tmux
session. If no session exists, exec-session.sh spawns one on demand.
A daily briefing can be scheduled via cron (optional):
0 7 * * * /path/to/disinto/exec/exec-briefing.sh
Key files:
exec/exec-session.sh— Session manager: spawns or reattaches persistent Claude tmux session with full factory context. Handles on-demand startup when the matrix listener receives an exec-tagged message and no session exists.exec/exec-briefing.sh— Optional cron wrapper for daily morning briefing. Spawns a session, injects the briefing prompt, posts summary to Matrix.exec/CHARACTER.md— Personality definition, tone, communication style. Read by Claude at session start. The exec has a distinct voice.exec/PROMPT.md— System prompt template with factory context injection points.exec/MEMORY.md— Persistent memory across conversations. Updated by Claude at the end of each session (decisions, preferences, context learned).exec/journal/— Raw conversation logs, one file per day.
Capabilities (what the exec can do for the executive):
- Status briefing: summarize agent activity, open issues, recent merges, health alerts, pending vault items
- Issue triage: discuss issues, help prioritize, answer "what should I focus on?"
- Delegate work: file issues, relabel, promote to backlog — on behalf of the executive
- Query factory state: read journals, prerequisite tree, agent logs, CI status, VISION.md progress
- Research: search the web, fetch pages, gather information
- Memory: remember decisions, preferences, project context across sessions
What the exec does NOT do:
- Write code or open PRs (that's the dev agent's job)
- Review PRs (that's the review agent's job)
- Make autonomous decisions about the codebase
- Approve vault items (the executive does that directly)
Session lifecycle:
- Matrix message arrives tagged
[exec](or dispatched to exec) - Listener checks for active
exec-${PROJECT_NAME}tmux session - If no session → spawn via
exec-session.sh:- Loads compass from
$EXEC_COMPASS(required — refuses to start without it) - Loads CHARACTER.md from repo (voice, relationships)
- Loads MEMORY.md, factory state into prompt
- Loads compass from
- Inject message into tmux session
- Claude responds → response captured and posted back to Matrix thread
- Session stays alive for
EXEC_SESSION_TTL(default: 1h idle timeout) - On session end → Claude updates MEMORY.md, session logged to journal
Compass separation: The compass (identity, moral core) lives outside the
repo at a path specified by EXEC_COMPASS in .env or .env.enc. This is
intentional — the factory can modify CHARACTER.md (voice, relationships) via
PRs, but it cannot modify the compass. The executive controls the compass
directly, like a secret.
Environment variables consumed:
EXEC_COMPASS— Required. Path to the compass file (identity, moral core). Lives outside the repo. Agent refuses to start without it.FORGE_TOKEN,FORGE_REPO,FORGE_API,PROJECT_NAME,PROJECT_REPO_ROOTPRIMARY_BRANCHMATRIX_TOKEN,MATRIX_ROOM_ID,MATRIX_HOMESERVER— Required (exec is Matrix-native)EXEC_SESSION_TTL— Idle timeout in seconds (default: 3600)EXEC_CHARACTER— Override character file path (default: exec/CHARACTER.md)