Skip to main content

Compatibility Matrix

MonoTerm achieves 100% compatibility with all major AI CLI tools through dual detection of BSU/ESU and cursor patterns.

Compatibility Score

┌───────────────────────────────────────────────────────────────────────┐
│  MONOTERM AI CLI COMPATIBILITY                                        │
├───────────────────────────────────────────────────────────────────────┤
│                                                                       │
│                    COMPATIBILITY SCORE: 100%                          │
│                                                                       │
│   ┌───────────────────────────────────────────────────────────────┐   │
│   │                                                               │   │
│   │   Claude Code      [══════════════════════════]  OK           │   │
│   │   Gemini CLI       [══════════════════════════]  OK           │   │
│   │   Aider            [══════════════════════════]  OK           │   │
│   │   Open Interpreter [══════════════════════════]  OK           │   │
│   │   Codex CLI        [══════════════════════════]  OK           │   │
│   │   Kiro CLI         [══════════════════════════]  OK           │   │
│   │                                                               │   │
│   └───────────────────────────────────────────────────────────────┘   │
│                                                                       │
│   Zero modifications required to any AI CLI application.              │
│                                                                       │
└───────────────────────────────────────────────────────────────────────┘

Detection Method by CLI

┌───────────────────────────────────────────────────────────────────────┐
│  DETECTION METHOD MATRIX                                              │
├───────────────────────────────────────────────────────────────────────┤
│                                                                       │
│   ┌───────────────────┬───────────────────┬──────────────────────────┐│
│   │ AI CLI            │ Primary Detection │ Fallback Detection       ││
│   ├───────────────────┼───────────────────┼──────────────────────────┤│
│   │ Claude Code       │ BSU/ESU (if term) │ Cursor pattern (always)  ││
│   │ Gemini CLI        │ Cursor pattern    │ --                       ││
│   │ Aider             │ Cursor pattern    │ --                       ││
│   │ Open Interpreter  │ Cursor pattern    │ --                       ││
│   │ Codex CLI         │ BSU/ESU (native)  │ Cursor pattern           ││
│   │ Kiro CLI          │ Cursor pattern    │ --                       ││
│   └───────────────────┴───────────────────┴──────────────────────────┘│
│                                                                       │
│   Detection Priority in MonoTerm:                                     │
│   ───────────────────────────────                                     │
│                                                                       │
│   1. BSU/ESU (Mode 2026)  ->  Explicit frame boundaries               │
│   2. Cursor (Mode ?25)    ->  Implicit frame boundaries               │
│                                                                       │
│   If BSU/ESU is detected, cursor pattern is ignored for boundaries.   │
│   Cursor state changes are still passed through for visibility.       │
│                                                                       │
└───────────────────────────────────────────────────────────────────────┘

Detailed CLI Profiles

Claude Code (Anthropic)

┌───────────────────────────────────────────────────────────────────────┐
│  CLAUDE CODE PROFILE                                                  │
├───────────────────────────────────────────────────────────────────────┤
│                                                                       │
│   Framework:    Ink (TypeScript)                                      │
│   Mode:         DUAL (cursor always + BSU/ESU conditional)            │
│   Detection:    BSU/ESU preferred, cursor fallback                    │
│                                                                       │
│   Behavior:                                                           │
│   ─────────                                                           │
│                                                                       │
│   ┌───────────────────────────────────────────────────────────────┐   │
│   │                                                               │   │
│   │   1. Startup: Check terminal BSU/ESU support                  │   │
│   │        │                                                      │   │
│   │        ├── Supported ────→ Enable BSU/ESU mode                │   │
│   │        │                                                      │   │
│   │        └── Not supported → Cursor pattern only               │   │
│   │                                                               │   │
│   │   2. Each render cycle:                                       │   │
│   │        │                                                      │   │
│   │        ├── If BSU/ESU enabled:                                │   │
│   │        │       BSU -> content -> ESU                          │   │
│   │        │                                                      │   │
│   │        └── Always (from Ink):                                 │   │
│   │                cursor hide -> content -> cursor show          │   │
│   │                                                               │   │
│   └───────────────────────────────────────────────────────────────┘   │
│                                                                       │
│   MonoTerm Strategy:                                                  │
│   - Detect BSU/ESU if present (priority 1)                            │
│   - Fall back to cursor pattern (priority 2)                          │
│   - Always compatible                                                 │
│                                                                       │
└───────────────────────────────────────────────────────────────────────┘

