Skip to content

CLI reference

Generated from the argparse parser at docs build time (docs/hooks.py), so it always matches rootline --help.

usage: rootline [-h] [--version] {synth,analyze,verify,serve,demo} ...

Provenance-graph attack reconstruction

positional arguments:
  {synth,analyze,verify,serve,demo}
    synth               generate synthetic kernel events
    analyze             build graph, tag, reconstruct
    verify              print or check the provenance hash-chain head
    serve               FastAPI + attack-replay UI (needs rootline[api])
    demo                synthetic end-to-end demo

options:
  -h, --help            show this help message and exit
  --version             show program's version number and exit

rootline synth

usage: rootline synth [-h] --out OUT [--truth TRUTH] [--benign BENIGN]
                      [--seed SEED] [--no-attack]

options:
  -h, --help       show this help message and exit
  --out OUT        output JSONL file
  --truth TRUTH    also write the ground-truth JSON here
  --benign BENIGN  number of benign sessions (default 300)
  --seed SEED      random seed (default 7)
  --no-attack      benign activity only

rootline analyze

usage: rootline analyze [-h] [--format {auto,jsonl,sysmon,auditd}] [--iforest]
                        [--cypher CYPHER] [--baseline BASELINE]
                        [--pivot PIVOT | --ioc IOC] [--story STORY]
                        [--stix STIX] [--mermaid MERMAID] [--no-reduce]
                        events [events ...]

positional arguments:
  events                one or more captures (several sensors are fused)

options:
  -h, --help            show this help message and exit
  --format {auto,jsonl,sysmon,auditd}
                        input format (default: sniffed)
  --iforest             also rank process vertices with IsolationForest
  --cypher CYPHER       write a Neo4j import script for the story
  --baseline BASELINE   benign JSONL capture used as the 'normal' baseline for
                        rarity rules
  --pivot PIVOT         vertex id to reconstruct from
  --ioc IOC             substring (path/ip) of a vertex to pivot on
  --story STORY         write the rootline.story/v1 JSON here
  --stix STIX           write a STIX 2.1 bundle here
  --mermaid MERMAID     write the story as a Mermaid flowchart here
  --no-reduce           skip the causality-preserving reduction

rootline verify

usage: rootline verify [-h] [--head HEAD]
                       [--format {auto,jsonl,sysmon,auditd}]
                       events

positional arguments:
  events                capture to hash (any supported format)

options:
  -h, --help            show this help message and exit
  --head HEAD           expected chain head; omit to print the head
  --format {auto,jsonl,sysmon,auditd}
                        input format (default: sniffed)

rootline serve

usage: rootline serve [-h] [--host HOST] [--port PORT] [--fuse] [captures ...]

positional arguments:
  captures     captures to analyse at start-up

options:
  -h, --help   show this help message and exit
  --host HOST  bind address (default 127.0.0.1; the API has no authentication)
  --port PORT  port (default 8000)
  --fuse       fuse all captures into one story (several sensors, one host)

rootline demo

usage: rootline demo [-h] [--outdir OUTDIR] [--benign BENIGN]

options:
  -h, --help       show this help message and exit
  --outdir OUTDIR  output directory (default out/)
  --benign BENIGN  number of benign sessions (default 400)