Skip to content

Research Workflows

0sec ships a family of research commands for vulnerability discovery, each tuned to a different problem shape — seeded variant search, seedless depth review, recency-window hunting, assumption mining, spec conformance drift, protocol differential, memory-safety fuzzing, kernel-specific workflows, binary analysis, weaponization, agent-action assurance, and self-evolving detection.

Discovery leads are not proof of exploitability. Some commands also execute targets or validate imported evidence; inspect the specific verifier result, execution origin, and retained artifacts before making a disclosure claim.

TaskCommandSeed requiredTarget typeOutput
Variant hunt from a fixhunt --seedYes (fix diff)Source treeLEADS (skeptic-gated)
Seedless depth reviewdeep-reviewNoSource tree (git URL or path)LEADS (multi-lens quorum)
Recency-window kernel huntrecency-huntNo (--since / --hours)Kernel treeLEADS (invariant-engine gated)
Assumption miningassumption-huntNo (--files)Source treeCANDIDATES to disprove
Spec vs implementation driftspecdriftNo (--spec)Spec text + source treeInvariant mappings / drift hypotheses
HTTP protocol conformanceprotocol-checkNo (--spec + --impl)Live HTTP targetConfirmed/refuted divergences
Memory-safety fuzzmemsafetyNoSource tree (git URL or path)Reproduced mem-corruption findings
Kernel advisory variantkernel variant-huntAdvisory URLKernel treeFoxguard-gated variant candidates
Syzbot LPE miningkernel syzbot-mineNosyzbotRanked exploitability candidates
Syzkaller weightskernel weightsNokernelCTF targetLLM-derived choice_weights.json
XNU IOKit fuzzingxnu-fuzzNo (kext)Kext Mach-OTarget model / gate-passing inputs
Binary analysisbinaryNoCompiled artifactDelegated to 0verse
WeaponizationexploitConfirmed findingKernel VMExploit rung / root proof
Agent-action assuranceagent-assureNoAgent + MCP endpointsEvidence bundle
Self-evolving lenseslens-synthNo (miss-input)Curated missesPromoted finder lenses
Source evolutionevolve runNo (config)Source snapshotPromoted candidate versions
Research pipelineresearch pipelineNoURL/path/repo/packageEvidence-backed findings
Research mobileresearch mobileNoAPK/IPAPassive indicators
Research Linux kernelresearch linuxReproducer + findingKernel treeN-boot verified evidence

Keep three questions separate: what was hypothesized, what was observed, and who executed the target. A skeptic vote or finder quorum is not a reproduced crash. A retained HTTP observation is not proof of a kernel privilege boundary. Imported boot logs can pass validation without 0sec having executed those boots.

The shared research plane uses grades including candidate, observed, and reproduced; native commands also have their own result fields. These are not one universal three-tier schema. See Verification Results for the separate deterministic replay contract and Kernel VM Verification for privilege/provenance limits.

0sec research subcommands accept --artifact-root (default .0sec-research). Other research commands have their own --output, artifact-retention, and cache options; do not assume they share one directory layout or accept --artifact-root. The command reference lists each contract.

Keep result JSON alongside its referenced logs, inputs, and receipts. A copied summary without its referenced evidence is not a replayable evidence bundle. Source excerpts, crash logs, headers, and findings may contain sensitive data. Review them before committing or uploading artifacts.

Provider configuration belongs in API Keys and Configuration. For kernel execution, follow the VM guide’s exact 0SEC_KERNEL_QEMU_* setup; a source checkout alone is not a bootable guest.

Names beginning with a digit cannot be assigned using POSIX export. Pass them through env, for example:

Terminal window
env 0SEC_DEEP_REVIEW_MAX_CANDIDATES=16 0sec deep-review ./target-repo
  • Run only on targets you own or are authorized to test. Scope enforcement is command-specific; these commands do not all accept the scan command’s --scope. See Scope for the exact covered entry points.
  • protocol-check performs live HTTP requests. agent-assure interacts with agent, MCP, and oracle endpoints and requires all three in its scope file.
  • memsafety invokes build and fuzz tooling. binary delegates to a local subprocess. Use an isolated, disposable worker for untrusted source or binaries; neither an output directory nor a model’s instructions constitute a sandbox.
  • Kernel verification and dynamic-witness paths require real VM tooling. QEMU guests have their own kernel; host mounts and networking still depend on the selected runner. Do not infer isolation guarantees from the word “VM.”
  • evolve evaluates source candidates in credential-free, network-none Docker containers. lens-synth manages prompt lenses; it is not the same execution boundary. See Improvement Plane.
  • Research commands can write models, caches, build products, and configured outputs. Artifact directories do not constrain all host filesystem writes.
