Canny
Supervisor hooks for Claude Code and Codex: append-only ledger, deterministic done-without-check blocks, optional Jev judgments that never sole-block.
Overview
Canny (github.com/qkal/canny) is Qkal's zero runtime dependency supervisor for Claude Code and Codex. Hooks record what actually happened; code refuses finish when the ledger lacks a passing check after the last edit. README states facts go to code and judgments go to Jev: file changes, command exit codes, and secret patterns block offline, while done claims and rubric-style rule questions go to TypeSafe with about a quarter second latency. Jev never blocks by itself; a refused done is always missing ledger evidence, not a probability threshold. canny replay reproduces verdicts from the ledger.
Problem: Coding agents can say done after a heredoc edit without running tests, and instruction files only ask the model to behave.
Built for: Claude Code and Codex users who want hook-level supervision with an append-only ledger and deterministic blockers before optional Jev judgments.
First indexed on Jev Directory: 2026-09-24
Creator and team
- Name
- Qkal
- Handle
- @qkal
How Jev is used
- Role in the product flow
- Optional Noul-style judgments on done claims and semantic rules; deterministic ledger gates completion
- Primitives
- NoulScore
- State in
- Append-only session ledger events plus diff snippets for rule questions documented in README.
- Decision out
- Calibrated probabilities for judgments surfaced as notes; blocking verdicts come only from provable ledger facts.
- Agent hooks append tool and command events to the ledger
- On finish attempt, code checks for passing test, build, lint, or type-check since last edit
- Optional Jev answers typed questions about done claims or instruction rules
- Deterministic refusal messages cite ledger facts, not model prose
- canny replay re-derives the same verdict from stored events
Canny complements coldteadotai-abide and leepokai-jev-guard rather than replacing them. Abide scores each AGENTS.md rule on diffs; jev-guard risk-scores every tool call and scans results for injection. Canny sits on completion evidence: did checks run after the last change, and does the ledger prove it. Jev handles fuzzy done language and semantic rule notes while code owns hard stops. That separation keeps sessions replayable and cheap when you omit a TypeSafe key.
Sourced performance claims
- README documents Jev answering typed yes or no questions in about a quarter of a second for judgments.Source: github.com/qkal/canny README
- README states zero runtime dependencies in package.json and compiled CLI committed to the repo.Source: github.com/qkal/canny README
- Public GitHub repo qkal/canny had about seventy eight stars when this listing was drafted.Source: GitHub star count September 2026
Features and stack
Features
- Claude Code and Codex hook installers via init prompt
- Append-only session ledger with replay
- Deterministic blockers for missing checks and secret patterns
- Optional Jev judgments that never sole-block
- Node 22 plus git install path without npm package
Stack
- TypeScript
- Node 22
- Agent hook APIs
- TypeSafe Jev
Pricing: Open source; optional Jev usage bills to your TypeSafe key when judgments are enabled.
Links
FAQ
- Can Jev block my agent from finishing?
- README states Jev never blocks. Finish refusals come from ledger facts such as no passing check since the last edit.
- How is Canny different from Abide?
- Abide enforces instruction-file rubrics on each edit. Canny focuses on completion evidence and optional semantic judgments over the session ledger.
- Is there an npm install?
- README install flow clones github.com/qkal/canny to ~/.canny/src and runs the committed dist CLI; there is no npm package.
Related learn guides
Original Jev guidance that pairs with this product pattern.
- Jev use cases
The patterns builders actually search for: moderation, routing, triage, RAG verify, and agent gates.
- Jev vs LLM classification
When to gate with System One probabilities instead of asking a chat model to label things.
Related products
Hand-picked neighbors with rich profiles or overlapping tags.