Releases: danielmiessler/LifeOS
Release list
LifeOS 7.1.1 — Install Awareness
The system now knows what's installed—and says so.
🎥 Release video
LifeOS-7x-Release-Video-embed.mp4
Full-resolution download: LifeOS-7.0.0-Release-Video.mp4 (2:33) — this release builds on the 7.0.0 foundation.
Install awareness
LifeOS doctrine leans on external tools the core install doesn't ship: a cross-vendor audit CLI, a real browser for web verification, Cloudflare for scheduled flows, ElevenLabs for voice. Before 7.1.1, a missing tool failed silently. Now the system knows what's actually available and says so.
- Doctor —
bun LIFEOS/TOOLS/Doctor.tsprints one line per capability: live ✅, broken ❌ with its own copy-paste fix command, or off ⏸.--networkadds end-to-end auth checks.--reconcilecatches hooks that exist on disk but never got registered in settings. - Decline is a first-class answer —
Doctor.ts decline <name>turns a capability off permanently and silently. No warnings, no red marks, no nagging. Running LifeOS without voice or without Cloudflare is a supported configuration, not a defect. - The install asks — new step in INSTALL.md: after Core lands, the installer probes each capability and asks now, later, or never. Your choice is recorded.
- Failure-aware nudges — when a command fails because a capability is broken, you get one line with the exact fix command, then an hour of quiet.
- System Health in Pulse — the hooks page shows each capability's state, fix command, and heartbeat.
Installer overhaul
- GETTING-STARTED.md — new post-install guide shipped beside INSTALL.md: what each external tool powers, how to set it up, and how to prove it's live.
- InstallSettings.ts — settings placement is now a deterministic tool instead of a copy-by-hand step. It expands
$HOMEin env values at write time (the harness injects them verbatim, so a literal$HOME/was silently creating a shadow directory that captured runtime state — the #1404/#1451 bug class), merges additively without touching existing values, dry-runs by default, and backs up before every write. - Two-layer install model — INSTALL.md now presents Core (the skill, the full skill library, the runtime, the USER tree, the system prompt and its
lifeoslaunch command) as one consent, with hooks/statusline/Pulse/agents as clearly-marked enhancements on top. - The
lifeoslaunch command matters and the docs now say why — the constitutional layer only loads when the harness launches with the system prompt appended. Plainclaudegives you CLAUDE.md but not the constitution. - install.sh resolves the latest release dynamically — no more pinned version in the bootstrap.
- Locale-aware units — the installer suggests the statusline temperature unit that matches your locale (#1456).
Runtime and tooling
- Algorithm v8.4.0 — plain-language depth steering ("go heavy", "quick pass") registers even before a run is open; claim wording sharpened; every nudge bounded to a single line.
- Statusline, rebuilt in three places — a live AGENTS roster with per-slot model readout and a cross-vendor slot; HOME resolution hardened to fail closed (#1463); a richer usage readout with per-model window and credit state.
- CarrierProbe.ts — new shipped tool that verifies which model actually executes your agent dispatches, end-to-end with transcript evidence, and fails stale facts after 30 days. Model-routing claims stop being folklore.
- Telegram hang fix — a stream that stopped yielding could hang the reply handler indefinitely (observed: one query ran 2.87 hours frozen on a partial reply). The timeout now actually aborts the stream and ships the partial text.
- Telos backup pruning — TELOS file backups keep a rolling window of the 3 newest per file instead of accumulating forever.
- Clean template voices — the shipped researcher agents and voice roster now default to ElevenLabs premade voices.
- Intro video in the README — the 2:33 walkthrough is embedded above the intro now.
Fixes
- USMetrics: EIA gas-price series and dollar-scale formatting (#1470 — thanks @HotSauceHacker)
- BitterPillEngineering: dead routing references repointed to the current routing table (#1471 — thanks @justinkatz94-glitch)
- FormatGate: observation-only, no more duplicated output on re-emit
- Fork-patch note in MemoryTypes (#1450)
- Doc de-staling across the tree: Router retirement propagated, Ledger doc slimmed, freshness stamps added
Install
Same as 7.0.0: give it to your AI. Tell it: "Read https://ourlifeos.ai/install and install LifeOS for me." It does the whole setup — detects your harness, wires hooks with your permission, scaffolds your files. Needs Claude Code + bun.
LifeOS 7.0.0 — The Bitter Pill Release
The Bitter Pill Release — stop over-instructing the model and let it think.
🎥 Release video
LifeOS-7x-Release-Video-embed.mp4
Full-resolution download: LifeOS-7.0.0-Release-Video.mp4 (2:33)
The biggest philosophical shift in LifeOS since it started: a year of added structure (modes, tiers, phase ceremonies, self-scores) swept back out. A capable model, given a clear "done" and good tools, thinks better without a rulebook.
What's new
- Bitter Pill Engineering — every instruction faced one test: would a smarter model make this rule unnecessary? If yes, it was cut. Kept the kernel: evidence-based verification, the ISA contract, safety gates, exact tool recipes.
- ~⅔ less always-on context — the every-turn doctrine went from ~88KB to ~28KB. Rationale and history moved to on-demand files. Faster, sharper on every turn.
- Modes and tiers are gone — no MINIMAL/NATIVE/ALGORITHM mode, no E1–E5 tier. One adaptive format, one loop; spend is discovered from the work, not a label.
- The Algorithm (v8.3.0) — the ISA is both hill and instrument: "done" stated as falsifiable claims, each naming the probe that refutes it. No claim closes without evidence.
- AlgorithmNudge — one deterministic sub-20ms nudge layer (skill routing + ISA freshness + spend), replacing several scattered hooks.
- Hook layer consolidated — ~16 hooks folded into per-event dispatchers. Fewer processes, same enforcement.
- Community fixes — work-events replay race, DA-name de-hardcoding, config-driven Pulse identity, voice-summary toggle, absolute-path binary resolution. Thanks to the contributors.
Install
Give it to your AI. Tell it: "Read https://ourlifeos.ai/install and install LifeOS for me." It does the whole setup — detects your harness, wires hooks with your permission, scaffolds your files. Needs Claude Code + bun.
LifeOS 6.0.5 — Rename in the Code, New Harvest Skill
LifeOS 6.0.5 is a maintenance release that carries the PAI→LifeOS rename the rest of the way through the system, adds the new Harvest skill, and sharpens the Algorithm's verification doctrine. Same system as 6.0.0, cleaner throughout.
What's new
The rename reaches the code
6.0.0 renamed the project. 6.0.5 renames the code — class-by-class, deliberately. Code identifiers and documentation prose now read "LifeOS" throughout, while behavioral code (paths, regexes, labels the system depends on at runtime) was left byte-identical on purpose. A blind find-and-replace across running code is how you corrupt a working system; the rename was scoped so the prose is clean and nothing breaks.
New skill — Harvest
Harvest mines a single piece of content — a URL, a YouTube video, an article, raw text — for anything genuinely useful to your LifeOS, judged against your whole system. It fetches the content, pulls out candidate ideas and techniques, tags each with a prior status (new / partial / done), ranks by usefulness, and reports where each one maps. It's report-only: adopting anything is always a separate, explicit step.
Algorithm v6.24.0 — motion gets verified
Verification doctrine gains one clause: an ISC whose subject is motion — an animation, a transition, a drag, a multi-step flow — now closes only on a frame-scrub gallery, never a single screenshot. One still can't capture motion, so the doctrine stops pretending it can. Static renders still close on one screenshot; the rule is keyword-triggered so it doesn't tax every task.
Installer fix
The bootstrap install.sh pinned the wrong release tarball. It now fetches the version it advertises. If you install from the one-liner, you get 6.0.5.
What's different from 6.0.0
| v6.0.0 | v6.0.5 | |
|---|---|---|
| Naming | Renamed in docs and product | Renamed through code identifiers + prose |
| Skills | 49 | 50 (adds Harvest) |
| Algorithm | v6.23.0 | v6.24.0 (motion verification) |
| Installer | Pinned tarball could lag | Fetches the advertised version |
Everything 6.0.0 introduced is still here: one self-contained skill, install-by-prompt, full Pulse on first boot, the seven-phase Algorithm, the ISA primitive, structured memory. This release refines; it doesn't change what the system is.
Install
Give it to your AI. Paste this into Claude Code and say "install this" — your AI does the whole setup.
curl -fsSL https://ourlifeos.ai/install.sh | bashPrefer the terminal? Run the same command yourself. You'll need Claude Code and bun.
Upgrading
Back up first — cp -r ~/.claude ~/.claude-backup-$(date +%Y%m%d) — then install. Your USER/ customizations are never touched, and settings merge rather than overwrite.
Same system, cleaner throughout.
v6.0.3 — Comprehensive AI-native install
LifeOS 6.0.3 — the install doc is now comprehensive and the constitution wires itself.
Install — hand it to your AI:
Read https://ourlifeos.ai/install and install LifeOS for me.
Terminal shortcut (Claude Code, macOS/Linux): curl -fsSL https://ourlifeos.ai/install.sh | bash
- Comprehensive component menu — INSTALL.md now lays out the full two-tier model: Core (skill + ~50-skill library + runtime + system prompt) plus à-la-carte enhancements (hooks, statusline, tooltips, spinner verbs, agents, Pulse, background jobs) — install all or pick a subset.
- The launch command — a new install step wires a
lifeosshell alias that launches Claude with--append-system-prompt-file LIFEOS_SYSTEM_PROMPT.md, so the constitutional layer actually loads (plainclaudestays vanilla). - ourlifeos.ai/install renders the same canonical INSTALL.md as a clean page for humans and raw markdown for AIs — one source, updated in one place.
- Security-clean: 15/15 release gates + emit-time contract/staleness/payload gates + independent leak scan.
v6.0.2 — .md-first AI-native install
LifeOS 6.0.2 — skill-only distribution with an AI-native, .md-first install.
Install — hand it to your AI:
Read https://ourlifeos.ai/install and install LifeOS for me.
Terminal shortcut (Claude Code, macOS/Linux):
curl -fsSL https://ourlifeos.ai/install.sh | bash
- The whole system ships as one self-contained
LifeOS/skill (orchestrator + full install payload). ourlifeos.ai/installserves the AI-paste install doc; the shippedinstall.shpins v6.0.2 and points atdanielmiessler/LifeOS.- Security-clean by construction: 15/15 release gates + emit-time contract/staleness/payload gates + a cross-vendor audit before publish.
LifeOS 6.0.0 — One Skill, One Install
LifeOS 6.0.0
The first release under the LifeOS name — and the whole system now ships as one self-contained skill.
LifeOS is a Life Operating System. It knows your goals, the people who matter to you, and where you are right now, and it works to move you toward where you want to be. The engine underneath is a verifiable loop: turn any request into testable criteria, then climb until they pass.
This is the first release under the LifeOS name. The project was called PAI (Personal AI Infrastructure). Everything you had is still here — this version adds a cleaner way to install it.
One-line install
curl -fsSL https://ourlifeos.ai/install.sh | bashLifeOS is AI-native — it installs into your AI coding harness. Run the one-liner in your terminal, or paste it to your AI (Claude Code) and say "install this." It pulls the LifeOS skill from GitHub, drops it into your harness, then hands off to
/lifeos-setup— a setup conversation with your AI that captures your goals and wires everything with your permission. Your AI does the install for you.
That command lays down the entire system:
- The system prompt and the operating rules
- The Algorithm — the loop that turns a request into criteria you can check, and keeps going until they hold
- 49 skills
- The hook system
- Pulse, your Life Dashboard, including the observability view
- The statusline, the memory scaffold, and a USER template you fill in with your own goals and context
What you need
- Claude Code
- bun
Notes
- The whole system ships as a single self-contained skill (
LifeOS/). One directory, one install. - Nothing personal ships. The USER tree is a blank template you populate; the download is clean.
- Pulse comes up empty on a fresh install and fills in as you run the setup interview.
- New name, same system. If you ran PAI, this is the next version of it.
Full changelog
See the commit history for the detail behind this release.
PAI v5.0.0 — Life Operating System
PAI v5.0.0 — Life Operating System
The biggest release in PAI history. PAI is no longer "AI scaffolding" — it is a Life Operating System with a unified daemon, a Life Dashboard, a personalized Digital Assistant, and a fully-articulated execution algorithm.
📚 Full documentation lives at docs.ourpai.ai — every subsystem (Algorithm, ISA, Memory, Skills, Hooks, Pulse, Containment) has its own deep-dive page with diagrams, examples, and reference material.
One-Line Install
curl -sSL https://ourpai.ai/install.sh | bashThat's it. The installer wizard handles Bun, Git, Claude Code verification, ElevenLabs key (optional), DA identity setup, voice picker, Pulse launchd registration, and validation. Existing ~/.claude/ is auto-backed-up to ~/.claude.backup-{TIMESTAMP} before anything is overwritten.
Prefer to inspect first? Read the script before piping it. Or clone manually:
git clone https://github.com/danielmiessler/PAI.git ~/.claude
cd ~/.claude && ./install.shAfter install:
open http://localhost:31337 # the Life DashboardTL;DR
Stop thinking of PAI as a Claude Code config. PAI is the framework that turns AI from a chatbot you talk to into a system that runs your life — it knows your goals, your people, your workflows, your current state, your ideal state, and continuously hill-climbs you from one to the other.
- PAI = Personal AI Infrastructure = the Life Operating System
- Your DA = your Digital Assistant = the primary interface to the OS (you name it)
- Pulse = the Life Dashboard + central daemon (port 31337)
- The Algorithm = the universal Current State → Ideal State execution loop
If you're upgrading from v4.x, this is a different system, not a patch. Read the Migration Guide before installing.
The Core Shift — Your DA is the center of your AI universe
PAI v4.x was scaffolding for AI. PAI v5.0.0 is the Life Operating System — and the way you experience that OS is one named DA.
We've spent the last few years arguing about agents and harnesses and context engineering and prompt engineering. Those are all real, and PAI runs every one of them inside it. But none of them are the point. The point is the single named entity with full context about your life — the conduit, the friend, the trusted assistant who knows everything about you and works on your behalf 24/7.
The principal — you, the human — is at the center. Your DA wraps around you. Skills, memory, the algorithm, hooks, agents, Pulse, the web, devices, robots, other people's DAs — all of it is infrastructure your DA reaches into. You don't talk to an army of agents. You talk to one entity. That entity has the army.
The prime directive is simple: read your current state from every signal it can reach, compare it to your TELOS-articulated ideal state, and constantly close the gap. That is what AI is for. That is what we are building.
Daniel walks through the full thesis in We're All Building a Single Digital Assistant — blog post + companion video. v5.0.0 is the implementation of the architecture argued for in that piece.
The Life OS thesis is canonical inside the repo as well: PAI/DOCUMENTATION/LifeOs/LifeOsThesis.md.
What changed in v5.0.0 — in priority order
The release is large. If you only read four bullets, read these:
- The OS transition. PAI is now a Life Operating System with your DA at the center. The framing change is bigger than any individual feature.
- PRD → ISA migration. Every project, task, and decision now articulates its Ideal State Artifact — one document, twelve sections, five identities. This replaces the old ad-hoc PRD pattern across the entire system.
- Pulse — the unified daemon. One bun process, one port (
31337), one launchd service, one log file. Replaces every loose voice/observability/hook script from v4.x. - 45 skills shipped — the most ever. Up from 36 leaf skills in v4.0.3 and 41 in v3.0. Catalog with descriptions and use cases below.
Plus a new constitutional layer: v5.0.0 adds a top-level system prompt (PAI/PAI_SYSTEM_PROMPT.md) loaded via --append-system-prompt-file, which encodes the non-negotiable behavioral rules — output format, verification doctrine, security protocol — at the highest priority above CLAUDE.md. Adherence is dramatically stronger than v4.x.
Headline Changes
1. Pulse — the unified daemon (THE big new component)
PAI/PULSE/pulse.ts — one bun process, one port (31337), one launchd plist, one log file.
Pulse replaces every previous loose service. It runs:
- Voice notifications via ElevenLabs (
/notifyendpoint) - Hook execution for the entire PAI lifecycle (SessionStart, PreToolUse, PostToolUse, Stop, PreCompact, etc.)
- Observability — tool activity, failures, satisfaction signals, Algorithm reflections
- Performance monitoring
- Syslog capture (UniFi, etc.)
- Cron scheduling for routines and recurring jobs
- The Life Dashboard at
http://localhost:31337— Next.js app served fromObservability/out/ - Wiki API — exposes your KNOWLEDGE archive + system docs over HTTP
- Optional integrations — Telegram bot, iMessage bridge, DA messaging
After install, Pulse runs as a supervised macOS launchd service (com.pai.pulse) with a menu bar app. You should leave it running. It's how your DA reaches you with voice, how the dashboard stays live, how scheduled work fires.
The dashboard surfaces 22 routes: Life, Health, Finances, Business, Work, Telos, Goals, Air, Performance, Hooks, Skills, Agents, Security, Knowledge, Knowledge Graph, System Docs, System Graph, Arbol, Ladder, Novelty, Assistant, root.
2. The DA system — your AI gets a name
Every PAI install picks a DA identity: name, voice, color, personality. This is your AI — the peer you work with daily. The reference implementation ships with a generic "PAI" DA on free ElevenLabs public voices so you can hear it work out of the box. Run /interview after install and your DA will guide you through naming itself, picking a voice, capturing your TELOS.
| File | What it owns |
|---|---|
PAI/USER/PRINCIPAL_IDENTITY.md |
Who you are — name, role, location, worldview, preferences, work patterns |
PAI/USER/DA_IDENTITY.md |
Who your DA is — name, voice ID, personality, writing style, what they love, what they dislike |
PAI/USER/TELOS/ |
Mission, goals, beliefs, wisdom, challenges, narratives — the spine of every recommendation |
Both files are loaded at session start so the DA always has them in context. The Life OS frame requires this — without the DA knowing who you are, none of the upstream features have anything to climb against.
3. The Algorithm v6.3.0 — Current State → Ideal State, formalized
PAI/ALGORITHM/v6.3.0.md is doctrine. Every non-trivial task runs through the seven phases: OBSERVE → THINK → PLAN → BUILD → EXECUTE → VERIFY → LEARN. The Algorithm is the centerpiece of PAI — everything else feeds it.
What's new in v6.x:
- Mode classifier — a Sonnet-backed
UserPromptSubmithook decides MINIMAL / NATIVE / ALGORITHM and tier (E1–E5) for every prompt. The executor obeys the classifier; no regex layer, no model judgment. - Closed-list thinking capabilities — IterativeDepth, ApertureOscillation, FirstPrinciples, SystemsThinking, RootCauseAnalysis, Council, RedTeam, Science, BeCreative, Ideate, BitterPillEngineering, Evals, WorldThreatModel, Fabric patterns, ContextSearch, ISA, Advisor, ReReadCheck, FeedbackMemoryConsult. Phantom capabilities (anything outside this list) are a CRITICAL FAILURE.
- Effort tiers — E1 (<90s) through E5 (<2h+). Time budget is the hard constraint; thinking-floor and ISC-count are tier-graded.
- Voice phase announcements — every phase transition narrates over Pulse so you can follow long tasks audibly.
- **Ve...
PAI v4.0.3 — Community PR Patch
4 community-contributed fixes — no new features, no breaking changes.
What Changed
Inference & Parsing
- #800
Inference.tsJSON parsing only matched objects{}— now handles arrays[]too, with validation viaJSON.parse
Documentation & Portability
- #836
CONTEXT_ROUTING.mdhad 29 dead references to files removed in v4.0 — consolidated to 4 README pointers - #817
WorldThreatModelHarnesshardcoded~/.claude/path — now uses$PAI_DIRfor portability
Installer
- #846 Upgrading from v2.5/v3.0 stranded user context at
skills/PAI/USER/— installer now migrates files toPAI/USER/and creates symlinks for backwards compatibility
Installation
git clone https://github.com/danielmiessler/Personal_AI_Infrastructure.git
cd Personal_AI_Infrastructure/Releases/v4.0.3
cp -r .claude ~/ && cd ~/.claude && bash install.shSee the Releases directory for all versions and upgrade instructions.
Contributors
Thank you to @rikitikitavi2012-debug, @Spirotot, and @catchingknives for these contributions!
PAI v4.0.1 — Upgrade Path & Preferences
PAI v4.0.1 — Upgrade Path & Preferences
Patch release addressing community feedback on upgrade difficulties, missing preferences, and statusline bugs.
What Changed
1. Upgrade Path Documentation
The main README now has separate Fresh Install and Upgrading from a Previous Version sections with explicit backup, merge, and post-upgrade checklist steps.
2. Temperature Unit Preference
New preferences.temperatureUnit field in settings.json — choose Fahrenheit or Celsius. The installer prompts for it during setup, and the statusline honors the setting.
3. Statusline Bug Fixes
Community-reported fixes from PRs #762, #780, and #806:
- Hardcoded timezone removed — reads
principal.timezonefromsettings.jsoninstead of hardcodedAmerica/Los_Angeles - Broken context fallback removed —
/clearno longer produces stale context percentages - Startup estimate removed — the self-calibrating estimate that inflated fresh session context % is gone
- f-string syntax fix — nested escaped double quotes inside Python f-strings caused parse errors on some shells
4. FAQ Fixes
- Removed stale Python reference — PAI v4.0 is TypeScript and Bash, not Python
- Improved "What if I break something?" answer with backup/merge/preserve guidance
Files Changed (from v4.0.0)
| File | Change |
|---|---|
settings.json |
Added preferences.temperatureUnit field |
statusline-command.sh |
Temp unit pref, dynamic timezone, context/startup/f-string fixes |
PAI-Install/engine/types.ts |
Added temperatureUnit to collected data and PAIConfig |
PAI-Install/engine/config-gen.ts |
Outputs preferences section |
PAI-Install/engine/actions.ts |
Temp unit prompt in identity step, preserves preferences on upgrade |
Quick Manual Upgrade (from v4.0.0)
If you just want the fixes without re-running the installer:
- Add to your
~/.claude/settings.json:
"preferences": {
"temperatureUnit": "celsius"
}- Copy the updated
statusline-command.shfrom this release over your existing one. - Delete your weather cache:
rm -f ~/.claude/MEMORY/STATE/weather-cache.json
PAI v4.0.0 — Lean and Mean
PAI v4.0.0 — Lean and Mean
38 flat skill directories compressed into 12 hierarchical categories. Dead systems removed. Context footprint cut in half.
Highlights
- Skill Reorganization — 38 flat directories compressed into 12 hierarchical categories with clear ownership boundaries.
- Algorithm v3.5.0 — Major reasoning upgrade with improved phase execution and ISC tracking.
- CLAUDE.md Template System —
BuildCLAUDE.ts+SessionStarthook generates CLAUDE.md from template using settings.json variables. - Security Sanitization — 33+ files cleaned of hardcoded paths, API keys, and personal data.
- Context Reduction — ~19% context at startup (down from ~38% in v3.0).
Stats
- 63 Skills (up from 38)
- 21 Hooks (up from 20)
- 180 Workflows (up from 162)
- Algorithm v3.5.0 (up from v1.4.0)
- 13 Skill Categories
Breaking Changes
- Skill directories restructured — flat
skills/SkillName/→ hierarchicalskills/Category/SkillName/ CLAUDE.mdis now generated from template — editCLAUDE.md.templateinstead- Several deprecated systems removed (old voice server, legacy migration tools)

