The first conformance contract for 12-Factor AgentOps. A small HTTP surface: durable job submission, queue projection, ledger replay. Descriptive, not aspirational.
The 12 factors are the doctrine. JobSpec is the doctrine made executable.
The shape of the JSON isn’t the point. The promise is: a job is not accepted until the durable ledger append succeeds.
What v0 does not cover
Real topics, deliberately omitted. They need workload evidence before becoming public contracts.
— cross-host placement
— placement.affinity
— GPU scheduling
— provider capability negotiation
— multi-tenant access control
— retry policy configuration
— a new worker abstraction
Steelman: kernel, not scheduler
The omissions above aren’t gaps to fill later — they’re the boundary the spec publishes on purpose.
Claim
AgentOps isn’t a scheduler. agentopsd stays small on purpose.
Strongest critique
Why not just use Kubernetes, Airflow, or Temporal? Building yet another scheduler is the path every agent framework dies on.
Our answer
agentopsd is the kernel — durable ledger, idempotent submission, projection readiness. Retry policy, DLQ, placement, GPU scheduling are userspace; they belong in your orchestrator. JobSpec v0 publishes the boundary so you run the policy you want against the same conformant kernel.
Evidence: /spec/jobspec/v0/openapi.yaml ("What v0 Does Not Cover" section) + agentops/docs/rfcs/0002-jobspec-openapi-v0.md
Conformance levels
Implement any subset. Partial conformance is fine — be honest about what’s missing.
1
Level 1: Observe
Expose health, readiness, status, and event replay. Runtime need not execute jobs yet — but degraded state must report honestly.
2
Level 2: Enqueue
Accept jobs durably via POST /v1/jobs. Enforce local mutation auth. Recover idempotently by job_id or idempotency_key.
3
Level 3: Execute
Claim, heartbeat, complete, fail, cancel jobs. Expired leases reclaim cleanly without losing history.
4
Level 4: Project
Rebuild read models from the ledger. Serve consumer projections (e.g. OpenClaw) without giving consumers storage ownership.
Why this is 12-Factor AgentOps
Schema isn’t the product. The conformance program is — vendor-agnostic operational behavior for agent runtimes.
Factor
Contract pressure
II. Track Everything in GitDurable, inspectable ledger events
III. One Agent, One JobStable ids, bounded payloads, and status
V. Validate ExternallyIndependent status and event inspection
VI. Lock Progress ForwardAccepted work survives restart and lost acks
VIII. Compound KnowledgeProjections feed future sessions and tools
XI. Supervise HierarchicallyWorkers claim jobs through leases
Request for comments
Four open questions. Default answer: publish v0 as current behavior, add golden compat tests, let real workload evidence shape v1.
Should unversioned daemon route aliases be part of conformance or only compatibility conveniences?
Should invalid job_type responses be preserved exactly in v0, or should v0 require a cleaner 400 before publication?
Should OpenClaw consumer routes stay in the JobSpec profile, or become a separate consumer conformance profile?
Should placement.affinity wait for JobSpec v1 after the mt-olympus cross-host shim soaks under real traffic?