https://github.com/rldyourmnd/rldyourterm
Crash-intolerant AI terminal runtime. Optimized for Claude Code, Codex, Gemini CLI.
https://github.com/rldyourmnd/rldyourterm
ai-cli claude-code rust terminal terminal-emulator wgpu
Last synced: about 2 months ago
JSON representation
Crash-intolerant AI terminal runtime. Optimized for Claude Code, Codex, Gemini CLI.
- Host: GitHub
- URL: https://github.com/rldyourmnd/rldyourterm
- Owner: rldyourmnd
- License: gpl-3.0
- Created: 2026-02-24T12:13:49.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-03-13T05:55:10.000Z (3 months ago)
- Last Synced: 2026-03-13T06:08:59.762Z (3 months ago)
- Topics: ai-cli, claude-code, rust, terminal, terminal-emulator, wgpu
- Language: Rust
- Size: 3.23 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# rldyourterm
[](https://github.com/rldyourmnd/rldyourterm/actions/workflows/ci.yml)
[](https://codecov.io/gh/rldyourmnd/rldyourterm)
[](https://github.com/rldyourmnd/rldyourterm/security/overview)
[](https://github.com/rldyourmnd/rldyourterm/actions/workflows/codeql.yml)
[](https://securityscorecards.dev/viewer/?uri=github.com/rldyourmnd/rldyourterm)
[](LICENSE)
[](https://www.rust-lang.org/)
[](https://crates.io/crates/rldyourterm-app)
Crash-intolerant AI terminal runtime with v1.0 priorities locked as:
1. stability,
2. AI CLI compatibility (`Claude Code`, `Codex`, `Gemini CLI`),
3. speed.
## MVP runtime status
This repository now includes a Rust workspace with an MVP bootstrap path:
- `rldyourterm-app`: CLI bootstrap + shell resolution + diagnostics events.
- `rldyourterm-ui`: single-window runtime scaffold with command-driven control hooks.
- `scripts/mvp/*`: executable compatibility harness for Claude/Codex/Gemini scenarios.
Single-window baseline is explicit and mandatory in v1.0 (`window_count=1`).
## Quick checks
```bash
cargo check --locked -p rldyourterm-ui
cargo check --locked -p rldyourterm-app
```
## Benchmarking
`terminal_benchmark/` now provides two benchmark suites:
- `canonical-headless` for deterministic CI-safe coverage across `core`, `services/session`, `ui`, `features/settings`, `features/shell-integration`, `features/font`, `features/render-gpu` policy helpers, and `features/render-cpu`
- `live-display` for real `winit` window plus `wgpu`/`softbuffer` presentation timing on a live display session
The canonical headless JSON report still marks `app`, `foundation`, `foundation-platform`, and `features/diagnostics` as correctness-only layers. The live-display suite is intentionally local/manual and does not run as a required PR CI gate.
Quick run:
```bash
cargo run --locked -p rldyourterm-terminal-benchmark -- --scenario all --scale standard
```
Structured JSON output:
```bash
cargo run --locked -p rldyourterm-terminal-benchmark -- \
--suite canonical-headless \
--scenario all \
--scale stress \
--format json \
--output /tmp/rldyourterm-terminal-benchmark.json
```
Headless CI-parity smoke run:
```bash
bash scripts/ci/run_terminal_benchmark_smoke.sh
```
Full benchmark suite:
```bash
bash scripts/ci/run_terminal_benchmark_full.sh
```
Live-display local smoke run:
```bash
bash scripts/ci/run_terminal_display_benchmark_smoke.sh
```
Live-display local full run:
```bash
bash scripts/ci/run_terminal_display_benchmark_full.sh
```
Controlled live-display calibration run:
```bash
bash scripts/ci/run_terminal_display_benchmark_controlled.sh
```
Controlled live-display calibration run with baseline refresh:
```bash
bash scripts/ci/run_terminal_display_benchmark_calibration.sh \
target/terminal-benchmark/live-display-controlled-report.json \
terminal_benchmark/baselines/live-display.controlled.json \
target/terminal-benchmark/live-display-controlled-calibration.json
```
Use `TERMINAL_DISPLAY_BENCHMARK_COMPARISON_MODE=enforced` only when you intentionally want the calibrated baseline to become a hard gate.
There is also a manual self-hosted GitHub workflow for the same controlled calibration flow:
- `.github/workflows/display-benchmark.yml`
- runner labels required: `self-hosted`, `display-benchmark`, and the selected OS label
- it uploads four artifacts: runner readiness report, controlled report, controlled baseline, calibration report
- artifact upload is `always()`-style, so readiness and partial evidence survive failed calibration attempts
Optional threshold validation against versioned baselines:
```bash
TERMINAL_BENCHMARK_BASELINE=terminal_benchmark/baselines/canonical-headless.standard.json \
bash scripts/ci/run_terminal_benchmark_full.sh
TERMINAL_DISPLAY_BENCHMARK_BASELINE=terminal_benchmark/baselines/live-display.quick.json \
bash scripts/ci/run_terminal_display_benchmark_smoke.sh
```
Headless baselines are enforced. Live-display baselines are advisory by default: regressions are reported to stderr but do not turn the command into a hard failure unless you deliberately promote that policy.
Benchmark baseline scope is fail-closed:
- `portable-headless` baselines apply only to canonical headless reports
- `local-display-session` baselines apply only to generic local live-display reports
- `controlled-display-session` baselines can only be refreshed from, and applied to, monitor-aware controlled live-display reports
- controlled baselines now also carry exact environment requirements for the calibrated host profile, including display server hint and per-scenario CPU monitor metadata
Canonical local system suite:
```bash
bash scripts/ci/run_terminal_system_suite.sh
```
Canonical local system suite with optional live-display coverage:
```bash
bash scripts/ci/run_terminal_system_suite.sh --with-live-display smoke
```
Canonical local system suite with controlled live-display validation:
```bash
bash scripts/ci/run_terminal_system_suite.sh --with-live-display controlled
```
Canonical local system suite with baselines:
```bash
bash scripts/ci/run_terminal_system_suite.sh \
--benchmark-baseline terminal_benchmark/baselines/canonical-headless.standard.json \
--with-live-display smoke \
--live-display-baseline terminal_benchmark/baselines/live-display.quick.json
```
The system suite emits a machine-readable JSON report and validates the referenced full benchmark report and, when requested, the live-display benchmark report and benchmark baselines before returning success.
CPU live-display reports now include:
- suite-level environment metadata: `session_type` and `display_server_hint`
- phase-level timing for `redraw_dispatch`, which captures the wait between `request_redraw` and `RedrawRequested`
- phase-level timing for `buffer_acquire`, `raster`, and `present`
- `cpu_buffer_age_counts`, which shows how often the softbuffer framebuffer arrives with `age=0`, `age=1`, `age=2`, or `age>=3`
- `pacing_mode` and `monitor_refresh_rate_millihz`, which show whether the live run used monitor-driven cadence or the same `event-driven` fallback that production uses when monitor timing is unavailable
- `monitor_name` and `monitor_scale_factor`, which show whether `winit` exposed concrete monitor metadata for the run
Controlled live-display validation adds monitor-aware requirements:
- `steady-redraw-cpu` and `resize-cycle-cpu` must use `pacing_mode=monitor-cadence`
- monitor refresh and scale metadata must be present for those scenarios
- optional session/display-server expectations can be provided through `TERMINAL_DISPLAY_BENCHMARK_REQUIRED_SESSION_TYPE` and `TERMINAL_DISPLAY_BENCHMARK_REQUIRED_DISPLAY_SERVER_HINT`
That keeps local display regressions explainable before touching production render code. The current CPU display path is explicitly age-aware and replays a two-frame damage history when `softbuffer` returns `age=2`.
## CI/CD profile
- Current PR-visible check suite includes `CI`, `CodeQL`, `ClusterFuzzLite PR fuzzing`, `Scorecard`, `Semantic PR`, and `PR Automation`.
- `CI` gate is strict for critical fan-out jobs (`check/test/clippy/fmt/msrv/audit/deny` must be `success`); only `coverage` may be `skipped` when disabled.
- `CodeQL` publishes Rust extraction diagnostics artifact and fails closed when diagnostics telemetry is missing/invalid; actionable diagnostics (`ExtractionErrors > 0` or non-benign extraction warnings) block merges, while known generated build-output warnings remain observable but non-blocking.
- Release governance remains manual-only (`workflow_dispatch`) with enforced preflight (`terminal system suite`, `security gates`, `AI CLI compatibility matrix`).
- Weekly non-blocking soak lane: `.github/workflows/soak.yml` runs `scripts/mvp/run_matrix.sh` and publishes artifacts for long-run compatibility evidence.
## Fuzzing
The repository includes `cargo-fuzz` targets and ClusterFuzzLite workflows.
Local quick run:
```bash
cargo install cargo-fuzz
cargo fuzz run parser_feed -- -max_total_time=30
```
## Interactive Run
Run the binary directly as the terminal runtime (outside the MVP harness):
```bash
cargo run -q -p rldyourterm-app -- --mode auto --shell fish --window-count 1
```
Default non-harness runtime now launches the GUI window terminal path (single-window MVP baseline).
If GUI initialization fails, runtime emits a warning and falls back to TTY mode.
To force TTY mode explicitly:
```bash
cargo run -q -p rldyourterm-app -- --mode auto --shell fish --window-count 1 --tty
```
Or build once and run the binary directly:
```bash
cargo build -p rldyourterm-app
./target/debug/rldyourterm-app --mode auto --shell fish --window-count 1
```
## MVP compatibility harness
MVP harness scenarios continue to run from `scripts/mvp/*` and do not replace interactive mode.
Required manual release gate (covers `R-11`, `R-12`, `R-13`):
```bash
bash scripts/mvp/run_matrix.sh 3
```
Extended compatibility soak:
```bash
bash scripts/mvp/run_matrix.sh 5
```
Run a single profile with optional extra commands:
```bash
bash scripts/mvp/run_profile.sh codex 3 recoverable:pty-write tick mode:cpu
```
Harness logs are written to `scripts/mvp/output/`.
Each required gate run must produce these evidence lines:
- `MVP_PROFILE_START ... single_window_required=1 release_governance=manual-only ...`
- `MVP_HARNESS ... single_window_required=1 release_governance=manual-only`
- `MVP_HARNESS_CMD ... --window-count 1 ...`
- `MVP_RESULT ... windows=1 ... single_window_required=1 single_window_enforced=yes ... release_governance=manual-only ...`
- `MVP_GATE_RESULT ... status=pass ...`
- `MVP_PROFILE_RESULT ... status=pass ...`
- `MVP_MATRIX_RESULT ... status=pass ...`