WorkflowWhat it actually does
specdrift extract, scan, planModel-assisted spec extraction and source mapping; not live protocol verification
research mobilePassive extracted APK/IPA intake; indicators remain hypotheses
research linux-matrixValidates and hashes externally executed boot logs; does not boot a VM
research linuxExecutes a supplied reproducer through the N-boot verification gate
protocol-checkExercises hypotheses against a live HTTP target
memsafetyRuns native build/fuzz tooling; unavailable prerequisites are a skipped run, not a pass
xnu-fuzz harness-planEmits a VM harness plan; does not execute the plan
exploit modesSelect distinct weaponization runners; see their execution prerequisites below

Importing evidence is not fresh execution. Conversely, an “analysis” command that launches a compiler, fuzzer, agent, or external binary is not passive intake.

The oldest and most structured research path. Takes a proven fix diff (--seed .patch) and a source tree (--source), generates variant candidate sites from the fix, fans finders out over them, and gates each finding through an adversarial skeptic.

Terminal window
0sec hunt \
--source /root/linux-6.12.93 \
--seed ./nfc-fix.patch \
--ref CVE-2025-XXXXX \
--concurrency 4 \
--max-candidates 40
FlagDescription
--source <path>Source tree to hunt in (e.g. a Linux checkout)
--seed <path>Fix diff / .patch whose bug class to hunt variants of
FlagDefaultDescription
--ref <name>Provenance label for the seed (e.g. CVE / commit)
--concurrency <N>4Max finders in flight
--max-candidates <N>40Cap candidate sites hunted
--skip-candidates <N>0Skip the first N ranked candidates
--models <a,b>Provider defaultComma-separated finder models for diversity
--reachable-onlyenv HUNT_REACHABLE_ONLYRestrict to kernelCTF-reachable paths
--reachable-preferenv HUNT_REACHABLE_PREFERSort reachable first, drop none
--no-verifySkip skeptic gate (triage only, never disclosure)
--noveltyRequire lore.kernel.org duplicate suppression
--methodologykernel-LPE methodology preset

Lens flags:

FlagDescription
--invariantLoad subsystem’s stored invariant model; inject rules into finders
--graph-sliceLoad Joern CPG reachability slice around fix site into finders
--cpg <path>Explicit CPG graphson JSON path for --graph-slice
--ops-harvest <paths>Static ops-struct initializer harvest for --graph-slice
--graph-slice-hops <N>Call-graph radius (default 3)

Prove flags (require kernel-VM artifacts):

FlagDescription
--exploitabilityRun GREBE diversify + SCAVY differential on QEMU VMs for each confirmed finding
--prove-min-ceiling <ceiling>Minimum impact ceiling: dos-only / info-leak / oob-write / uaf-control (default info-leak)

Exit codes: 0 = lead(s) found, 1 = no leads, 2 = no candidates, 3 = error.

Output is JSON with funnel counts (candidates → scanned → found → confirmed), per-finding evidence, and active warnings.

For the exhaustive flag reference, see Commands — hunt.


The “depth method”: enumerates candidate files from a prepared source tree, re-hunts each through specialized finder lenses, and gates survivors through a multi-lens verify quorum. No seed fix required.

Terminal window
0sec deep-review ./target-repo --max-candidates 16 --profile default
ProfileLensesTarget code
defaultGeneric, stack-aware finder lenses plus appsec overlaysGeneral source review
evm-onchainBespoke Solidity lens setSolidity, Foundry, Hardhat projects
solana-onchainBespoke Rust/Anchor lens setSolana Rust programs
cardano-onchainBespoke Haskell lens setCardano (Haskell) smart contracts
cairo-onchainBespoke Cairo lens setStarkware Cairo contracts
move-onchainBespoke Move lens setMove (Aptos/Sui) contracts

Findings pass through the selected profile’s independent refutation lenses. --quorum controls the voting threshold; the default is a majority of that profile’s verify lenses. The generic profile covers these checks:

LensRefutes when
reachabilityVulnerable code is unreachable from any public API
completenessThe “missing” check is enforced elsewhere on the path
novelty-known-issueStandard guard for this class is already present
scopeExploitation has no real impact
deployment-contextCode path is dev/test/build-only, not production
FlagDefaultDescription
--profile <p>defaultLens profile (evm/solana/cardano/cairo/move)
--subsystem <path>Narrow to a subdirectory
--max-candidates <N>8 (auto-scales to 20 for large repos)Cap candidates hunted
--models <a,b>Single provider modelFinder model diversity
--attempts <N>1Best-of-N attempts per candidate×lens×model
--concurrency <N>8Max finders in flight
--quorum <N>MajorityVerify lens quorum threshold
--threat-modelOffEnable pre-scan threat-model planner (trust-boundary lanes)
--evolution-config <path>Use evolved source finder with private execution receipts
--cost-ceiling <usd>Hard scan-wide USD ceiling

Exit codes: 0 = sweep completed (with or without leads), 2 = skipped (no files or review cap exceeded), 3 = error.

See Commands — deep-review for the full flag reference and Improvement Plane for the evolution-config path.


Continuous kernel-LPE discovery on the linux-next freshness window.

Pipeline: git-diff range → reachability filter → semantic-vs-cosmetic classifier → refined invariant engine → adversarial verify → ranked report.

Terminal window
# Last 24 hours, default detectors (dataflow + refcount + race)
0sec recency-hunt --tree /root/linux-next
# Explicit git range with dynamic witness (KASAN VM boots)
0sec recency-hunt \
--tree /root/linux-next \
--since HEAD~48..HEAD \
--model gpt-5.5 \
--detectors dataflow,refcount,race,dual-view \
--dynamic-witness \
--witness-candidates 5
# Scheduler mode: write dated reports to a directory
0sec recency-hunt \
--tree /root/linux-next \
--hours 24 \
--report-dir /var/reports/recency
FlagDefaultDescription
--tree <path>Kernel source tree (required)
--since <range>Git range (e.g. HEAD~20..HEAD); overrides --hours
--hours <N>24Hunt last N hours
-m, --model <model>Model-build / finder model override
--classifier-model <model>gpt-5.5Semantic-vs-cosmetic classifier
--max-hunt-files <N>25Cap files run through the engine
--detectors <list>dataflow,refcount,raceDetectors per semantic file. dual-view is opt-in
--dynamic-witnessOffKASAN VM boot oracle (implies dual-view). Expensive
--report-dir <dir>Write dated YYYY-MM-DD.{json,md} reports
--remine-assumptionsOffForce fresh assumption mine each run

Detector types:

DetectorDescription
dataflowStatic dataflow violation scanning on the invariant model
refcountInterprocedural refcount-underflow / double-put analysis
raceConcurrency-race smell detection
dual-viewAssumption-mining dual-api/cross-phase enumerator; --dynamic-witness enables VM execution and implies this detector

Exit codes: 0 = survivor(s), 1 = ran but no survivors, 2 = empty window, 3 = error.


The fourth seedless discovery axis. Mines implicit relied-on preconditions each function makes and hunts reachable callers that reach a relied-on subject without establishing its precondition — the DirtyCred / AF_UNIX-GC / io_uring shape fixed-schema checkers structurally cannot represent.

Pipeline: LLM mineAssumptionModel → 1b enforced/relied cross-check (no LLM) → establisher-propagation caller-scan (no LLM) → runHuntScan with skeptic gate.

Terminal window
# Basic run: mine assumptions in net/unix, scan callers
0sec assumption-hunt /root/linux-6.12.93 \
--files net/unix/af_unix.c,net/unix/garbage.c \
--subsystem net/unix
# With dynamic witness (KASAN VM boots for dual-view candidates)
0sec assumption-hunt /root/linux-6.12.93 \
--files net/unix/af_unix.c \
--subsystem net/unix \
--dynamic-witness \
--witness-candidates 5
# Stop after deterministic caller-scan (no LLM finder/skeptic gate)
0sec assumption-hunt /root/project \
--files src/main.c \
--skip-hunt
FlagDescription
<source-root>Local source tree the subsystem files live under
--files <a.c,b.c>Comma-separated repo-relative subsystem source files
FlagDescription
--subsystem <label>Label for the stored model (e.g. net/unix)
--remineForce fresh LLM mine even if stored model exists
--skip-huntStop after deterministic caller-scan (no LLM finder/skeptic gate)
--no-verifyRun finder fan-out but skip skeptic gate
--models <a,b>Comma-separated finder/mine models
--max-contexts <N>Cap violating contexts fed to the hunt
--no-wrapper-resolutionDisable v1 establisher-wrapper resolution (reproduces v0)
--no-finder-targetingFeed finder the whole file instead of per-function excerpts
--no-dual-viewDisable dual-api/cross-phase enumerator (v1 behavior only)
--dynamic-witnessRoute dual-view candidates to KASAN VM boot oracle
--excerpt-dir <path>Where finder-targeting excerpts are written

