tibo.

Open source · local first · MIT

Your coding agent makes decisions you never approved.

Tibo lists them.

Reads your diff. Names what the agent decided on its own. Keeps a ledger of what you confirm. Runs locally — no account, no API key, no model call.

tibo · decision inbox
$ tibo

3 unconfirmed decisions

  1. dependency added      nodemailer ^6.9
     src/email/send.ts · not present before this change

  2. new environment var   SMTP_FROM
     src/email/config.ts · read at startup, no default

  3. possible module overlap  src/utils/mail.ts
     matched an existing mail utility

  [k] keep   [r] reject   [l] later   [w] why
Works with the repo you already have.

The problem

The failure you don't see

The failure everyone knows is the agent writing bad code. You see it, you fix it.

The failure that costs you is the agent writing reasonable code that quietly decides something. A library you didn't pick. A column you didn't design. A second way of doing something you already had one way of doing. Each one passes review. They only become a problem in aggregate, weeks later, when nobody remembers who decided what.

Evidence

33,707

Unplanned conceptual changes are the primary driver of agent interaction failure.

Study of agent-authored pull requests, MSR 2026

+54%

bugs per developer

Faros AI 2026 telemetry, 22,000 developers

+861%

code churn

Faros AI 2026 telemetry, 22,000 developers

How it works

01

It reads the diff

Structural detection, locally. Dependencies, env vars, schema changes, exports, and possible module overlap. No model, no embeddings, nothing uploaded.

02

You clear the inbox

Keep, reject, or defer. Tibo shows the evidence and leaves the decision with you.

03

The ledger remembers

Decisions land in .tibo/decisions.md. A fresh session can run npx --yes @goankan/tibo@0.1.1 summary instead of asking you to explain the project again.

Who it is for

For people shipping with an agent and still owning the result.

Tibo fits after an agent task, before you merge, and whenever a project has more decisions than one person can remember.

01

Solo builders

Keep fast experiments from quietly becoming three competing architectures.

02

Small teams

Leave a compact record of choices for the teammate who joins the next session.

03

Agent-heavy teams

Add a review checkpoint without sending source code to another service.

Best use cases

Use it when the change can outlive the prompt.

New dependency

“Add Supabase login.”

Tibo shows the package, version, added import lines, and possible existing utilities before you accept the choice.

Data change

“Add orders to checkout.”

Tibo flags migration statements, destructive operations, and nearby rollback evidence.

Configuration

“Connect the email provider.”

Tibo lists new environment variables and where the application reads them.

Parallel code

“The agent made another helper.”

Tibo compares new exports and filenames with nearby files and labels the result as possible overlap.

When to use it

Run Tibo at the edges of an agent session.

  1. After the agent stops. Scan the working tree before you start reviewing line by line.
  2. Before a commit or pull request. Resolve decisions while the context is still fresh.
  3. At the next session. Run npx --yes @goankan/tibo@0.1.1 summary so the agent sees what you already agreed to.

Coming soon · case study

What changes when a real app uses Tibo for every agent task?

We are dogfooding Tibo on a production-style application and will publish the findings: decisions caught, time spent reviewing, false positives, and what the ledger changed in the next session.

Follow the work ↗

What it doesn't do

  • Doesn't read your code with a model.
  • Doesn't need tests.
  • Doesn't need you to adopt a workflow.
  • Doesn't tell you a change is good.
  • Never says "done."

Learn

Use Tibo after the agent stops typing.

Three small steps turn a finished agent task into a reviewable decision.

Read the full agent guide →

Guide 01

Run your first review

Run Tibo after an agent makes a change, then inspect the working diff.

npx --yes @goankan/tibo@0.1.1 scan

Guide 02

Read and decide

Follow the evidence, then keep, reject, or defer one finding.

npx --yes @goankan/tibo@0.1.1 scan --json
npx --yes @goankan/tibo@0.1.1 decide <finding-id> keep

Guide 03

Repair with approval

Reject a change, approve a narrow Codex repair, test it, and scan again.

npx --yes @goankan/tibo@0.1.1 decide <id> reject
# approve the repair
npx --yes @goankan/tibo@0.1.1 scan
npx --yes @goankan/tibo@0.1.1 summary