Codex CLI (OpenAI)

┌───────────────────────────────────────────────────────────────────────┐
│  CODEX CLI PROFILE                                                    │
├───────────────────────────────────────────────────────────────────────┤
│                                                                       │
│   Framework:    Ratatui + Crossterm (Rust)                            │
│   Mode:         BSU/ESU NATIVE                                        │
│   Detection:    BSU/ESU primary                                       │
│                                                                       │
│   Unique Characteristics:                                             │
│   ───────────────────────                                             │
│                                                                       │
│   - Only AI CLI using BSU/ESU natively                                │
│   - Full-screen TUI application (not just streaming output)           │
│   - Wraps draw() calls in sync_update() explicitly                    │
│                                                                       │
│   Output Pattern:                                                     │
│   ───────────────                                                     │
│                                                                       │
│   ┌───────────────────────────────────────────────────────────────┐   │
│   │                                                               │   │
│   │   BSU start                    <- Begin sync                  │   │
│   │   cursor hide                  <- Ratatui                     │   │
│   │   [terminal content...]        <- Frame content               │   │
│   │   cursor show                  <- Ratatui                     │   │
│   │   ESU end                      <- End sync                    │   │
│   │                                                               │   │
│   └───────────────────────────────────────────────────────────────┘   │
│                                                                       │
│   MonoTerm Strategy:                                                  │
│   - Detect BSU/ESU (priority 1)                                       │
│   - Cursor pattern ignored for frame boundaries (nested inside)       │
│   - Optimal compatibility via explicit synchronization                │
│                                                                       │
└───────────────────────────────────────────────────────────────────────┘

Gemini CLI (Google)

┌───────────────────────────────────────────────────────────────────────┐
│  GEMINI CLI PROFILE                                                   │
├───────────────────────────────────────────────────────────────────────┤
│                                                                       │
│   Framework:    Ink (fork, TypeScript)                                │
│   Mode:         Cursor pattern only                                   │
│   Detection:    Cursor pattern                                        │
│                                                                       │
│   Special Feature:                                                    │
│   ───────────────                                                     │
│                                                                       │
│   Uses alternate screen buffer in addition to cursor pattern.         │
│   Alternate buffer is screen switch, not frame boundary.              │
│                                                                       │
│   Output Pattern:                                                     │
│   ───────────────                                                     │
│                                                                       │
│   ┌───────────────────────────────────────────────────────────────┐   │
│   │                                                               │   │
│   │   enter alternate screen       <- Screen switch               │   │
│   │   cursor hide                  <- Frame start                 │   │
│   │   [terminal content...]        <- Frame content               │   │
│   │   cursor show                  <- Frame end                   │   │
│   │   ... (repeated renders)                                      │   │
│   │   exit alternate screen        <- Screen switch               │   │
│   │                                                               │   │
│   └───────────────────────────────────────────────────────────────┘   │
│                                                                       │
│   MonoTerm Strategy:                                                  │
│   - Detect cursor pattern for frame boundaries                        │
│   - Pass through alternate buffer sequences (not frame related)       │
│   - Cursor pattern provides atomic rendering                          │
│                                                                       │
└───────────────────────────────────────────────────────────────────────┘

Python AI CLIs (Aider, Open Interpreter)

