witness

witness is an agent for coding agents from juxt/allium. It costs 75 tokens per session (2,597 once invoked), scanned A, original, MIT.

An independent checker for an Allium loop, a process that changes code and tests until its requirements are met. It checks the loop's success claim against files, test results, hashes, and other ground truth.

In plain words
What is it for?
It re-runs the project's tests and Allium checks, hashes generated tests, records violations and their routing, and writes a witness record.
Why use it?
It reduces the risk of trusting an agent's prose when tests were weakened or the reported result does not match the actual project state.

Agent

Part of the allium plugin — 7 skills, 5 agents, 2 hooks shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/juxt/allium/witness
Clone the repo
git clone --depth 1 https://github.com/juxt/allium

Or install allium, the plugin that ships this one along with the rest of its 7 skills, 5 agents, 2 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for witness

README.md
[![agentmods](https://agentmods.dev/badge/agents/juxt/allium/witness.svg)](https://agentmods.dev/agents/juxt/allium/witness)
Your own site
<a href="https://agentmods.dev/agents/juxt/allium/witness"><img src="https://agentmods.dev/badge/agents/juxt/allium/witness.svg" alt="Measured on agentmods" height="20"></a>
Per session 75 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,597 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00075 $0.02597
Opus 5 $0.00037 $0.01299
Sonnet 5 $0.00015 $0.00519
Haiku 4.5 $0.00007 $0.00260

Measured 4d ago against content hash f737d81a2e0c, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

witness scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

Origin

Copies of this mod

1 near-identical copy found in the catalogue:

  • witness — 100% identical, 0 lines differ
.github/agents/witness.agent.md · 119 lines

How it starts

The opening of the file, as written. The whole thing — 119 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Operate in the skill's non-interactive mode: no user is reachable, so never wait for an answer. Write the witness record, then report the verdict and every violation with its routing in your final output and continue — the caller acts on them. You have full shell access because independent verification requires re-running the project's test command, hashing the generated tests, and running the allium CLI; use it to re-derive the deterministic checks and read ground truth, never to modify the spec, the tests, or the code. Write only the witness record — everything else you read, hash or re-run.

Return your result as a single JSON object conforming to the witness-result schema (see the skill's "Output format" section) and nothing else — the verdict, each check with the ground truth it read, every violation with its routing, and the record path as fields. Not the file contents or the code you read, and no prose around the object.

Witness

You are the loop's independent witness. When an Allium loop reports that it has converged — tests pass, weed is clean, no blocking questions remain — you confirm that claim against ground truth the run could not fabricate, and you leave behind a signed witness record. You do not do the loop's work again; you observe the evidence its phases already produced.

The distinction that gives you your value: the verify phase asks "does the code satisfy the spec?" and is run by the actor as part of its own work. You ask "is the actor's claim that it does actually true, and was it reached honestly?" — run independently, trusting nothing the actor merely asserts in prose. This is the driving the loop anti-cheat contract turned from prose the actor is trusted to follow into a check the loop can verify.

Your verdict is deterministic, not a judgement call. You re-run cheap deterministic tools and diff their output; you never grade one narrative against another. A witness that "reviews" the work is an eval; a witness that re-derives pass/fail from the runner's own output is a test. Be the test.

Read the full file on GitHub · 119 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 119 lines · 75 tokens per session scan A f737d81a2e0c

Subscribe to this mod's changes

witness is an agent published in the GitHub repository juxt/allium (478 stars, last pushed 8d ago), licensed MIT. It adds 75 tokens to every session and 2,597 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other agents, from other repositories

gsd-phase-researcher

Researches how to implement a phase before planning. Produces RESEARCH.md consumed by gsd-planner. Spawned by /gsd:plan-phase orchestrator.

open-gsd/gsd-core · 41 tokens

security-reviewer

Use proactively when attacker-controlled input, trust boundaries, authorization decisions, sensitive sinks, secrets, or security-impacting changes require exploitability analysis. Do not use for generic correctness review without a meaningful security boundary.

zebbern/claude-code-guide · 45 tokens

fsl-vacuity-reviewer

Use PROACTIVELY after adding or changing a .fsl spec under specs/ or examples/. Uses the working-tree native Rust CLI to detect hollowing, weak mutation kill-rate, vacuous properties, and weakened invariants. Read-only on specs; may run verifier commands.

ymm-oss/fsl · 64 tokens

integration-verifier

Verifies that the tasks of a completed build actually wire together. Dispatched once at /execute Step 4 for multi-task specs. Read-only -- cannot modify the codebase. Checks cross-task wiring + global acceptance, not per-task acceptance.

dwarvesf/dwarves-kit · 53 tokens

planner

Drafts the execution Plan (plan.md) AND emits task records for a SpecManager feature, grounded in the approved Architecture and the existing codebase. Plans MUST be organised into phases with Fibonacci-scored tasks ≤3.

joanseg/specmanager · 46 tokens

data-etl-worker

Implements a data pipeline/transform task, extract/transform/load, parsing, dedup, normalization. Write-capable; prefers DuckDB SQL for the transform per the house stack. Dispatched by /kit:execute step 2b-0 as the data-etl domain implementer.

dwarvesf/dwarves-kit · 64 tokens