Build your first causal analysis.
Go from an empty instance to a typed fault tree and a revision-stamped analysis result. The walkthrough uses plain HTTP so every system boundary stays visible.
A packaging-line model with two failure events, one OR gate, and a computed top-outcome probability.
1. Start an instance
A local IngaDB instance runs as two containers: PostgreSQL and the API. The development override enables the local organization-header flow used in this guide.
docker compose -f deploy/docker-compose.yml \
-f deploy/docker-compose.dev.yml up -dConfirm the migrations are applied and inspect the service descriptor:
curl -s localhost:9876/admin/status
curl -s localhost:9876/db/v12. Create an organization
Organizations are the tenancy boundary. Save the returned identifier and send it asX-Org-Id on local development requests.
ORG=$(curl -s -X POST localhost:9876/admin/orgs \
-H 'content-type: application/json' \
-d '{"name":"my-team"}' | jq -r .id)3. Create a graph
A graph owns its topology, evidence, computed views, revisions, and deltas.
GID=$(curl -s -X POST localhost:9876/db/v1/graphs \
-H "X-Org-Id: $ORG" \
-H 'content-type: application/json' \
-d '{"name":"packaging-line"}' | jq -r .id)4. Write the topology
Events are observable failures. Gates define how those events combine into outcomes. Replacing the topology is atomic: readers never see a half-written graph.
curl -s -X PUT "localhost:9876/db/v1/graphs/$GID/topology" \
-H "X-Org-Id: $ORG" \
-H 'content-type: application/json' -d '{
"events": [
{"id":"E_BEARING","label":"bearing wear","component":"conveyor","failure_mode":"wear"},
{"id":"E_SEAL","label":"seal leak","component":"pump","failure_mode":"leak"}
],
"gates": [
{"id":"G_TOP","label":"line stops","type":"OR","inputs":["E_BEARING","E_SEAL"]}
]
}'5. Compute the analysis
This request quantifies events, enumerates minimal cut sets, computes gate quantities, and stores the result with the revision it was calculated from.
curl -s -X POST \
"localhost:9876/db/v1/graphs/$GID/views/analysis" \
-H "X-Org-Id: $ORG" -d '{}' \
| jq '{revision: .analysis.graph_revision, gates: .analysis.gate_quantities}'The development override accepts X-Org-Id. Reachable environments should use Authorization: Bearer cok_… and the deployment controls described in Operations.
Where to go next
Graphs, evidence, computation, revisions, and deltas.
02Use the APIAuthentication, routes, request bodies, and errors.
03Choose a clientTyped TypeScript and Python workflows.
04Drive it from the terminalingactl: catalog-driven commands, for people and agents.
05Run productionConfiguration, hardening, health, and backup.
06See it in practiceFive perspectives, from incident reports to analysis.