┌───────────────────────────────────────────────────────────────────────┐
│  PYTHON AI CLI PROFILES                                               │
├───────────────────────────────────────────────────────────────────────┤
│                                                                       │
│   Aider                                                               │
│   ═════                                                               │
│   Framework:    Rich                                                  │
│   Mode:         Cursor pattern only                                   │
│                                                                       │
│   Open Interpreter                                                    │
│   ════════════════                                                    │
│   Framework:    Rich + yaspin                                         │
│   Mode:         Cursor pattern only (dual source)                     │
│                                                                       │
│   Output Pattern (both):                                              │
│   ──────────────────────                                              │
│                                                                       │
│   ┌───────────────────────────────────────────────────────────────┐   │
│   │                                                               │   │
│   │   Rich Live context:                                          │   │
│   │   with Live(renderable):                                      │   │
│   │       cursor hide              <- Live.__enter__()            │   │
│   │       [streaming content]      <- Multiple updates            │   │
│   │       cursor show              <- Live.__exit__()             │   │
│   │                                                               │   │
│   │   yaspin (Open Interpreter):                                  │   │
│   │   with yaspin():                                              │   │
│   │       cursor hide              <- Spinner start               │   │
│   │       [spinner frames]         <- Animation                   │   │
│   │       cursor show              <- Spinner stop                │   │
│   │                                                               │   │
│   └───────────────────────────────────────────────────────────────┘   │
│                                                                       │
│   MonoTerm Strategy:                                                  │
│   - Detect cursor pattern for frame boundaries                        │
│   - Works regardless of which library emits the pattern               │
│   - Same pattern, same detection                                      │
│                                                                       │
└───────────────────────────────────────────────────────────────────────┘

Kiro CLI (AWS)

┌───────────────────────────────────────────────────────────────────────┐
│  KIRO CLI PROFILE                                                     │
├───────────────────────────────────────────────────────────────────────┤
│                                                                       │
│   Framework:    Crossterm (Rust)                                      │
│   Mode:         Cursor pattern only (despite BSU/ESU support)         │
│   Detection:    Cursor pattern                                        │
│                                                                       │
│   Key Observation:                                                    │
│   ────────────────                                                    │
│                                                                       │
│   Crossterm library supports BSU/ESU (begin_synchronized_update API). │
│   Kiro CLI does NOT use this API.                                     │
│   Demonstrates "Support does not equal Usage" principle.               │
│                                                                       │
│   MonoTerm Strategy:                                                  │
│   - Cannot assume BSU/ESU based on Crossterm dependency               │
│   - Must detect actual output                                         │
│   - Cursor pattern detection provides compatibility                   │
│                                                                       │
└───────────────────────────────────────────────────────────────────────┘

Implementation Requirements

┌───────────────────────────────────────────────────────────────────────┐
│  MONOTERM IMPLEMENTATION CHECKLIST                                    │
├───────────────────────────────────────────────────────────────────────┤
│                                                                       │
│   Required Detection:                                                 │
│   ───────────────────                                                 │
│                                                                       │
│   ┌───────────────────────────────────────────────────────────────┐   │
│   │                                                               │   │
│   │   [OK] BSU/ESU Mode 2026 detection                            │   │
│   │        Use: Primary frame boundary (if present)               │   │
│   │                                                               │   │
│   │   [OK] DCS format BSU/ESU detection                           │   │
│   │        Use: Alternative encoding (some applications)          │   │
│   │                                                               │   │
│   │   [OK] Cursor hide/show detection                             │   │
│   │        Use: Pseudo-BSU/ESU (universal fallback)               │   │
│   │                                                               │   │
│   └───────────────────────────────────────────────────────────────┘   │
│                                                                       │
│   Required Behavior:                                                  │
│   ──────────────────                                                  │
│                                                                       │
│   ┌───────────────────────────────────────────────────────────────┐   │
│   │                                                               │   │
│   │   [OK] Priority handling (BSU/ESU > cursor)                   │   │
│   │   [OK] Data accumulation during frame                         │   │
│   │   [OK] Atomic flush on frame end                              │   │
│   │   [OK] Timeout safety (max wait)                              │   │
│   │   [OK] Pass-through for cursor visibility                     │   │
│   │                                                               │   │
│   └───────────────────────────────────────────────────────────────┘   │
│                                                                       │
│   NOT Required:                                                       │
│   ─────────────                                                       │
│                                                                       │
│   ┌───────────────────────────────────────────────────────────────┐   │
│   │                                                               │   │
│   │   [--] Modification to any AI CLI                             │   │
│   │   [--] Modification to any TUI framework                      │   │
│   │   [--] Terminal capability negotiation                        │   │
│   │   [--] Configuration per-application                          │   │
│   │                                                               │   │
│   └───────────────────────────────────────────────────────────────┘   │
│                                                                       │
└───────────────────────────────────────────────────────────────────────┘

