dataparade.config.json
Optional project config at the scan root (the directory you pass to scan <path>). The CLI loads it when present and merges it with environment variables and scan flags.
Precedence
- CLI flags override env and config.
- Environment variables override the config file for overlapping fields.
- Config file overrides built-in defaults.
Unknown or invalid fields cause a clear error when you run scan.
Minimal example
{
"projectName": "my-service",
"excludePaths": ["node_modules", "dist", ".git"],
"minimumConfidence": 0.6,
"enableAPIDetection": true,
"enableDatabaseDetection": true,
"enableDataFlowDetection": true
}dataparade config command
Prints the effective scan configuration as JSON. Optional project path: dataparade config [path] (default: current working directory). When [path] is a file, config loads from that file’s parent directory (same as scan). When SCAN_BYOK_API_KEY or config aiApiKey is set, the printed value is <redacted> so keys do not leak into logs.
Default excludes
In addition to directory skips (node_modules, .git, test trees, etc.), these file globs are excluded unless you deliberately narrow excludes (they are prepended to excludePaths):
**/.env,**/.env.*,.env,.env.*— secret-bearing env files are not scanned and are never embedded in AI provider prompts.- Common test/story spec patterns (
*.spec.ts,*.test.ts,*.stories.*, Playwright config, etc.) — seecli/src/patterns/scan-exclusions.tsin the repository.
You can add more patterns with excludePaths in config or --exclude on the command line.
Field reference
Scan and detection
projectName(string, optional) — Override inferred application/project label. Same as--project-name.excludePaths(string[], optional) — Glob-like excludes. Merged with built-in defaults.minimumConfidence(number, optional) — Confidence threshold in[0, 1]. Same as--minimum-confidence.enableAPIDetection(boolean, optional) — Include API-route/auth detections.enableDatabaseDetection(boolean, optional) — Include DB detections.enableDataFlowDetection(boolean, optional) — Run flow detection and rewiring.languages(("typescript" | "javascript" | "json" | "yaml" | "env" | "python" | "terraform")[], optional) — Language allow-list. Note:.envfiles are excluded from default ingest even whenenvis listed; useprocess.env.*patterns in source files instead.deepAnalysis(boolean, optional) — Enable deeper analyzer heuristics. Same as--deep-analysis.
Terraform
terraformJsonPath(string, optional) — Same as--terraform-json(merge savedterraform show -jsonoutput; path must resolve under the scan root).terraformPlanPath(string, optional) — Same as--terraform-plan(runterraform show -jsonon the given plan file from scan root; path must resolve under the scan root).- Terraform stack sections (on by default) — When the scan root contains HCL
*.tffiles andterraformStackSectionPathDepthis unset, the CLI infers path depthNfrommain.tflayout and registers matching directories as service sections (Terraform findings are tagged there instead ofroot). No config or flags required for typical monorepos. terraformStackSectionPathDepth(number, optional) — Override inferred depth with a fixedN(exactlyNPOSIX path segments from scan root). Example:terraform/deployments/my-service→3; or scan fromterraform/deploymentswith1for one section per child stack.autoInferTerraformStackSectionPathDepth(boolean, optional, default true) — Setfalsein config or pass--no-terraform-stack-section-autoto disable Terraform-only sections entirely.
Monorepo sections
- Monorepo package sections (on by default) — Default workspace depth is 2 (
packages/twenty-server,packages/twenty-apps, …). Override withmonorepoPackageSectionPathDepthor--monorepo-package-section-path-depth(e.g. 3 for one hub perpackages/twenty-apps/<app>). SetautoInferMonorepoPackageSectionPathDepth: falseand omit depth to infer from layout only. monorepoPackageSectionPathDepth(number, optional) — Workspace package section depth for primary packages and finding rollup.autoInferMonorepoPackageSectionPathDepth(boolean, optional) — Whenfalseand depth is unset, infer frompackage.jsonlayout only.
AI inference
See AI inference for behavior. Config keys mirror flags and env vars:
enableAiInference(boolean, optional) — Enable post-scan AI inference. Default: on. Setfalse(or use--no-ai-inference/SCAN_AI_INFERENCE=false) for structural-only scans.aiProvider("openai" | "anthropic" | "gemini" | "openrouter" | "local" | "mock", optional) — Model provider preset.aiModel(string, optional) — Model identifier sent to provider.aiApiKey(string, optional) — BYOK API key (preferSCAN_BYOK_API_KEYin env for secrets).aiEndpoint(string, optional) — Override provider endpoint URL.aiTemperature(number, optional) — Temperature in[0, 2].aiMaxTokens(number, optional) — Max output tokens requested per call.aiMaxModelCalls(number, optional) — Max provider calls per planned queue.aiBudgetTokens(number, optional) — Estimated token budget per planned queue.aiMaxCandidatesPerAgent(number, optional) — Per-agent queue cap (0means unlimited).aiProviderConcurrency(number, optional) — Max in-flight provider calls for batched enrichment queues (default 4). Platform-billed scans (DATAPARADE_WORKSPACE_API_KEY) always use 1 because the hosted API HTTP gateway times out at 30s per request.aiInferenceScope("default" | "third_party_only", optional) — Constrain inference scope.aiVerbose(boolean, optional) — Print per-proposal AI details (same as--ai-verbose).aiToolLoopMaxRounds,aiToolLoopMaxFiles,aiToolLoopMaxSearches— Tool-loop tuning (see AI inference).aiThirdPartyDataFlowEnabled(boolean, optional) — Emitmetadata.aiInference.thirdPartyDataFlowwhen AI runs.
For the full env var list, see Environment variables.