Skip to main content

frob: a small green goblin in an aviator cap hunched over a crystal ball of glowing rune-code. The enforcement layer for agentic development.

PyPI version Python 3.11+ License: GPL-2.0-only CI status

frob

frob is the enforcement layer for agentic development: an obligation graph tracks every symbol's identity, a statically-checkable ticket queue tracks every unit of work, and a set of gates turn unaccounted-for change -- code with no ticket, a doc that drifted, a test that vanished -- into a frob check failure. Your editor or an agent's own tools navigate and edit code; frob accounts for it.

Highlights

  • Obligation graph. Every symbol's identity, tests, docs, and tickets are tracked edges, not tribal knowledge -- frob check fails the moment one of them drifts.
  • Statically-checkable ticket queue. Work lives in the tickets/ directory, tracked in git, with declared scope, blockers, and evidence -- not a side channel that can silently fall out of sync with the code.
  • Gates with a remedy built in. frob check runs ruff, ty, cycle/dup/arch/bind/exports, and every enforcement gate in one pass; every violation message embeds the command that fixes it.
  • A comment DSL, not a wiki. frob:ticket, frob:tests, frob:doc, frob:invariant, and frob:waive bind code to its own accounting inline, where a diff can't leave it behind.
  • Visible debt, never silence. A waiver (frob:waive RULE-ID reason="...") is an explicit, reason-carrying exception -- it shows up in every report instead of quietly suppressing a check.
  • An MCP server for agent hosts. frob serve exposes doable tickets, stale docs, and graph queries as read-only tools over stdio.

Install

uv tool install frob
frob doctor
frob version: 0.530.0

  frob_core: available (version=unknown)
  strata_core: available (version=unknown)

all native extensions available

frob doctor is a good first command: it confirms the install and reports whether the two native acceleration extensions (frob-core, frob-strata) are present. Both are default dependencies of a plain install; if either is absent frob still runs, in pure-Python mode, and says so loudly rather than degrading silently -- see docs/guides/install.md.

Quickstart

The enforcement loop is annotate -> check -> fix-or-waive: bind code to a ticket and its tests with comment directives, let frob check fail on anything undeclared, then either close the gap or waive it with a reason.

frob graph build                                  # build the obligation graph cache
frob ticket new --title "Add multiply function" \
    --kind feature --scope "src/demo/calc.py"     # T-0001
frob ticket start T-0001                          # pre-work sweep, -> in-progress

# write code, bind it: `# frob:ticket T-0001` above the new symbol,
# `# frob:tests <symref>` above the test that covers it

frob check . --ticket T-0001                      # fails: undeclared change
# ... add the directives, write the test ...
frob check . --ticket T-0001                      # coverage/scope/drift clean

frob test --base main                             # run exactly the touched-set tests
frob ack src/demo/calc.py::multiply --facet sig    # acknowledge a described contract
frob ticket close T-0001                           # requires evidence + a Done report

See docs/guides/quickstart.md for the full walkthrough with real command output.

Command groups

frob --help groups its surface into seven verb collections -- explore, quality, design, ops, ticket, vet, serve -- and every member also works as its own standalone top-level command. docs/guides/command-reference.md has the full per-group breakdown; docs/modules/cli.md carries the tier ledger behind the grouping. The complete table is below.

Full command reference (every top-level command)

Statically bound to the live subcommand registry -- a subcommand added or removed with no matching row here fails frob check (DOC005). The seven grouped rows (explore/quality/design/ops/ticket/vet/serve) are the verb collections above; everything else also works standalone. Use frob <verb> --help for flags.

