LifeOS Response Format Modes Explained: MINIMAL, NATIVE, and ALGORITHM
LifeOS uses three response-format modes—MINIMAL, NATIVE, and ALGORITHM—to control verbosity and structure, ranging from ultra-concise answers to full seven-phase algorithmic plans.
The LifeOS personal operating system formats every AI-generated response according to one of three distinct response-format modes that dictate how much scaffolding, procedural detail, and structural overhead the output contains. These modes are hardcoded into the system prompt templates and enforced by post-processing utilities in the LifeOS codebase.
What Are the Three LifeOS Response Format Modes?
LifeOS defines its response behavior through templates stored in [LIFEOS_SYSTEM_PROMPT.md](https://github.com/danielmiessler/LifeOS/blob/main/LifeOS/install/LIFEOS/LIFEOS_SYSTEM_PROMPT.md) and validated by the regex in [strip-mode-scaffolding.ts](https://github.com/danielmiessler/LifeOS/blob/main/LifeOS/install/LIFEOS/PULSE/lib/strip-mode-scaffolding.ts). Each mode serves a specific interaction pattern.
MINIMAL Mode
MINIMAL produces the most constrained output. The system prompt template for this mode strips away virtually all structure—no headers, no phase labels, no TASK/CONTENT separation. The model returns only the essential answer.
LifeOS triggers MINIMAL for:
- Ultra-short prompts (three characters or fewer)
- Positive acknowledgments ("yes", "done", "ok")
- Any interaction where the classifier determines elaboration adds friction
The MINIMAL template in LIFEOS_SYSTEM_PROMPT.md enforces this by providing a bare frame:
# MINIMAL
{{answer}}
After generation, strip-mode-scaffolding.ts removes any stray "MINIMAL" label lines using the pattern /^[ \t]*(MINIMAL|NATIVE|ALGORITHM)[ \t]*$/gm.
NATIVE Mode
NATIVE is the default workhorse format. It provides balanced structure without excessive verbosity: a brief header, a clearly marked TASK section, and a CONTENT block containing the substantive answer.
The NATIVE template appears in LIFEOS_SYSTEM_PROMPT.md as:
# NATIVE
TASK: {{task}}
CONTENT:
{{answer}}
This mode activates for ordinary conversational queries that don't qualify for MINIMAL brevity or ALGORITHM depth. It maintains LifeOS's "concise-by-default" principle while ensuring context remains parseable by downstream components.
ALGORITHM Mode
ALGORITHM implements the full LifeOS methodology through a seven-phase loop: OBSERVE → THINK → PLAN → BUILD → EXECUTE → VERIFY → LEARN. Each phase receives explicit PHASE headings, detailed TASK descriptions, and optional EVIDENCE or VERIFICATION sections.
The ALGORITHM template in LIFEOS_SYSTEM_PROMPT.md contains:
# ALGORITHM
## PHASE: OBSERVE
TASK: {{observe_task}}
EVIDENCE: {{evidence}}
## PHASE: THINK
...
[continues through all seven phases]
LifeOS selects ALGORITHM when:
- The prompt contains "hard-ALGORITHM" triggers ("master plan", "audit the doctrine", "full analysis")
- The classifier predicts multi-step workflow requirements
- Explicit mode override is requested
How LifeOS Applies Response Format Modes
Mode Selection Pipeline
Historically, the TheRouter.hook.ts classifier analyzed incoming prompts and emitted a MODE: token. Though retired on 2026-07-11, this established the mode-selection contract that persists in the current architecture:
- Prompt classification — Input is analyzed for length, intent signals, and trigger phrases
- Template injection — The corresponding section from
LIFEOS_SYSTEM_PROMPT.mdis prepended to the model context - Generation — The model produces output within the template constraints
- Scaffolding cleanup —
strip-mode-scaffolding.tssanitizes any mode labels that leaked into the visible output
Post-Processing with strip-mode-scaffolding.ts
The utility at [LifeOS/install/LIFEOS/PULSE/lib/strip-mode-scaffolding.ts](https://github.com/danielmiessler/LifeOS/blob/main/LifeOS/install/LIFEOS/PULSE/lib/strip-mode-scaffolding.ts) ensures clean presentation:
// From strip-mode-scaffolding.ts
const MODE_LABEL_REGEX = /^[ \t]*(MINIMAL|NATIVE|ALGORITHM)[ \t]*$/gm;
export function stripModeLabels(rawOutput: string): string {
return rawOutput.replace(MODE_LABEL_REGEX, '').trim();
}
This regex catches mode labels that appear as standalone lines, removing artifacts like:
MINIMAL
The answer is 42.
Down into:
The answer is 42.
Code Examples: Working with LifeOS Response Modes
Detecting Mode from Generated Output
import { stripModeLabels } from "./PULSE/lib/strip-mode-scaffolding.ts";
function processLifeOSOutput(rawOutput: string): { mode: string | null; content: string } {
// Extract mode label if present
const modeMatch = rawOutput.match(/^[ \t]*(MINIMAL|NATIVE|ALGORITHM)[ \t]*$/m);
const mode = modeMatch ? modeMatch[1] : null;
// Clean the output
const content = stripModeLabels(rawOutput);
return { mode, content };
}
Mode-Aware Rendering in UI Components
// From PULSE/modules/tab-freshness.ts pattern
interface LifeOSResponse {
mode: 'MINIMAL' | 'NATIVE' | 'ALGORITHM';
task?: string;
content: string;
phases?: AlgorithmPhase[]; // Present only in ALGORITHM mode
}
function renderResponse(response: LifeOSResponse): string {
switch (response.mode) {
case 'MINIMAL':
return `<span class="minimal">${response.content}</span>`;
case 'NATIVE':
return `
<div class="native">
<h4>${response.task}</h4>
<p>${response.content}</p>
</div>
`;
case 'ALGORITHM':
return renderPhaseAccordion(response.phases!);
}
}
Where Response Format Modes Are Defined and Enforced
| File | Role in Mode System |
|---|---|
[LIFEOS_SYSTEM_PROMPT.md](https://github.com/danielmiessler/LifeOS/blob/main/LIFEOS/install/LIFEOS/LIFEOS_SYSTEM_PROMPT.md) |
Contains the three template definitions (MINIMAL, NATIVE, ALGORITHM) injected into model context |
[strip-mode-scaffolding.ts](https://github.com/danielmiessler/LifeOS/blob/main/LifeOS/install/LIFEOS/PULSE/lib/strip-mode-scaffolding.ts) |
Post-processes output with regex `/^[ \t]*(MINIMAL |
[RouterSystem.md](https://github.com/danielmiessler/LifeOS/blob/main/LifeOS/install/LIFEOS/DOCUMENTATION/Router/RouterSystem.md) |
Historical documentation of mode selection logic and MODE: token emission |
TheRouter.hook.ts |
Retired classifier that originally determined mode from prompt analysis |
PULSE/modules/tab-freshness.ts |
UI layer that consumes mode metadata for response rendering |
Summary
- MINIMAL delivers atomic answers with zero structural overhead, triggered by short prompts or acknowledgments
- NATIVE provides the standard TASK/CONTENT structure for typical interactions, balancing clarity with concision
- ALGORITHM unfolds the full seven-phase methodology for complex, multi-step problem solving
- All three modes are template-driven from
LIFEOS_SYSTEM_PROMPT.mdand sanitized bystrip-mode-scaffolding.ts - The mode system originated with
TheRouterclassification (now retired) but persists as a core output contract
Frequently Asked Questions
How does LifeOS decide which response format mode to use?
LifeOS applies heuristic rules and prompt analysis to select modes. MINIMAL triggers on very short inputs or simple acknowledgments. ALGORITHM activates on explicit trigger phrases like "master plan" or "audit." Everything else defaults to NATIVE. This logic was historically handled by TheRouter.hook.ts before its retirement in July 2026.
Can users override the automatic mode selection?
The source code does not expose a direct user-facing override mechanism. However, including explicit ALGORITHM trigger phrases in your prompt effectively forces that mode. For MINIMAL behavior, keep inputs under four characters or use acknowledgment language.
What happens if the model emits a mode label in its response?
The stripModeLabels() function in strip-mode-scaffolding.ts removes these artifacts using the regex /^[ \t]*(MINIMAL|NATIVE|ALGORITHM)[ \t]*$/gm. This ensures users never see raw mode tokens in final output, maintaining clean presentation regardless of model compliance with the template structure.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →