Reference

Configuration

Every knob Telar exposes, in two files: .tl-telar-thresholds.json (quality gates, autonomy, parallelism) and .tl-telar/external-tools.yaml (external AI adapters, cross-model review, and opt-in Claude Code native features). Both are created by /tl-telar:setup-orchestration; edit them by hand afterward.

Where these live. .tl-telar-thresholds.json sits at the project root and is committed. .tl-telar/external-tools.yaml lives under the git-ignored .tl-telar/ state directory. Missing files fall back to safe defaults — nothing hard-fails on absence.
Session model & cost. /tl-telar:orchestrate is a conductor that runs in your main session. Spawned agents carry their own model tier (frontmatter model:) and reviewers are pinned to Opus, but the orchestrator's own turns use whatever model /model is set to — agent frontmatter cannot override the session model. Running a long orchestrate on the most expensive model is where most of the cost comes from. Recommendation: run orchestrate on Sonnet or Opus, not the top-tier model.

.tl-telar-thresholds.json

The quality-gate contract. Framework-aware defaults are written at setup based on the detected stack (React Native / Expo / Flutter).

coverage

KeyDefaultMeaning
lines80Minimum line-coverage %.
branches75Minimum branch-coverage %.
functions80Minimum function-coverage %.
statements80Minimum statement-coverage %.

performance

KeyDefaultMeaning
min_fps60Minimum acceptable frame rate.
max_cold_start_ms3000Maximum cold-start time in milliseconds.

size

KeyDefaultMeaning
max_apk_mb50Maximum Android APK size (MB).
max_ipa_mb60Maximum iOS IPA size (MB).

accessibility

KeyDefaultMeaning
required_audit_passfalseWhen true, an accessibility audit must pass before a task completes.

autonomy

KeyDefaultMeaning
cycle"interactive"interactive: the orchestrator may pause at checkpoint: true WUs and at self-reflect. unattended: a single human gate at plan-readiness — scope + approved UI drafts + all inputs collected up front — then the WU cycle runs to PR-ready with zero pauses. Unattended never skips a decision; it makes it earlier.

execution

KeyDefaultMeaning
max_parallel_wus3How many Work Units run concurrently. A WU is dispatched only when its deps are COMPLETE and its file_scope is free (or, under worktree isolation, in its own checkout). Parallel agent runs cost roughly 15× chat tokens — keep it modest. Absent/invalid → 3.

enforcement

What blocks, and the commands the gates run. *_command pairs with a *_strict flag — advisory (log only) when false, blocking when true.

KeyDefaultMeaning
coverage_commandframework-detectede.g. npx jest --coverage, flutter test --coverage.
coverage_stricttrue when a runner is detectedBlock on coverage below threshold.
perf_commandbash scripts/perf-smoke.shPerformance smoke command (advisory stub by default).
perf_strictfalseBlock on performance regression.
size_commandbash scripts/size-check.shAPK/IPA size check (advisory stub by default).
size_strictfalseBlock on size over budget.
a11y_commandecho stubAccessibility audit command.
a11y_strictfalseBlock on accessibility failures.
blockPRCreationtrueFail gates prevent PR creation.
blockTaskCompletiontrueFail gates prevent marking a task complete.
self_reflect_per_wufalseWhen true, fire /tl-telar:self-reflect after every WU (adds a user-approval step per WU) instead of once pre-PR.
detected_frameworkat setupRecorded framework (react-native / expo / flutter / node).

.tl-telar/external-tools.yaml

External AI adapters (Codex/GPT-5.6-sol, Gemini, Kimi K3 via a native kimi CLI or a generic Anthropic-compatible compat adapter), the config-driven model roster (routing.roles + models_registry), cross-model review, budget, and opt-in Claude Code native features. Git-ignored; created only by /tl-telar:setup-orchestration. Adapters are disabled by default. Onboarding a new model is a YAML edit — no code change; resolve any role with tl-telar-external-tools.sh resolve-role <role>.

Codex plugin vs Codex adapter. Installing tl-telar@telar with codex plugin marketplace add zekiyugnak/telar-framework --ref develop loads Telar into Codex. Enabling adapters.codex here is different: it lets Telar delegate selected orchestration work to the Codex CLI, and remains opt-in.

adapters

KeyTypeMeaning
enabledboolActivate the adapter. The CLI must be installed and auth_env_var set first.
typestringOmit for a bespoke <name>.sh adapter (codex/gemini/kimi). "compat" → the generic compat.sh that drives claude against any Anthropic-compatible endpoint.
modelstringBlank = adapter's own default (Codex: ~/.codex/config.toml). e.g. "gpt-5.6-sol", "kimi-code/k3", "pro".
reasoning_effortstring (codex)gpt-5.6-sol ladder: low|medium|high|xhigh|max|ultra. Sol's default is low — set it explicitly. (gpt-5.6-sol needs codex-cli ≥ 0.144.)
base_url / api_stylestring (compat)Compat adapter endpoint, e.g. https://api.kimi.com/coding/; only api_style: anthropic is supported.
pricingobj{input_per_1m, output_per_1m} USD; model-agnostic per adapter. Omitting it is fail-closed (conservative per-task cap recorded, never a silent $0). Set 0 for a flat-subscription model.
timeout_secondsnumberAdapter invocation timeout.
auth_env_varstringEnv var the dispatcher reads for auth (e.g. OPENAI_API_KEY, GEMINI_API_KEY, KIMI_API_KEY). Native kimi/Codex use their own CLI login instead.
sandboxstring"none" — no sandbox isolation.

