OngoingAIOngoingAI Docs

CLI JSON contracts

Use this page when parsing ongoingai report --format json, ongoingai debug --format json, or ongoingai diagnostics --format json in automation, CI, or monitoring scripts.

Contract policy

  • Every JSON document includes a top-level schema_version field.
  • This page documents report.v1, debug-chain.v1, and trace-pipeline-diagnostics.v1.
  • Within a schema version, field names and meanings are stable.
  • Additive fields may be introduced without a schema version change.
  • Consumers should ignore unknown fields for forward compatibility.

Report contract (report.v1)

Command:

Bash
ongoingai report --format json

Top-level object:

FieldTypeRequiredNotes
schema_versionstringyesAlways report.v1 for this contract.
generated_atstring (RFC3339)yesUTC generation timestamp.
storageobjectyesStorage metadata.
filtersobjectyesEchoes selected filters.
summaryobjectyesAggregate totals.
providersarrayyesProvider breakdown rows.
modelsarrayyesModel stats rows.
api_keysarrayyesAPI key stats rows.
recent_tracesarrayyesRecent trace rows.

storage object:

FieldTypeRequiredNotes
driverstringyessqlite or postgres.
pathstringnoPresent for SQLite path-based setups.

filters object:

FieldTypeRequiredNotes
providerstringnoPresent when --provider is set.
modelstringnoPresent when --model is set.
fromstring (RFC3339)noOmitted unless --from is set.
tostring (RFC3339)noOmitted unless --to is set.
limitintegeryesEchoes --limit.

summary object:

FieldTypeRequiredNotes
total_requestsintegeryesRequest count in scope.
total_input_tokensintegeryesSummed input tokens.
total_output_tokensintegeryesSummed output tokens.
total_tokensintegeryesSummed total tokens.
total_cost_usdnumberyesSummed estimated cost.
active_keysintegeryesNumber of active key rows in scope.
top_modelstringnoMost-requested model when present.

providers[] item:

FieldTypeRequired
providerstringyes
input_tokensintegeryes
output_tokensintegeryes
total_tokensintegeryes
total_cost_usdnumberyes

models[] item:

FieldTypeRequired
modelstringyes
request_countintegeryes
avg_latency_msnumberyes
avg_ttft_msnumberyes
total_tokensintegeryes
total_cost_usdnumberyes

api_keys[] item:

FieldTypeRequiredNotes
api_key_hashstringyesHashed key identifier only.
request_countintegeryes
total_tokensintegeryes
total_cost_usdnumberyes
last_active_atstring (RFC3339)noOmitted when unavailable.

recent_traces[] item:

FieldTypeRequired
idstringyes
timestampstring (RFC3339)yes
providerstringyes
modelstringyes
response_statusintegeryes
total_tokensintegeryes
estimated_cost_usdnumberyes
latency_msintegeryes
request_pathstringyes

Ordering guarantees:

  • providers: total_tokens desc, then total_cost_usd desc, then provider asc.
  • models: request_count desc, then model asc.
  • api_keys: request_count desc, then api_key_hash asc.
  • recent_traces: timestamp desc, then trace id desc.

Debug contract (debug-chain.v1)

Command:

Bash
ongoingai debug --format json

Top-level object:

FieldTypeRequiredNotes
schema_versionstringyesAlways debug-chain.v1 for this contract.
generated_atstring (RFC3339)yesUTC generation timestamp.
selectionobjectyesEchoes trace selection filters.
optionsobjectyesEchoes debug output options.
source_trace_idstringyesTrace used as source anchor.
source_timestampstring (RFC3339)yesSource ordering timestamp.
sourceobjectyesSource checkpoint snapshot.
chainobjectyesOrdered checkpoint chain.
diffsarraynoPresent when --diff is enabled.

selection object:

FieldTypeRequiredNotes
trace_idstringnoPresent when --trace-id is set.
trace_group_idstringnoPresent when --trace-group-id is set.
thread_idstringnoPresent when --thread-id is set.
run_idstringnoPresent when --run-id is set.

options object:

