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.

2026 · owned product · solo build by Joel · alpha

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
Live Mantyl homepage stating the handover proposition beside a simulated CLI run producing a draft project passport
Live product capture · 26 August 2026The public proposition in one frame: AI-assisted delivery is cheap, handover is not. Mantyl's answer is a passport that separates what an agent said, what the repository shows and what was actually executed. The CLI panel illustrates the product flow with sample values.

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

AI agents have made implementation cheap and transfer expensive. The receiving developer inherits a codebase whose history, decisions and actual working state live in chat transcripts nobody will read.

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.
Live

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

Implemented

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

Implemented

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-*

Implemented

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

Live

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

Exploratory

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

  1. ScanIndex the repository and ingest Git and coding-agent history locally.
  2. VerifyExecute install, build, typecheck and tests in an isolated sandbox.
  3. GenerateReconcile observations into a passport where every claim carries its evidence state.
  4. 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.

Live Mantyl example passport page for a clearly labelled fictional project, showing verified claim counts, section checklist and evidence labels
Live product capture · 26 August 2026The hosted example passport is the deliverable a recipient receives: claims counted against verification, unknowns surfaced rather than hidden, and every section labelled by evidence class. The page itself is marked as a fictional sample project on the live site.
Live Mantyl documentation quickstart explaining prerequisites, the verification sandbox and honest recording of skipped checks
Live product capture · 26 August 2026The documentation states the evidence boundary in plain language: without Docker, checks are honestly recorded as skipped and the passport carries less proof. Nothing is faked to keep the output looking complete.

The choices that keep a handover honest

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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

Live

Owns 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

Live

Owns 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

Implemented

Carries 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-*

Implemented

Collects 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

Implemented

Executes 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

Exploratory

Prepares 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