Mantyl
A handover layer for AI-built software: a local-first CLI that reads the repository and coding-agent history, executes verification in a sandbox, and produces a recipient-ready project passport in which every claim is labelled by how it is known.
- Product owner
- Joel Parfitt · independent founder product
- Build
- Solo product definition, architecture, engineering and positioning
- Repository
- jopli11/mantyl · pnpm monorepo
- Evidence
- Dated live captures, the public npm package and a pinned repository commit

The CLI is publicly installable as mantyl on npm, first published 24 July 2026 with version 0.2.0 current at the capture date. Repository figures are a delivery-scale snapshot at the pinned commit, not evidence of adoption or commercial outcome.
Make handover evidence, not prose
When software is built with coding agents, the usual handover artefacts stop working. The README describes intent, the commit history is a stream of agent-generated messages, and the honest answer to “does it build from a clean clone?” is often unknown. Mantyl names this gap transfer debt: the cost that moves from the builder, who shipped quickly, to the recipient, who must now establish what actually exists.
The product is a CLI that assembles a project passport from three separated evidence sources. It collects immutable observations from Git and the repository, ingests coding-agent session history from Claude Code, with Cursor and Codex adapters in beta, and executes real verification in a Docker sandbox with the network off by default. The result renders as HTML, Markdown and a hosted page on mantyl.dev, where a recipient can read what exists, how it runs, what was decided and what remains unknown.
Mantyl is Joel’s solo product: definition, architecture, engineering, visual system and positioning in one pair of hands, alongside QDev client work. It is presented here as an owned product in alpha. The case claims a shipped, installable tool and a designed evidence model. It does not claim adoption, revenue or an independent security audit.
Contract first, then collectors, then trust
July 2026 · Definition
Specify the truth model before writing the product
Wrote the architecture specification: an eight-state truth model, a canonical passport.json contract, and the rule that every material assertion must resolve to a repository fact, session excerpt, creator assertion or executed check.
July 2026 · Core build
Schema, collectors and the evidence graph
Built the Zod passport schema, Git and repository collectors, the Claude Code session adapter and the reconciliation layer that turns raw observations into labelled claims. First public npm release on 24 July 2026.
August 2026 · Verification
Execute checks instead of trusting prose
Added the Docker sandbox runner with network off by default and Node verifier plugins for install, build, typecheck and tests, each recording command, exit code, logs and environment fingerprint.
August 2026 · Release surface
Ship the site, docs and hosted passports
Launched mantyl.dev with documentation, a labelled example passport and hosted passport pages, free during alpha. Version 0.2.0 published 18 August 2026; groundwork for an independent verification worker followed.
Every surface, package and trust boundary
Capability status definitions
- LiveAvailable in a public or deployed product.
- ImplementedBuilt, but release or approval is not evidenced.
- DemonstrationA labelled example using simulated data.
- ExploratoryResearch, specification or prototype only.
Mantyl CLI
The primary product: local-first passport creation with no account, installable from the public npm registry.
- init, scan, verify, generate, publish
- doctor and config commands
- Stable exit codes for CI use
- Explicit, optional publishing
Repositoryapps/cli
Passport contract
One canonical, versioned passport.json schema consumed by every renderer and surface downstream.
- Eight-state truth labelling
- Source references on every claim
- Zod as source of truth
- JSON Schema export
Repositorypackages/schema
Collectors and agent adapters
Immutable observations from Git and the repository, plus coding-agent session history as a first-class evidence source.
- Git and repository collectors
- Claude Code session adapter
- Cursor and Codex adapters in beta
- Secret detection before caching or upload
Repositorypackages/collectors-* + adapter-*
Sandboxed verification
Claims about building and testing come from execution in an isolated runner, never from narrative.
- Docker runtime, network off by default
- Install, build, typecheck and test verifiers
- Command, exit code and log capture
- Skipped checks recorded honestly
Repositorypackages/runner-docker + verifier-node
Rendering and hosted delivery
Pure renderers turn passport.json into the documents a recipient actually reads.
- HTML and Markdown renderers
- Hosted passport pages on mantyl.dev
- Labelled example passport
- Docs, changelog and manifesto
Repositorypackages/renderer-* + apps/web
Verified accreditation
A planned paid trust layer in which only an independent Mantyl-controlled run can issue accreditation.
- Passport signing
- Independent re-verification
- Verification worker groundwork
- Hosted passports free during alpha
Repositorypackages/signing + worker setup
One run for the builder, one page for the recipient
From repository to accepted passport
- ScanIndex the repository and ingest Git and coding-agent history locally.
- VerifyExecute install, build, typecheck and tests in an isolated sandbox.
- GenerateReconcile observations into a passport where every claim carries its evidence state.
- DeliverRender HTML and Markdown, or publish explicitly to a hosted passport page.
The live site, docs and example passport evidence the public surface. The example passport describes a fictional sample project, and the CLI panel on the homepage uses sample values. Neither is customer activity.
Inspect the live product (opens in a new tab)The passport a recipient receives
Both captures are dated screenshots of the live public product. The example passport is presented on the live site as a fictional sample project, which is itself the evidence discipline the product sells: labelled data, no implied customers.