FieldTypeRequired
limitintegeryes
include_diffbooleanyes
include_headersbooleanyes
include_bodiesbooleanyes

chain object:

FieldTypeRequiredNotes
group_idstringnoPresent when lineage group exists.
thread_idstringnoPresent when lineage thread exists.
run_idstringnoPresent when lineage run exists.
target_checkpoint_idstringyesUsually the source trace id.
checkpoint_countintegeryesNumber of chain checkpoints returned.
truncatedbooleanyesTrue when limit clips results.
checkpointsarrayyesOrdered checkpoint list.
lineage_identifierstringnoSelection source label.

checkpoints[] and source use the same checkpoint shape:

FieldTypeRequired
stepintegeryes
idstringyes
timestampstring (RFC3339)yes
created_atstring (RFC3339)yes
providerstringyes
modelstringyes
request_methodstringyes
request_pathstringyes
response_statusintegeryes
input_tokensintegeryes
output_tokensintegeryes
total_tokensintegeryes
estimated_cost_usdnumberyes
latency_msintegeryes
time_to_first_token_msintegeryes
time_to_first_token_usintegeryes
lineageobjectyes
metadataobjectno
request_headersstringno
response_headersstringno
request_bodystringno
response_bodystringno

diffs[] item (when enabled):

  • Contains boolean change flags, numeric deltas, byte counts, and metadata key deltas.
  • Includes from_checkpoint_id and to_checkpoint_id for each diff edge.

Ordering guarantees:

  • chain.checkpoints: lineage-aware deterministic order.
  • Ordering preference:
    • lineage.checkpoint_seq ascending when available.
    • parent/child linkage (lineage.parent_checkpoint_id) when sequence is partial.
    • fallback created_at (then timestamp) ascending, then checkpoint id ascending.
  • diffs: ordered to match adjacent checkpoint edges in chain.checkpoints.

Diagnostics contract (trace-pipeline-diagnostics.v1)

Command:

Bash
ongoingai diagnostics --format json

Top-level object:

FieldTypeRequiredNotes
schema_versionstringyesAlways trace-pipeline-diagnostics.v1.
generated_atstring (RFC3339)yesUTC generation timestamp from gateway API response.
diagnosticsobjectyesTrace-pipeline queue pressure and dropped-trace counters.

diagnostics object:

FieldTypeRequiredNotes
queue_capacityintegeryesConfigured async writer queue capacity.
queue_depthintegeryesCurrent queue depth at snapshot time.
queue_depth_high_watermarkintegeryesHighest observed queue depth since process start.
queue_utilization_pctintegeryesCurrent queue depth utilization percentage (0-100).
queue_high_watermark_utilization_pctintegeryesHigh-watermark utilization percentage (0-100).
queue_pressure_statestringyesOne of ok, elevated, high, saturated.
queue_high_watermark_pressure_statestringyesOne of ok, elevated, high, saturated.
enqueue_accepted_totalintegeryesTotal traces accepted into queue.
enqueue_dropped_totalintegeryesTotal traces dropped because queue was full.
write_dropped_totalintegeryesTotal traces dropped after storage write failures.
total_dropped_totalintegeryesSum of enqueue and write drops.
last_enqueue_drop_atstring (RFC3339)noPresent after at least one queue-full drop.
last_write_drop_atstring (RFC3339)noPresent after at least one write-drop event.
last_write_drop_operationstringnoLast write operation label that dropped traces.
write_failures_by_classobjectnoPer-class write failure counts; includes only non-zero classes (connection, timeout, contention, constraint, unknown).
store_driverstringnoStorage driver backing the trace pipeline (for example sqlite or postgres).

Parsing tips

  • Gate parsing by schema_version first.
  • Treat unknown fields as additive.
  • Prefer explicit null/omission handling for optional fields (from, to, diffs, headers, bodies).

Example schema gate:

Bash
ongoingai report --format json \
  | jq -e '.schema_version == "report.v1"'
 
ongoingai debug --format json \
  | jq -e '.schema_version == "debug-chain.v1"'
 
ongoingai diagnostics --format json \
  | jq -e '.schema_version == "trace-pipeline-diagnostics.v1"'