Let's turn up the heat!
v1.0.0 — production release. The house is still on fire. The coffee is excellent.
This Is Fine (tif) is a local-first restraint system for coding agents. When your AI co-pilot decides the bugfix needs a new microservice, three abstraction layers, and a dependency on left-pad-redux, This Is Fine is the calm dog who says: maybe just fix the null check.
It applies controlled pressure, measurable containment policies, and verified simplification so you get the smallest correct implementation — not the smallest interesting one.
Minimalism is bounded by a non-negotiable correctness floor.
A smaller wrong answer can never beat a larger right one.
We will not ship vibes.
Coding agents are great at adding. They are… less great at stopping.
This Is Fine sits next to your agent (Claude Code, Codex, Gemini CLI, OpenCode, or anything that speaks JSON) and:
- Turns up the heat (Fire Levels 1–4) so the agent feels social pressure to stay small
- Scores the damage (files, lines, deps, abstractions — Fuel Added)
- Verifies the result still works
- Runs a Firebreak if things go Out of Control (isolated simplify → re-verify → approve)
- Escalates to Five-Alarm only after current containment has already failed (we do not open with the fire hose)
Everything stays on your machine. No cloud telemetry. No surprise model calls. Your secrets stay in your burning living room, where they belong.
Pick your preferred level of firey goodness.
# Unix / macOS / WSL — installs latest release, verifies SHA-256 against SHA256SUMS
curl -fsSL https://raw.githubusercontent.com/9thLevelSoftware/this-is-fine/main/scripts/install.sh | bash# Windows PowerShell
irm https://raw.githubusercontent.com/9thLevelSoftware/this-is-fine/main/scripts/install.ps1 | iexPin a version:
./scripts/install.sh --version v1.0.0.\scripts\install.ps1 -Version v1.0.0Then confirm the dog is house-trained:
tif --version # → tif 1.0.0Prefer checkout-local install so SUMS helpers resolve offline-friendly: clone the repo, then
./scripts/install.sh --version v1.0.0.
cargo install --path crates/tif
# or
cargo build --release -p tif # → target/release/tifRequires Rust 1.75+. End users of release binaries need no Rust — we already suffered for you.
./scripts/uninstall.sh --prefix ~/.local
# optional: also purge credential secrets dirs
./scripts/uninstall.sh --prefix ~/.local --purge-secrets.\scripts\uninstall.ps1 -PurgeSecretsRelease assets + checksums: GitHub Releases.
cd your-perfectly-normal-repo # smoke optional
tif init # lay down config + local state
tif on # start containment (the dog sits down)
tif status # how bad is it, really?
# Tell the agent (or yourself) what the policy wants
tif policy resolve --task "fix null pointer in parser"
# Agent adapters call this around real work
tif run begin --task "fix null pointer in parser" --agent claude-code --json
# …agent implements the tiniest correct fix…
tif run complete <run_id> --from-git --json --verification-passed true
tif assess --from-git
tif status --jsonSuspend containment when you're deliberately exploring (yes, that's allowed):
tif off # temporary leave of absence for the dog
tif on # back to workInteractive command center (keyboard: ↑↓ / 1-8 / r refresh / q quit):
tif tuiFull recovery runbook (dual-failure, hung verify, disk full): docs/user-guide.md.
Wire This Is Fine into a real agent product. Protocol smoke is not enough for glory — use the real host when you can.
| Agent | Install |
|---|---|
| Claude Code | adapters/claude-code/install.sh / install.ps1 |
| Codex | adapters/codex/install.sh / install.ps1 |
| Gemini CLI | adapters/gemini-cli/install.sh / install.ps1 |
| OpenCode | adapters/opencode/install.sh / install.ps1 |
Always pass --json. Refuse envelopes with unknown major protocol_version. Spec: docs/protocol/v1.md.
Because "bloat" lacked panache.
| Technical concept | Product term |
|---|---|
| Stress-prompt context | Pressure Scenario |
| Anti-bloat rules | Containment Policy |
| Aggressiveness | Fire Level |
| Repository discovery | Source Inspection |
| Diff and policy report | Damage Assessment |
| Automatic simplification | Firebreak |
| Avoidable additions | Fuel Added |
| Successful result | Contained |
| Excessive result | Out of Control |
| Emergency recovery | Five-Alarm |
| Level | Name | Vibes |
|---|---|---|
| 1 | Ember | "Maybe we don't need a monorepo." |
| 2 | Smolder | Stronger YAGNI side-eye |
| 3 | Containment | Default. Guarded mode. Sip coffee. |
| 4 | Critical | Aggressive reduction. The dog is still smiling. |
| 5 | Five-Alarm | Escalation only after current-task containment failure. Not a lifestyle. |
tif fire-level # show
tif fire-level 4 # turn up the heat (1–4 operational)| File | Purpose |
|---|---|
.this-is-fine.toml |
Shared, committed repository policy |
.this-is-fine.local.toml |
Machine-local reviewers, credentials, endpoints (gitignored) |
.this-is-fine/ |
Local SQLite audit DB and artifacts (your black box recorder) |
Illustrative shared config:
version = 1
enabled = true
default_fire_level = 3
[verification]
commands = [
"cargo fmt --check",
"cargo clippy --all-targets --all-features -- -D warnings",
"cargo test --all-features"
]
[simplicity.weights]
runtime_dependency = 100
new_file = 25
public_interface = 20
abstraction = 15
added_line = 1
unrelated_change = 50
[simplicity.limits]
new_runtime_dependencies = 0
[approval]
sensitive_paths = ["src/auth/**", "migrations/**"]
[audit]
tier = "redacted" # metadata | redacted | full
max_age_days = 90
max_size_mb = 1024
[rollback]
max_days = 7
successful_commits = 3Schema reference: docs/config/schema-v1.md.
- A smaller incorrect candidate can never defeat a larger correct candidate
- Adaptation cannot weaken the floor, sensitive-path rules, or required verification
- No unverified Firebreak may replace a known-good implementation
- Source egress only with explicit reviewer permission
If the house is on fire and the tests fail, we do not redecorate. We put the fire out.
tif init | on | off | status
tif inspect
tif policy resolve [--task …] [--fire-level N] [--json]
tif run begin|complete|show|status
tif assess [--from-git] [--files-changed N] [--lines-added N] [--deps-added N]
tif verify [--dry-run]
tif firebreak [--run-id …] [--candidate PATH] [--apply]
tif fire-level [1-4]
tif rollback <run_id>
tif audit show | --gc | --purge
tif five-alarm --plan | --run <run_id> [--apply]
tif adaptation status | recommend | reset
tif tui
Add --json for the adapter protocol.
- Rust core +
tifCLI (JSON protocol for agents) - Firebreak closed loop with user-authorized reviewers (isolation + re-verify + approval)
- Five-Alarm staged recovery after current containment failure
- Production TUI — live events, approve/reject, probe, audit filter
- Adapters for Claude Code, Codex, Gemini CLI, OpenCode (Unix + Windows)
- Install scripts with SHA-256 SUMS verification; multi-OS release assets
- Audit store: SQLite + content-addressed artifacts (local only)
- CI templates (GitHub Actions / GitLab) — read-only by default
Field evidence and readiness: docs/V1_READINESS.md.
crates/tif-core # domain library (+ provider feature flags)
crates/tif # CLI + TUI binary
crates/tif-e2e # field-validation battery
adapters/ # installable agent adapters
ci/ # consumer-repo CI templates
docs/ # design, protocol, security, readiness
- No cloud telemetry
- No unauthorized hosted models
- Audit data stays under
.this-is-fine/ - Reviewers only from the user-authorized local pool
Owner: 9thLevelSoftware maintainers.
- Recovery runbook →
docs/user-guide.md - Open a GitHub issue with label
incident(orP0for data loss / silent bad apply) - Attach redacted
tif audit --json, OS, andtif --versionwhen possible
Best-effort community support. Not a 24×7 fire department.
cargo fmt
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace| Doc | Description |
|---|---|
| User guide | Install, adapters, recovery |
| V1 readiness | Must/Should checklist + evidence |
| Protocol v1 | Adapter JSON contract |
| Config schema v1 | Configuration reference |
| Threat model | Security boundaries |
| Versioning | SemVer / schema / protocol |
| Adapters | Agent install + troubleshooting |
| Design specification | Full product design |
| Changelog | Release notes |
| Roadmap | Phases 0–10 |
MIT OR Apache-2.0
This is fine.
Please verify your Firebreak candidates. The dog is not a unit test.
