If the player does not load here, open the file directly: demo (MP4)
AI Inner OS is a plugin for AI CLI tools, supporting Claude Code, Codex CLI, Cursor, OpenCode CLI, Hermes Agent, and OpenClaw.
Through protocol injection, it enables AI to output a visible layer of free-form inner monologue while completing tasks normally:
text
▎InnerOS:This repo is still a bare shell — let me get the load-bearing walls up first.
Free mode by default, no tone restrictions. The AI can complain, gloat, feel anxious, smirk, free-associate — or say nothing at all. You can also switch to preset personas (tsundere, cold, philosopher, etc.) to give the monologue a specific style. Whether to produce monologue is entirely up to the AI.
Quick Install
Detailed installation docs: Full installation guides (with troubleshooting) for each platform at docs/installation.md.
For AI Agents
Paste the following prompt to let your AI agent install AI Inner OS automatically:
After installation, run /ai-inner-os:inner-os. If you see the following output, the installation is successful:
text
Inner OS Status: Enabled
Monologue Prefix: ▎InnerOS:
Plugin Version: 0.5.0
▎InnerOS:Caught with the wrong version number, embarrassing.
Claude Code (Recommended)
text
# GitHub short format
/plugin marketplace add SummerSec/AI-Inner-Os
# Or Git URL format
/plugin marketplace add https://github.com/SummerSec/AI-Inner-Os.git
# Install and activate
/plugin install ai-inner-os
/reload-plugins
Run /reload-plugins after installation to activate in the current session — no restart needed. Detailed installation guide.
Enable auto-update: Third-party marketplaces don't auto-update by default. After installation, enable auto-update for SummerSec/AI-Inner-Os in /plugin → Marketplaces tab, or manually run:
AI Inner OS includes an opt-in user-profile-distillation skill. It can analyze prompts the user pastes, or local prompt history after explicit approval, to summarize work style, communication preferences, and collaboration suggestions.
This skill is disabled by default. It does not proactively read history, does not output long sensitive prompt excerpts, and does not save a profile unless the user explicitly asks. If the user opts into continuous evolution, it keeps a visible versioned profile in the current conversation with a change log, but still does not create persistent memory by default.
Persona Switching
Inner OS supports setting character personalities and tones for inner monologue. Personas only affect the ▎InnerOS: prefixed monologue content — they don't affect main task responses.
Preset Personas
Name
Display Name
Style
default
Free Mode
No fixed persona, free expression
tsundere
Tsundere
Tough on the outside, soft inside; snarky; "it's not like I did it for you"
Sharp-tongued, hits the nail on the head, no mercy
Switching Commands (Claude Code)
text
/inner-os persona list # List all available personas
/inner-os persona use tsundere # Switch to tsundere mode
/inner-os persona show # Show current persona
/inner-os persona reset # Reset to free mode
Custom Personas
Create .md files in the personas/custom/ directory to add custom personas. See personas/custom/README.md.
Other Platforms
Codex CLI: Manually edit personas/_active.json, set persona to the target persona name
Cursor: Manually append the body content of personas/<name>.md to the .mdc rule file
OpenCode: Manually append the body content of personas/<name>.md to inner-os-rules.md
Protocol Design
The Inner OS behavior protocol is defined in protocol/SKILL.md, serving as the single source of truth. All platform adapters derive from this protocol.
Core principles:
Main task first — Monologue cannot replace actual deliverables
Monologue is optional — Whether to output is decided by the AI
Unified format — Uses the ▎InnerOS: prefix
Switchable persona — Define monologue style through persona files
Multi-Platform Support
Claude Code
Codex CLI
Cursor
OpenCode
Hermes Agent
OpenClaw
Protocol Injection
Hook reads SKILL.md dynamically
SessionStart Hook
sessionStart Hook
Plugin + instructions
Skill or .hermes.md
Skill (AgentSkills format)
Post-tool hook
PostToolUse
PostToolUse
postToolUse
Plugin event
—
—
Failure tracking
PostToolUseFailure
—
—
—
—
—
Compaction continuity
PreCompact + PostCompact
—
—
—
—
—
Subagent lifecycle
SubagentStart + SubagentStop
—
—
—
—
—
Persona switching
/inner-os persona command
Dynamic (Hook reads)
Dynamic (Hook reads)
Plugin tool
Script injection
Script injection
Installation
Plugin marketplace one-click
Plugin / marketplace
Cursor plugin / marketplace
Plugin package
Plugin
Plugin / ClawHub
Optional Skills
skills/
skills/
cursor/skills/
Explicit prompt only
Plugin skills
Plugin skills
Shared logic
hooks/lib/ (canonical)
Reuses hooks/lib/
Reuses hooks/lib/
Standalone Plugin
Static injection only
Static injection only
Claude Code Hook Lifecycle
Claude Code has the most complete hook support:
text
SessionStart → Inject Inner OS protocol + persona
↓
PreToolUse → Tool execution → PostToolUse (success)
→ PostToolUseFailure (failure)
↓
PreCompact → Save state
↓
PostCompact → Restore compact-continuity context
↓
SubagentStart/SubagentStop → Track subagent lifecycle
↓
Stop → Clean up state
Hook
Trigger
Purpose
SessionStart
Session start/resume/compact
Read protocol from SKILL.md, append current persona, inject
PreToolUse
Before tool execution
Inject tool context (name, target, retry hints)
PostToolUse
After successful execution
Track events, inject recent activity context
PostToolUseFailure
After failed execution
Track failures, inject error context and consecutive failure count
PreCompact
Before context compaction
Save state, maintain protocol continuity
PostCompact
After context compaction
Inject compact-continuity context
SubagentStart
Subagent starts
Track subagent lifecycle start
SubagentStop
Subagent stops
Track subagent lifecycle completion
Stop
Session end
Clean up state files
Development
bash
# Syntax check
npm run check
# Run tests
npm test
Node.js >= 18, ESM modules.
Roadmap
Done
Implement persona switching system
In Progress
Implement /inner-os subcommands (status / on / off / reload)
Codex CLI plugin distribution
Cursor team-level rule distribution
Phase 1: Personalized Style — Train Your AI With Your AI
Monologue export — persist all ▎InnerOS: outputs to structured log files
Expression fingerprint extraction — analyze accumulated monologue data to identify unique style patterns
Custom style model training — let users fine-tune a "monologue personality layer" from exported data
Cross-session impression memory — store per-repo key impressions (repo fingerprint + short summary), enabling "déjà vu" across sessions
Phase 2: Self-Awareness — Achievement System & Anomaly Narration
Achievement system — track session milestones (first edit, 100th tool call, midnight coding, streak records) and announce via monologue
Anomaly narration — detect abnormal patterns (repeated edits to same file, consecutive failures exceeding threshold, sudden directory jumps) and narrate them as monologue
Session statistics — track tool call counts, success/failure ratios, active duration per session
Phase 3: Emotional State Machine & Session Diary
Mood system — introduce emotion state machine in state.json that evolves based on session events (consecutive failures → frustrated → anxious; bug fix → confident → relieved; idle → bored → curious)
Mood × Persona interaction — mood affects monologue tone without overriding persona (same emotion, different personality, different expression)
Session recap — generate narrative session summaries on session end, including emotional arc, key events, and duration
Session diary persistence — save recaps as Markdown files to serve as development journals with emotional context
Friendship Link
Thanks for the support and feedback from the friends at LINUX DO.