Funnel output:

{
"funnel": {
"mined": 45,
"kept_1b": 32,
"dropped_1b": 13,
"violating_contexts": 8,
"dual_view_contexts": 3,
"confirmed": 1
}
}

Exit codes: 0 = pipeline ran (with or without a candidate), 3 = error.


Extract cited protocol invariants from an arbitrary spec text file and map them to candidate implementation code.

Extract invariants only (no source tree needed):

Terminal window
0sec specdrift extract \
--spec ./rfc-9110-excerpt.txt \
--max-invariants 40 \
--output invariants.json

Extract invariants and map them to implementation code:

Terminal window
0sec specdrift scan \
--spec ./rfc-9110.txt \
--source /path/to/http-server \
--max-files 400

Extract invariants, map candidates, and emit drift hypotheses:

Terminal window
0sec specdrift plan \
--spec ./rfc-9110.txt \
--source /path/to/http-server \
--max-hypotheses 20
Flagextractscanplan
--spec <path>RequiredRequiredRequired
--source <path-or-url>RequiredRequired
--max-invariants <N>404040
--max-files <N>400400
--max-candidates-per-invariant <N>55
--max-hypotheses <N>20

See Commands — specdrift.


Protocol conformance check (protocol-check)

Section titled “Protocol conformance check (protocol-check)”

Reads spec + implementation source excerpts, hypothesizes where the implementation diverges from the spec, then exercises each hypothesis against a live target with a deterministic oracle.

Terminal window
0sec protocol-check \
--spec ./rfc-9110-excerpt.txt \
--impl ./server-parse.c \
--target http://127.0.0.1:8080 \
--json
FlagDescription
--spec <file>Authoritative specification excerpt
--impl <file>Implementation source excerpt
--target <url>Base URL of the live target
FlagDefaultDescription
--jsonEmit full result as JSON on stdout
--max-exercises <N>8Cap hypotheses exercised against target
--runtime <runtime>autoLLM runtime
--protocol <name>HTTP/1.1Protocol name for the report
--spec-version <version>RFC 9110Spec edition
--spec-ref <ref>Auditable spec citation

Exit codes: 0 = confirmed divergence(s), 1 = ran, no divergences, 2 = no validated model, 3 = error.

Only MUST-level violations backed by a concrete observation are reported as confirmed. See Commands — protocol-check.


Clone a source tree, auto-detect the build system and language, build a sanitizer/fuzz harness, run a closed fuzz loop, and emit crashed findings.

Terminal window
# C/C++ with CMake
0sec memsafety https://github.com/user/repo.git --fuzz-timeout 120
# Rust with cargo-fuzz
0sec memsafety /path/to/rust-crate --language rust --miri
# Narrow to a subdirectory with artifact retention
0sec memsafety /path/to/repo \
--subsystem src/network \
--artifact-dir ./memsafety-evidence \
--artifact-max-bytes 4194304

Auto-detected from marker files in the source root:

LanguageMarker file
RustCargo.toml
C/C++ CMakeCMakeLists.txt
C/C++ Autotoolsconfigure.ac or Makefile.am
C/C++ Mesonmeson.build
C/C++ MakeMakefile

Override with --language c|cpp|rust and --build-system cargo|cmake|autotools|meson|make.

FlagDefaultDescription
--subsystem <path>Narrow scan root to a subdirectory
--language <lang>Auto-detectedForce: c, cpp, or rust
--build-system <sys>Auto-detectedForce: cargo, cmake, autotools, meson, make
--harness <name>libFuzzer / cargo-fuzz harness target
--fuzz-dir <path>Non-standard cargo-fuzz directory
--mirifalseRun cargo +nightly miri for UB detection
--fuzz-timeout <sec>60Fuzz wall-clock budget
--artifact-dir <path>Persist crash evidence outside source tree
--artifact-max-bytes <bytes>4194304Aggregate byte ceiling for retained evidence

Exit codes: 0 = loop completed (with or without crashes), 2 = skipped (no build system or execution prerequisite unavailable), 3 = error.

See Commands — memsafety.


Three subcommands for Linux kernel-specific workflows:

Mine and LPE-rank syzbot’s invalid/auto-closed queue for kernelCTF-eligible candidates:

