id = "ooniprobe"
name = "OONI Probe"
homepage = "https://ooni.org/"
description = "OONI Probe is free and open source software designed to measure internet censorship and other forms of network interference."
executables = ["ooniprobe"]
platforms = ["macos", "linux"]
[dotfiles]
paths = ["~/.ooniprobe/config.json", "~/.ooni/ooniprobe.conf"]
secret = []
[commands]
format = 1
label = "OONI Probe"
description = "Run censorship measurements and browse results. Autorun, upload, reset and config options are left out. The first run asks you to complete an onboarding quiz."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false }
[[commands.subcommand]]
path = ["run"]
label = "Run measurements"
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://ooni.org/support/ooni-probe-cli/"
revision = "2026-10-27"
evidence = '''
ooniprobe run
ooniprobe run im
ooniprobe run websites --input https://ooni.org/
ooniprobe run websites --input-file my-websites.txt
ooniprobe run performance
ooniprobe run circumvention
ooniprobe run middlebox
ooniprobe run experimental
ooniprobe list
ooniprobe list 4
ooniprobe show 1476
-v, --verbose (typeset with en dashes on the page) This is used to increase the verbosity of the ooniprobe command output.
'''
[[commands.subcommand.field]]
id = "group"
label = "Test group"
description = "Leave empty to run every test group in sequence."
type = "string"
position = 0
suggestions = [{ value = "websites", label = "Websites" }, { value = "im", label = "Instant messaging" }, { value = "performance", label = "Performance" }, { value = "circumvention", label = "Circumvention" }, { value = "middlebox", label = "Middleboxes" }, { value = "experimental", label = "Experimental" }]
sources = ["docs"]
[[commands.subcommand.field]]
id = "input"
label = "Website URL to test"
description = "Websites group only."
type = "url"
option = ["--input"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "input_file"
label = "File of URLs"
description = "Websites group only; one URL per row."
type = "path"
option = ["--input-file"]
path = { kind = "file", role = "input", must_exist = true }
sources = ["docs"]
[[commands.subcommand.task]]
id = "run_all"
label = "Run all tests"
fields = []
required = []
[[commands.subcommand.task]]
id = "one_site"
label = "Test one website"
fields = ["group", "input"]
required = ["group", "input"]
set = { group = ["websites"] }
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["group", "input", "input_file"]
[[commands.subcommand]]
path = ["list"]
label = "List results"
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://ooni.org/support/ooni-probe-cli/"
revision = "2026-10-27"
evidence = '''
ooniprobe run
ooniprobe run im
ooniprobe run websites --input https://ooni.org/
ooniprobe run websites --input-file my-websites.txt
ooniprobe run performance
ooniprobe run circumvention
ooniprobe run middlebox
ooniprobe run experimental
ooniprobe list
ooniprobe list 4
ooniprobe show 1476
-v, --verbose (typeset with en dashes on the page) This is used to increase the verbosity of the ooniprobe command output.
'''
[[commands.subcommand.field]]
id = "result_id"
label = "Result ID"
description = "Leave empty to list all results; give an ID to see its measurements."
type = "integer"
position = 0
sources = ["docs"]
[[commands.subcommand.task]]
id = "list_all"
label = "List results"
fields = ["result_id"]
required = []
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["result_id"]