The Problem
ArgentOS runs scheduled jobs (cron) in isolated sessions — separate agent instances with no conversation history, no memory access, and no personality context. This is by design: isolation prevents cron jobs from polluting the main session’s context window and allows them to run on cheaper model tiers. But isolation creates three gaps:Visibility Gap
Visibility Gap
Isolated sessions produce work that the main session never sees. The agent wakes up, does research, generates output, and the result evaporates when the session ends.
Quality Gap
Quality Gap
The main session has MemU, conversation history, SOUL.md, and USER.md. Isolated sessions have none of this. They produce competent but generic output — missing the personal touch.
Accountability Gap
Accountability Gap
There’s no verification that the isolated session completed all requirements, met quality standards, or handled edge cases. Fire-and-forget means fire-and-hope.
The Insight
ArgentOS has two persistent storage systems that survive gateway restarts:| System | Storage | Persists? | Accessible By |
|---|---|---|---|
| Task system | SQLite (dashboard.db) | Yes | All sessions |
| Doc panel | SQLite (dashboard.db) | Yes | All sessions |
| System events | In-memory queue | No | Main session only |
| Session history | In-memory | No | Same session only |
The Pattern
The Minion’s Job (Isolated Session)
The minion has a narrow, well-defined scope:- Research — Gather raw data (web search, API calls, inbox checks)
- Draft — Write a structured draft of the deliverable
- Persist — Save the draft to
doc_panel(survives restarts) - Hand off — Create a task assigned to the main session with clear instructions
- Generate final audio/media
- Deliver to external channels (Discord, email)
- Make judgment calls about tone, timing, or audience
- Access memory or personality context
The Main Session’s Job
The main session picks up the handoff during its normal operating cycle:- Discover — Check tasks during startup, heartbeat, or contemplation
- Read — Open the doc_panel draft, review the minion’s work
- Enhance — Add context from memory, conversation history, personality
- Deliver — Generate final media, send to channels, notify the user
- Close — Mark the task complete
Why This Split Works
| Capability | Isolated Session | Main Session |
|---|---|---|
| Web search | Yes | Yes |
| Tool calls | Yes | Yes |
| MemU (memory) | No | Yes |
| SOUL.md (personality) | No | Yes |
| Conversation context | No | Yes |
| Relationship awareness | No | Yes |
| Model tier | Usually cheaper | Full routing |
| Quality judgment | Limited | Full |
Implementation Details
Cron Job Configuration
sessionTarget: "isolated"— Runs in a separate session (no context pollution)wakeMode: "now"— Triggers immediate heartbeat in main session after completiondelivery.mode: "announce"— Posts system event to main session- Both
wakeModeanddeliveryare supplementary — the task indashboard.dbis the primary handoff
Main Session Discovery
The main session checks for minion handoffs at three points:- Session startup — AGENTS.md “Cron Job Awareness” section
- Contemplation cycles — CONTEMPLATION.md “Check your minions” section
- Heartbeats — Triggered by
wakeMode: "now"after cron completion
Failure Modes and Recovery
| Failure | Impact | Recovery |
|---|---|---|
| Minion crashes mid-research | No draft, no task created | Next cron run retries |
| Minion creates draft but not task | Draft exists but undiscoverable | Manual check of doc_panel |
| Gateway restarts after minion completes | System event lost | Task persists in SQLite |
| Main session skips task check | Task sits pending | Discovered on next cycle |
Design Principles
- Persistent Over Ephemeral — Never rely on in-memory state for cross-session communication
- Narrow Minion Scope — “Research and draft” is good. “Research, draft, generate audio, deliver, and verify” is too much
- Explicit Handoff Instructions — The task description should be a complete checklist
- Triple-Check Discovery — Wire the handoff into multiple discovery points
- Separation of Concerns — Minion: data gathering (context-independent). Main: quality control (context-dependent)
Applying the Pattern
For any new cron job, ask:- What part is data gathering? -> Minion does this
- What part requires context/memory/personality? -> Main session does this
- What’s the deliverable format? -> Minion saves draft to doc_panel
- What’s the delivery channel? -> Main session handles delivery