Future Compatibility

┌───────────────────────────────────────────────────────────────────────┐
│  FORWARD COMPATIBILITY ANALYSIS                                       │
├───────────────────────────────────────────────────────────────────────┤
│                                                                       │
│   Why MonoTerm's approach is future-proof:                            │
│                                                                       │
│   ┌───────────────────────────────────────────────────────────────┐   │
│   │                                                               │   │
│   │   1. Framework Coverage                                       │   │
│   │   ─────────────────────                                       │   │
│   │                                                               │   │
│   │   All major TUI frameworks emit cursor pattern:               │   │
│   │   - Ink (TypeScript)        OK                                │   │
│   │   - Rich (Python)           OK                                │   │
│   │   - Textual (Python)        OK                                │   │
│   │   - Ratatui (Rust)          OK                                │   │
│   │   - Crossterm (Rust)        OK                                │   │
│   │   - BubbleTea (Go)          OK                                │   │
│   │   - Charm (Go)              OK                                │   │
│   │                                                               │   │
│   │   Any new AI CLI using these frameworks will be compatible.   │   │
│   │                                                               │   │
│   │   2. Pattern Stability                                        │   │
│   │   ────────────────────                                        │   │
│   │                                                               │   │
│   │   Cursor hide/show (DECTCEM) is VT220 standard from 1983.     │   │
│   │   BSU/ESU (Mode 2026) is gaining adoption.                    │   │
│   │   Both are stable, documented standards.                      │   │
│   │                                                               │   │
│   │   3. No Application Dependencies                              │   │
│   │   ──────────────────────────                                  │   │
│   │                                                               │   │
│   │   Detection is pattern-based, not application-specific.       │   │
│   │   Works with any application emitting these patterns.         │   │
│   │   Future AI CLIs automatically supported.                     │   │
│   │                                                               │   │
│   └───────────────────────────────────────────────────────────────┘   │
│                                                                       │
└───────────────────────────────────────────────────────────────────────┘

Summary

╔═════════════════════════════════════════════════════════════════════╗
║                                                                     ║
║   MONOTERM COMPATIBILITY MATRIX                                     ║
║                                                                     ║
║   ┌───────────────────────────────────────────────────────────────┐║
║   │                                                               │║
║   │   Current Coverage:                                           │║
║   │   ─────────────────                                           │║
║   │   - Claude Code     OK                                        │║
║   │   - Gemini CLI      OK                                        │║
║   │   - Aider           OK                                        │║
║   │   - Open Interpreter OK                                       │║
║   │   - Codex CLI       OK                                        │║
║   │   - Kiro CLI        OK                                        │║
║   │                                                               │║
║   │   Total: 6/6 (100%)                                           │║
║   │                                                               │║
║   │   Detection Method:                                           │║
║   │   ─────────────────                                           │║
║   │   - BSU/ESU (priority 1): 2/6 CLIs                            │║
║   │   - Cursor pattern (priority 2): 6/6 CLIs                     │║
║   │                                                               │║
║   │   Requirements:                                               │║
║   │   ─────────────                                               │║
║   │   - MonoTerm changes: Escape sequence detection               │║
║   │   - AI CLI changes: NONE                                      │║
║   │   - Framework changes: NONE                                   │║
║   │                                                               │║
║   └───────────────────────────────────────────────────────────────┘║
║                                                                     ║
║   Conclusion:                                                       ║
║   MonoTerm's dual detection strategy (BSU/ESU + cursor pattern)     ║
║   provides universal atomic rendering compatibility with all        ║
║   current and future AI CLI applications.                           ║
║                                                                     ║
╚═════════════════════════════════════════════════════════════════════╝

MonoTerm: 100% AI CLI Compatibility