The choices that keep a handover honest
Label every claim with how it is known
- Decision
- Give each passport assertion one of eight truth states, from Mantyl verified and locally verified through repository confirmed, agent reported and creator confirmed to inferred, contradicted and unresolved.
- Why
- A recipient's real question is not what was built but which statements they can rely on. An agent's claim and an executed check are different kinds of knowledge.
- Consequence
- Contradictions and unknowns become first-class output. A passport can honestly show six unknowns instead of hiding them in confident prose.
- Tradeoff
- An honest passport can look worse than a polished document, and the schema must enforce that any asserted claim carries source references.
Local-first with no account
- Decision
- Run scan, verification and generation entirely on the builder's machine, with publishing as a separate explicit step.
- Why
- Repositories and agent session history are sensitive. A handover tool that uploads by default would be the black box problem restated.
- Consequence
- The CLI is useful in one run with nothing shared, and secret detection and redaction happen before caching, LLM calls or any upload.
- Tradeoff
- Monetisation moves to later cloud services, and every paid feature must justify leaving the machine.
Verification is execution, not narrative
- Decision
- Run install, build, typecheck and tests in a Docker sandbox with the network off by default, recording command, exit code, logs and environment fingerprint per check.
- Why
- The difference between a claim and a check is the difference a recipient is paying attention to.
- Consequence
- When Docker is unavailable, checks are recorded as skipped rather than simulated, and the passport visibly carries less proof.
- Tradeoff
- The strongest evidence requires Docker on the builder's machine, which narrows the frictionless first run.
Keep the LLM out of verification results
- Decision
- Use a schema-constrained LLM adapter for classification, reconciliation and explanation only. Raw model prose never becomes a verification outcome.
- Why
- A product whose category is trust cannot let generated text masquerade as an executed result.
- Consequence
- AI-assisted interpretation improves readability while the evidence chain stays deterministic and inspectable.
- Tradeoff
- More machinery: structured outputs, fact and claim separation, and a provider-configurable adapter instead of free-form summarisation.
One canonical contract
- Decision
- Make passport.json a versioned Zod schema that renderers, CI, hosted pages and future integrations consume without private extensions.
- Why
- Handover documents outlive tools. A stable contract lets the HTML page, Markdown file and hosted view agree by construction.
- Consequence
- Renderers are pure functions of the passport, and new surfaces can be added without touching collection or verification.
- Tradeoff
- Schema evolution needs the same versioning discipline as a public API from day one.
One monorepo, two applications, fourteen shared packages
Primary product
jopli11/mantyl · apps/cli
LiveOwns the command router, run context and workflows behind init, scan, verify, generate, publish, doctor and config.
- TypeScript
- Node 20+
Public npm package mantyl, version 0.2.0 published 18 August 2026.
Marketing and delivery surface
jopli11/mantyl · apps/web
LiveOwns mantyl.dev: proposition, documentation, changelog, manifesto, account entry and hosted passport pages.
- Next.js
- Vercel
Live public site captured 26 August 2026.
Contract and reconciliation core
packages/schema + core + evidence + config
ImplementedCarries the canonical passport schema, workflow orchestration, evidence graph and validated configuration and policy loading.
- TypeScript
- Zod
Reviewed packages at the pinned commit, including schema tests for the eight truth states.
Evidence sources
packages/collectors-* + adapter-*
ImplementedCollects immutable Git and repository observations and ingests Claude Code, Cursor and Codex session stores with source references preserved.
- TypeScript
Reviewed package boundaries. Cursor and Codex adapters are labelled beta on the live site.
Verification layer
packages/runner-docker + verifier-node
ImplementedExecutes untrusted project commands in an isolated container and returns structured check results.
- Docker
- Node
Reviewed implementation. Sandbox isolation is a designed control, not an independently audited guarantee.
Trust layer groundwork
packages/signing + verification worker
ExploratoryPrepares passport signing and the independent verification service behind the planned Mantyl Verified tier.
- TypeScript
Repository groundwork only. No paid tier is live at the capture date.
A shipped product that practises what it sells
In five weeks, alongside client delivery, one founder took Mantyl from an architecture specification to an installable CLI, a fourteen-package monorepo, and a live product at mantyl.dev. The product’s discipline and this case study’s discipline are the same idea: claims labelled by evidence, execution preferred to narrative, and unknowns stated rather than smoothed over.
The open work is the trust layer: independent verification runs, signed accreditation and the paid tiers around them, plus the adoption evidence that would let this case make outcome claims. Until then, Mantyl stands as proof of how QDev approaches a product from zero: contract first, evidence first, and honest about what remains unproven.
Start your product from evidence.
Define the rules, evidence and experience before development with product definition.
Discuss a project