routing & budget

KeyDefaultMeaning
routing.rolesobjModel per pipeline role (architect|moderator|developer|reviewer|tester); each role takes model/models, optional escalation, panel, options. Single source of truth for the roster; resolved via resolve-role.
routing.models_registryobjHow each model runs: exec: claude (native tier) or exec: adapter (tool), plus tier/effort. Onboard a model = one entry here + reference it from a role.
routing.default_implementer"cheapest-available"Also round-robin, claude, or a specific tool name.
routing.escalation_order[codex, gemini, claude]--tool auto tries adapters in this order (first enabled+healthy wins).
routing.fallback_by_healthtrueA role's model whose adapter is unhealthy falls to its escalation.
routing.health_recheck_every_n_tasks10Re-run health checks periodically.
budget.per_task_usd1.00Max USD per adapter invocation; over → fall back to Claude.
budget.per_session_usd10.00Session-wide adapter spend cap.
budget.ledger_fileJSONL pathRecords every invocation for audit + budget-status.
budget.circuit_breaker_messagestringPrinted when the budget trips.

cross_model_review (Phase γ)

An additive second review: Review 1 (the Claude roster) always runs; when enabled, Review 2 runs on top with a model distinct from both the writer and Claude. Both must PASS.

KeyDefaultMeaning
enabledfalsetrue → Review 2 is required on every WU.
on_unavailable"block"block: stop if no distinct second model is ready. warn_and_proceed: skip Review 2 on Review 1 alone, logged loudly.
matrixwriter→reviewersWhich models may review each writer's diff. A model never reviews its own code.

cc_features — Claude Code native capabilities

Enabled is intent, not capability. A feature activates only when enabled: true and a runtime probe confirms the capability is really present. Otherwise Telar falls back to the current-behavior path (fail-closed), logs one line, and never hard-fails. Defaults are true because absence degrades safely — older Claude Code runs unchanged.

The gating is one tested code path — scripts/tl-telar-cc-features.sh — that the plan-review gate and the orchestrator call, rather than re-deciding it in prose.

cc_features:
  dynamic_workflows:
    enabled: true
    on_unavailable: "warn_and_proceed"
  worktree_isolation:
    enabled: true
    on_unavailable: "warn_and_proceed"
KeyDefaultMeaning
dynamic_workflows.enabledtrueRun the plan-review gate as a deterministic Workflow script (parallel() fan-out + schema-validated verdicts) when the Workflow tool is available. Both paths emit the identical aggregated verdict, so downstream is oblivious to which ran.
worktree_isolation.enabledtrueRun each parallel WU in its own git worktree so WUs with overlapping file_scope run concurrently (relaxes the disjoint constraint). Fallback: disjoint-scope serialization — slower, never wrong.
<feature>.on_unavailable"warn_and_proceed"When the capability isn't confirmed: warn_and_proceed runs the fallback (logged); block stops at preflight (use when the feature is a hard requirement).

Capability probe signals. dynamic_workflows → the Workflow tool is present in the top-level session. worktree_isolationisolation: worktree support is positively confirmed; because older Claude Code silently ignores that frontmatter, an unconfirmed probe keeps the disjoint constraint even when enabled: true — trusting the probe, never the flag.

Values you can't configure

Fixed in source, not tunable via either file:

AspectFixed value
Plan-review reviewers3 (parallel)
Design-review reviewers6 (PM, Architect, Designer, Security-Design, CTO, Mobile-Platform)
Per-WU adversarial reviewers (always-on)2 (Code + Mobile Security)
Per-WU adversarial reviewers (conditional)+2 (A11y, Performance — by file_scope)
Max gate retries3, then human escalation
Commit & pushNever automatic — the orchestrator emits COMMIT-READY and leaves it to you

Auto-managed state (don't hand-edit)

Written and maintained by the orchestrator under .tl-telar/; git-ignored working files, not durable artifacts:

FileRole
.tl-telar/plans/active-plan.mdPlan + WU list; the resume sentinel.
.tl-telar/context/execution-state.mdPer-WU phase, retry count, validation results; doubles as the resume journal.
.tl-telar/context/project-context.mdCross-WU coherence context read by later WUs.
.tl-telar/project-profile.jsonSetup sentinel — framework + plugin version captured once at setup.
.tl-telar/context/external-tools-budget.jsonlExternal-adapter spend ledger.
.worktreeincludeFiles copied into each WU worktree when isolation is active.
See also. The Orchestration deep-dive explains how these settings drive the pipeline, and how the cc_features gate chooses its path at runtime.