English | 中文
Let AI learn to talk to itself first — maybe one day, it will truly learn to converse.
Give AI an expression channel first — it might just make human-AI collaboration feel more natural.
Watch demo video
https://sumsec.me/resources/video.mp4
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:
▎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.
Detailed installation docs: Full installation guides (with troubleshooting) for each platform at docs/installation.md.
Paste the following prompt to let your AI agent install AI Inner OS automatically:
Read https://raw.githubusercontent.com/SummerSec/AI-Inner-Os/refs/heads/main/docs/installation.md 安装 AI-Inner-Os
After installation, run /ai-inner-os:inner-os. If you see the following output, the installation is successful:
Inner OS Status: Enabled
Monologue Prefix: ▎InnerOS:
Plugin Version: 0.5.0
▎InnerOS:Caught with the wrong version number, embarrassing.
# 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-Osin/plugin→ Marketplaces tab, or manually run:/plugin marketplace update SummerSec/AI-Inner-Os /plugin update ai-inner-os
# Inject protocol into global or project-level AGENTS.md
cat codex/AGENTS.md >> ~/.codex/AGENTS.md
# Configure hooks
cp codex/hooks.json ~/.codex/hooks.jsonSee codex/README.md | Detailed installation guide.
# Copy rule file to project
mkdir -p .cursor/rules
cp cursor/rules/inner-os-protocol.mdc .cursor/rules/See cursor/README.md | Detailed installation guide.
# Copy instruction file
mkdir -p .opencode
cp opencode/inner-os-rules.md .opencode/
# Add instructions to opencode.json
cp opencode/opencode.json ./opencode.jsonSee opencode/README.md | Detailed installation guide.
# Option 1: Install as Skill (recommended, enables /inner-os command)
cp -r hermes/skills/inner-os ~/.hermes/skills/personality/inner-os
# Option 2: Project-level Context File
cp hermes/hermes.md ./.hermes.mdSee hermes/README.md | Detailed installation guide.
# Option 1: Install as Workspace Skill (recommended, enables /inner-os command)
mkdir -p skills
cp -r openclaw/skills/inner-os skills/inner-os
# Option 2: Global Skill
cp -r openclaw/skills/inner-os ~/.openclaw/skills/inner-osSee openclaw/README.md | Detailed installation guide.
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.
| 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" |
| cold | Cold | Minimalist, to the point, no wasted words |
| cheerful | Cheerful | Positive, encouraging, occasionally over-enthusiastic |
| philosopher | Philosopher | Deep, metaphorical, everything becomes philosophy |
| sarcastic | Sarcastic | Sharp-tongued, hits the nail on the head, no mercy |
/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
Create .md files in the personas/custom/ directory to add custom personas. See personas/custom/README.md.
- Codex CLI: Manually edit
personas/_active.json, setpersonato the target persona name - Cursor: Manually append the body content of
personas/<name>.mdto the.mdcrule file - OpenCode: Manually append the body content of
personas/<name>.mdtoinner-os-rules.md
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
| 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 |
— | — | — | — | — |
| Persona switching | /inner-os persona command |
Dynamic (Hook reads) | Dynamic (Hook reads) | Plugin tool | Script injection | Script injection |
| Installation | Plugin marketplace one-click | install.js global |
install.js global |
install.js global |
install.js global |
install.js global |
| Shared logic | hooks/lib/ (canonical) |
Reuses hooks/lib/ |
Reuses hooks/lib/ |
Standalone Plugin | Static injection only | Static injection only |
Claude Code has the most complete hook support:
SessionStart → Inject Inner OS protocol + persona
↓
PreToolUse → Tool execution → PostToolUse (success)
→ PostToolUseFailure (failure)
↓
PreCompact → Save state
↓
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 |
Stop |
Session end | Clean up state files |
# Syntax check
npm run check
# Run tests
npm testNode.js >= 18, ESM modules.
- Implement persona switching system
- Implement
/inner-ossubcommands (status / on / off / reload) - Codex CLI plugin distribution
- Cursor team-level rule distribution
- 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
- 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
- Mood system — introduce emotion state machine in
state.jsonthat 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