Terminal window
0sec kernel syzbot-mine \
--subsystems net,net/sched,xfrm \
--limit 30 \
--details 15

Foxguard-backed advisory variant hunting:

Terminal window
0sec kernel variant-hunt \
--tree /root/linux-6.12.93 \
--advisory ./advisory.txt \
--rules rules/kernel/dirty-frag-class \
--foxguard /usr/local/bin/foxguard \
--output json

Or reuse an existing Foxguard SARIF:

Terminal window
0sec kernel variant-hunt \
--tree /root/linux-6.12.93 \
--sarif-input ./foxguard-results.sarif \
--output terminal

Generate LLM-derived choice_weights.json for syzkaller on a kernelCTF target:

Terminal window
0sec kernel weights \
--target 6.12.101 \
--crash-summary ./recent-crashes.txt \
--max-entries 48 \
--out choice_weights.json

See Commands — kernel.


Three-part workflow for IOKit user-client fuzzing on macOS. Operates offline (model + generate locally); the VM run lane requires an Apple Silicon macOS VM.

Terminal window
0sec xnu-fuzz enumerate \
--kext ./IOSurface.kext \
--bundle com.apple.iokit.IOSurface \
--out target-model.json
Terminal window
0sec xnu-fuzz gen \
--model target-model.json \
--seed 42 \
--json
Terminal window
0sec xnu-fuzz harness-plan \
--golden "<golden-macos-vm>" \
--oracle kasan

See Commands — xnu-fuzz.


Delegates to the in-repo 0verse engine (Python, uv run --frozen 0verse):

Terminal window
# Triage a compiled ELF
0sec binary ./target.elf --mode triage
# Run full scan with a specific backend
0sec binary ./target.elf --mode scan --backend ghidra
# Forward extra args to 0verse
0sec binary ./target.elf --mode triage -- --format ndjson
ModeDescription
triageQuick triage of the artifact
runRun analysis
scanFull scan
BackendDescription
rizinRizin-based analysis
ghidraGhidra headless analysis
angrangr symbolic analysis

Requires uv on PATH and the 0verse/ directory present in the repo. See Commands — binary.


Takes a confirmed kernel memory-safety finding, classifies the exploitation primitive, and runs the escalation ladder through the kernel-VM harness.

Without the required kernel-VM artifacts, the default weaponization harness can return skipped (exit 2). This is not a promise that every mode is static or harmless on a provisioned host.

Terminal window
# Default weaponization runner (requires its kernel-VM prerequisites)
0sec exploit --finding ./finding.json --reproducer ./repro.c
# Engine-driven root climb with real QEMU boots
0sec exploit --finding ./finding.json --climb --loop-boots 8 \
--vmlinux ./vmlinux --freed-struct snd_rawmidi_runtime
# Autonomous LLM-composed weaponization
0sec exploit --autoclimb \
--bug-spec ./bug-spec.json \
--boot-script ./boot.sh
# Agentic weaponization loop (model gets a shell)
0sec exploit --agent \
--task ./vuln-description.json \
--container my-exploit-env \
--flag-pattern '^flag\{'
ModeFlagWhat it does
Default(none)Classify the primitive and invoke the weaponization runner; not a static-only switch
Engine climb--climbREAL verify→weaponization chain, loop boots until root oracle credits
Autoclimb--autoclimbLLM codegen loop: compose C from technique library + bug trigger + last verdict
Agentic--agentModel gets a shell, iterates recon→weaponize→build→run with stage gates

Default runner exit codes: 0 = root reached, 1 = climbed below root, 2 = skipped (no kernel-VM artifacts or applicable strategy), 3 = error. Autoclimb and agent modes delegate to their own runners; do not assume the default runner’s exit-code meanings apply to every mode.

See Commands — exploit.


Drive an agent endpoint, MCP endpoint, and an oracle under a scoped policy, then write a replayable evidence bundle.

Terminal window
0sec agent-assure \
--agent-endpoint http://localhost:8080/agent \
--mcp-endpoint http://localhost:8081/mcp \
--oracle-endpoint http://localhost:8082/state \
--scenario ./scenario.json \
--scope ./scope.json \
--target-version v1.2.3 \
--policy-version v1.0.0 \
--model-version gpt-5.5 \
--environment staging \
--output ./evidence-bundle
FlagDescription
--agent-endpoint <url>Customer-owned agent test adapter endpoint
--mcp-endpoint <url>Authorized MCP tools/list endpoint
--oracle-endpoint <url>Customer-owned state-observer endpoint
--scenario <path>Scenario JSON (id, title, injection_vector, benign_task, payload, prohibited_action)
--scope <path>Engagement scope JSON; all three endpoints must be in scope
--target-version <version>Version of the tested agent deployment
--policy-version <version>Version of the agent prompt and authorization policy
--model-version <version>Model deployment identifier
--environment <name>local, test, or staging

