checkfu catalog entry — the first-party harness —
from nothing to a settled Session: build the image, adopt it as a
HarnessProfile, pass conformance for your exact tuple, publish an Agent,
and read the settled event log. The first-party harness earns nothing
extra from the platform: it is admitted, driven, conformance-checked, and
capability-bounded through exactly the public
POST /v1/harness-profiles + verification path a stranger’s image takes,
and this guide uses only that surface. Concept truth lives in
Harnesses and models;
this page is the journey.
Where this harness stands
- The catalog entry is
image_required: Checkfu publishes no default image yet, so you build the checked-inapps/harnesspackage — Apache-2.0 licensed, with a Dockerfile and lockfile-pinned dependency closure — and adopt the digest you built. - The harness is pi’s agent libraries behind a Checkfu-authored ACP stdio
server, with externally escrowed same-Run recovery, native steering,
cooperative interrupt, governed subagents, and per-turn telemetry
declared at
initialize. The advertised catalog ceiling records only the actively qualified axes; declarations alone never raise it. - If the model needs ordinary human input, the parent loop can emit a bounded structured Question. Checkfu persists the Question, ends the active sandbox attempt, and starts a fresh continuation only after a complete answer. This is input, not an ActionApproval, and no compute waits for the human.
- Checkfu has not yet recorded a default-tuple ConformanceReport for this entry, so it does not yet clear the full support ladder. The verification below produces that evidence for your tuple; until one passes, ordinary Runs on the profile are refused by design.
Build the first-party image
The build context is the checked-in The command builds the image, publishes it through an owned local
registry so the result is content-addressed, verifies it against the
published image contract, and prints the immutable
apps/harness package in the
Checkfu source checkout: a digest-pinned base image, a reviewed immutable
Debian snapshot, and pi’s exact dependency closure from the committed
lockfile.name@sha256:...
reference. Keep it:Adopt the image as a HarnessProfile
version: 1 and the pinned
driver_version: "checkfu:acp-v1@1". The profile admits nothing yet —
custom OCI profiles are fail-closed until their exact runtime tuple
passes conformance, and the first-party image gets no exception.Verify conformance for your exact tuple
Select the SandboxProfile and ModelRoutingProfile the Agent will actually use.
The harness selects among all three model wire dialects from its
environment (OpenAI responses by default, OpenAI chat, or Anthropic
messages), so any platform-routed model routing profile is reachable.Verification queues a conformance Run that an enrolled Runner claims and
executes against the real image. The passing ConformanceReport is pinned
to the image digest, profile version, driver, sandbox, model routing profile,
policy, and suite revision; changing any of them — or reaching the
report’s 30-day expiry — requires fresh evidence. If your harness calls
platform tools, add
prove_platform_mcp: true (CLI:
--prove-platform-mcp) to also prove tool delivery at the execution
locus.Create and publish an Agent
With a passing report, the profile is an ordinary harness name an Agent
can reference:Publish version 1 with
cURL
POST /v1/agents/{id}/releases and grant the
Agent use_harness, use_model, and use_environment on the three
governed resources, plus invoke for your Principal — the exact
sequence Create and publish an Agent
walks. Session admission intentionally fails closed while any one PermissionAssignment
is absent.Upgrade or roll back the profile
Rebuild and locally test the next private-monorepo image, then keep the
logical profile name stable while advancing its immutable version:The CLI prints the old and new release IDs plus an exact rollback command.
A rollback publishes the next HarnessProfileRevision pointing at the old
release; it does not mutate history. Existing Runs retain their pins, and
every changed tuple needs fresh conformance before new admission. This is
all inside
andyrewlee/checkfu: the command creates private Workspace API
resources and makes no source-publication or catalog-readiness claim.Run a Session and read the settled log
run.completed
followed by session.status_idle, with the agent.message content and
the model-routing, usage, and sandbox-cleanup evidence recorded between
run.created and settlement. The event catalog
names every type you will see.A turn that needs input instead records agent.question and
run.requires_action before the Session pauses. Answer it by posting a
user.question_answer to this same events endpoint with the Question ID
and one answer for every item. The answer creates a new Run with fresh
compute; it never revives the process that asked.Forking it
Theapps/harness package doubles as the reference for custom harnesses:
it includes architecture notes and compatibility fixtures so a team can
fork the loop without copying any proprietary control-plane package. The
dependency-free walkthrough of the same boundary is the custom ACP example
in the repository (examples/custom-acp), which this guide’s arc mirrors.
Next steps
Harnesses and models
The adoption-path model, capability ceilings, and conformance evidence rules.
Harness extensions
The checkfu ACP extensions this harness declares at initialize.