Command Description
frob ack Acknowledge current digests for one or more symbol refs
frob agent Print/export the dispatched-agent guard env
frob arch Arch analysis: long functions, god classes, coupling
frob bind Verify binding declarations match source signatures
frob check Aggregate quality gate: ruff, ty, cycle/dup/arch/bind/exports, and every enforcement gate
frob claude Sync this repo's tracked Claude config to ~/.claude/
frob clean Remove build/test/cache artifacts (tiered, dry-run by default)
frob coverage Refresh coverage.xml / the coverage stamp, touched-set incremental by default
frob cycle Detect import cycles in Python packages
frob debt List outstanding frob:debt entries
frob deploy Compile a host manifest into idempotent install/status/uninstall bash
frob deprecated List outstanding frob:deprecated entries
frob design Group: sys/registry/docs/graph/exports -- see docs/guides/command-reference.md
frob docs Extract docstrings or search docs/ for a file/symbol
frob doctor Verify native extensions and report derived-state health
frob dup Detect duplicate/clone code segments
frob explore Group: map/outline/xref/docs-search -- see docs/guides/command-reference.md
frob exports Generate a ready-to-paste __init__.py from public symbols
frob fleet Cross-repo status/gate rollup and ticket routing over fleet.toml
frob fmt Canonicalize frob: directive comment line-wrapping
frob format ruff check --fix + ruff format, write mode
frob gitlog Summarize git history filtered by conventional commit type
frob graph Obligation graph: build the cache, query symbols, explain drift
frob map Recursive directory tree with file sizes and line counts
frob mutate Mutation testing: perturb a file, see which mutants survive
frob narrative Migrate a T-#### narrative comment block
frob natives Build declared [[native]] crates via maturin develop
frob ops Group: release/natives/doctor/clean/fleet/deploy/scaffold/gitlog/stats -- see docs/guides/command-reference.md
frob outline Structural skeleton of a file: classes, functions, signatures
frob parse Parse tool output (pytest/ruff/ty/clang/junit) into a compact summary
frob perf Profile a command/test suite and inspect its heat-map
frob pool Ratchet-pool baseline management for warn-rule findings
frob profile Development profile (rapid/standard/fortress) status and downgrade
frob quality Group: check/test/dup/arch/bind/cycle/mutate/perf -- see docs/guides/command-reference.md
frob refactor Transactional symbol move/rename/split
frob registry Exhaustiveness drift-lock over docs/design/registry/*.yaml
frob release Mechanical semver from the public-API graph, plus the release gate
frob scaffold Scaffold a new project from a registered template
frob serve MCP stdio adapter exposing frob's enforcement queries as tools
frob stats DORA-ish delivery measurement: queue health + commit cadence
frob status Delta-first movement summary since the last stamped baseline
frob sync-skills Bidirectionally sync agents//skills/ into ~/.claude/
frob sys strata design-model audit: model-vs-code conformance, threat/CWE/compliance/PII, deploy proofs
frob test Select and run tests for the touched set against a base ref (or --all)
frob ticket Group: the statically-checkable ticket queue -- see docs/guides/command-reference.md
frob verify The unverified-window tracker: depth/age/quarantine status
frob vet Group: dependency capability/CVE/supply-chain vetting -- see docs/guides/command-reference.md
frob whereis Print the interpreter/site-packages path of the frob actually running
frob worktree Manage dispatched-agent git worktrees
frob xref Find where a symbol is defined and every file that references it

Contributing

See CONTRIBUTING.md for the ticket-queue workflow, comment-directive conventions, and the evidence/close/land dance. Please also read the Code of Conduct. Found a security issue? See SECURITY.md -- please do not file it as a public issue.

More

  • docs/guides/install.md -- native extensions, the T-0133 degrade contract, editable dev installs
  • docs/guides/quickstart.md -- the loop above with real command output
  • docs/guides/command-reference.md -- the seven verb groups and the full command table
  • docs/modules/cli.md -- the CLI regrouping history and per-command tier ledger
  • docs/ -- per-command references and module design docs
  • CHANGELOG.md -- what shipped, grouped by area

Metadata

Release files for frob 0.531.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for frob 0.531.0
File Size Uploaded Provenance
frob-0.531.0.tar.gz 5.2 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for frob 0.531.0
File Interpreter ABI Platform
frob-0.531.0-py3-none-any.whl Python 3 none any Details

Total release size: 10.0 MB

Release files / frob-0.531.0.tar.gz

Download URL frob-0.531.0.tar.gz
Size 5.2 MB
Tags Source
SHA-256 checksum
How to use checksums
6d909b9c5829445e2c8cde3387a51c960c5c822fe0c601733830517b1a1ec0ab
BLAKE2b-256 checksum
How to use checksums
d70a919c32282eeab69277cbad50ad12f6a8ea78fe7e1a03ed4058ca06e7e021
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / frob-0.531.0-py3-none-any.whl

Download URL frob-0.531.0-py3-none-any.whl
Size 4.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
b59c78830c9816492568e93862e85683ca867027a81187b433a99a49bc6c2759
BLAKE2b-256 checksum
How to use checksums
1a6f17ffcf34c40c03932a65bdd067ffe41ab7dcbcac547b1e54b6eb248e1d16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Security for frob 0.531.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for frob-0.531.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page