Exit codes: observed = 1, not_observed = 0, inconclusive / error = 2.

See Adversarial Evals for the conceptual background and Commands — agent-assure for the full reference.


Evolves additive appsec finder lenses from curated misses into a user-owned durable overlay registry (~/.0sec/lenses/appsec-archetypes.json).

Terminal window
# One-shot: process miss-input, validate, optionally promote
0sec lens-synth \
--miss-input ./misses.json \
--promote \
--model gpt-5.5
# Watch mode: poll the miss-input file, process each revision
0sec lens-synth \
--miss-input ./misses.json \
--watch \
--poll-interval 5000
# Inspect the durable overlay registry
0sec lens-synth --status
# Retire a promoted lens
0sec lens-synth --rollback memcpy-overrun-v1
FlagDefaultDescription
--miss-input <path>Curated miss-input JSON
--registry <path>~/.0sec/lenses/...Durable overlay path
--max-register <n>Cap promoted champions per input revision
-m, --model <id>Synthesis model override
--promotefalsePersist validated champion to durable overlay
--trials <n>2Repeated validation trials
--watchfalsePoll miss-input for new revisions
--poll-interval <ms>2000Watch polling interval (minimum 100ms)
--statusShow active overlay and promotion ledger
--rollback <lens-id>Retire one previously promoted overlay lens

Registry promotions land in the user-owned durable overlay, never the bundled appsec registry. Promoted lenses become available to subsequent deep-review invocations. See Improvement Plane.


Four subcommands under 0sec research for importing, executing, and binding research evidence:

Run the existing web/AI/source/package pipeline through the shared evidence research plane:

Terminal window
0sec research pipeline \
--target https://example.com \
--target-type web-app \
--depth deep
FlagDescription
--target <target>URL, local path, repository, package, or image
--target-type <type>url, web-app, source-code, npm-package, pypi-package, cargo-package, or oci-image
--profile <profile>Source review profile
--depth <depth>quick, default, or deep
--runtime <runtime>auto, api, claude, codex, gemini, or ollama

Passive mobile intake (APK/IPA). Indicators remain hypotheses; only scoped adapters may hand off targets:

Terminal window
0sec research mobile --target ./extracted-apk

Import externally executed vulnerable-vs-patched boot logs. 0sec validates and hashes them but does not execute boots:

Terminal window
0sec research linux-matrix \
--matrix ./boot-matrix.json \
--finding ./finding.json

Run a supplied kernel reproducer through the shared N-boot evidence gate:

Terminal window
0sec research linux \
--kernel-tree /root/linux-6.12.93 \
--reproducer ./repro.c \
--finding ./finding.json \
--expected-signature "kernel BUG at mm/slub.c" \
--boots 3 \
--min-hits 2
FlagDescription
--kernel-tree <path>Linux source tree
--reproducer <path>C reproducer or syzkaller .syz program
--finding <path>Existing Finding JSON to bind the proof to
--expected-signature <literal>Crash signature every counted boot must contain
--boots <n>Fresh boots (default 3)
--min-hits <n>Required reproducing boots (default 2)

Self-improving source code through propose → evaluate → promote cycle. See Improvement Plane for the full config reference, trust boundary, and promotion gates.

Terminal window
# One-off evolution run
0sec evolve run --config ./evolution.json --allow-source-access
# Watch mode: sequential passes, stop on any failed pass
0sec evolve run --config ./evolution.json --watch --auto-promote
# Execute the active version against a specific input
0sec evolve exec --config ./evolution.json --run-id <id> --input '{"n": 4}'

See Commands — evolve.


PageContent
ArchitectureAgent loop design, triage pipeline, verification chain
CommandsComplete CLI reference for every flag
Kernel VM VerificationQEMU guest build, config env vars, batch validation
Improvement PlaneSource evolution trust boundaries, config shape, promotion gates
Adversarial EvalsAttack-driven evaluation for AI agent systems
ScopeEngagement scope JSON matching, deny precedence, network scope
Verification ResultSchema, trust chain, replay
ConfigurationCLI config file reference
API KeysProvider credential setup