.trellis/config.yaml is the project-level configuration file for Trellis runtime behavior. It controls session journal commits, task lifecycle hooks, package mapping, and Codex dispatch mode.Track this file with the repo. Treat it as shared team configuration, not as a place for per-machine identity or secrets. Per-machine identity belongs in .trellis/.developer; credentials should stay in environment variables or your normal secret manager.
Most sections are optional. Leave commented examples commented until you need them, and edit only the keys your project actually uses.Use normal YAML values:
session_commit_message: 'chore: record journal'max_journal_lines: 2000session_auto_commit: false
When a key is absent, Trellis uses its built-in default. Keep indentation consistent for nested blocks such as hooks, packages, and codex.
Hook commands live in tracked project configuration. Do not put tokens, API keys, or
machine-specific absolute paths in .trellis/config.yaml.
session_commit_message and max_journal_lines apply to session journal recording:
session_commit_message: 'chore: record journal'max_journal_lines: 2000
Use session_commit_message if your repo has a conventional commit style for Trellis journal commits. Use max_journal_lines to keep .trellis/workspace/<developer>/journal-N.md files at a reviewable size.
session_auto_commit controls whether Trellis scripts touch git for journal and task archive bookkeeping:
session_auto_commit: false
Default true preserves the normal behavior: add_session.py and task.py archive write files, stage the Trellis changes, and create bookkeeping commits. Set it to false when .trellis/ is intentionally gitignored or when your team wants to review and commit Trellis bookkeeping manually.Accepted values are true, false, yes, no, 1, 0, on, and off (case-insensitive). Invalid values fall back to true and print a warning.
Supported events are after_create, after_start, after_finish, and after_archive. Hook failures print a warning but do not block the main task operation.
Use type: submodule for git submodules. Use git: true when a subdirectory is its own independent git repository, as in polyrepo or meta-repo layouts.default_package must match a key under packages. Trellis uses it when a task or command does not specify a package.
update.skip is still supported for projects that already use it, even though the current template no longer includes a commented example:
update: skip: - .claude/commands/ - docs-site/
During normal trellis update runs, skipped paths are excluded from template writes and safe-file-delete cleanup. During breaking migrations that you run with --migrate, Trellis can bypass update.skip for migration-required cleanup so the project does not stay half-updated; the update command prints a warning before doing this.
codex.dispatch_mode is only read by Codex workflows. Other platforms ignore it.
codex: dispatch_mode: inline # or "sub-agent" to dispatch trellis-* sub-agents
inline keeps implementation and checking in the main Codex agent. sub-agent opts into the older dispatch model where the main agent launches trellis-implement, trellis-check, or trellis-research sub-agents.The default is inline because Codex sub-agents run in isolated turns and cannot inherit the parent session’s full task context. Use sub-agent only when you explicitly want that legacy split.
trellis init writes the current template for new projects. For existing projects, trellis update preserves local edits to .trellis/config.yaml instead of replacing the file wholesale.When a release adds a new config section, the migration manifest can declare it through configSectionsAdded. During trellis update, Trellis checks whether the configured sentinel text already appears in the target file. If the sentinel is missing, Trellis appends the matching section from the bundled template to the end of .trellis/config.yaml.This append-only path is idempotent and preserves your existing values. The session_auto_commit section was delivered this way for existing projects: if session_auto_commit: was missing, trellis update appended the commented section; if it was already present, update skipped it.After an update, review any appended commented section and uncomment only the keys you want to activate.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Trellis Doc","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/mindfold/bqj-FQTDA-Gh0h6g/logo/light.svg?fit=max\u0026auto=format\u0026n=bqj-FQTDA-Gh0h6g\u0026q=85\u0026s=4f3e567a1573dcafba24aea3ef6a86bb","dark":"https://mintcdn.com/mindfold/bqj-FQTDA-Gh0h6g/logo/dark.svg?fit=max\u0026auto=format\u0026n=bqj-FQTDA-Gh0h6g\u0026q=85\u0026s=9511f931e64e2a574bb5f5a0303f7064"},"favicon":"https://mintcdn.com/mindfold/bqj-FQTDA-Gh0h6g/favicon.svg?fit=max\u0026auto=format\u0026n=bqj-FQTDA-Gh0h6g\u0026q=85\u0026s=e72e7fffd506b718ec7da84cad425784","navbar":{"links":[{"href":"/changelog/v0.6.17","label":"Changelog"},{"href":"/blog","label":"Tech Blog"}],"primary":{"type":"button","label":"GitHub","href":"https://github.com/mindfold-ai/Trellis"}},"footer":{"socials":{"x":"https://x.com/_kleinhe","github":"https://github.com/mindfold-ai/Trellis"}},"banner":{"content":"📦 Reading **Beta** docs (0.7 track). Check your install: `trellis --version`. Install latest beta: `npm install -g @mindfoldhq/trellis@beta`. Switch to **Release** in the version dropdown ↘","dismissible":true},"contextual":{"options":["chatgpt","claude","perplexity"],"display":"header"},"interaction":{"drilldown":true},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/mindfold-ai/Trellis"}]},"languages":[{"language":"en","href":"beta"},{"language":"zh","href":"zh/beta"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mindfold","hasAudioNarration":false,"actualSubdomain":"mindfold","customDomains":["docs.trytrellis.app"],"gitSource":{"type":"github","owner":"mindfold-ai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aa4416f86f74add6e51e4a3","collectionId":"b4f09f2d-8e6f-450b-bf71-4130430b4f12","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aa4416f86f74add6e51e4a3"},"entitlements":{},"buildId":"6aa4416f86f74add6e51e4a3","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"en","tag":"Community","count":148},{"language":"zh","tag":"社区","count":148},{"language":"en","tag":"Changelog","count":139},{"language":"zh","tag":"Changelog","count":139},{"language":"en","tag":"Advanced","count":36},{"language":"zh","tag":"进阶","count":36},{"language":"en","tag":"Start Here","count":10},{"language":"zh","tag":"开始使用","count":10},{"language":"en","tag":"Resource Marketplace","count":9},{"language":"zh","tag":"Resource Marketplace","count":9},{"language":"en","tag":"Skills","count":5},{"language":"zh","tag":"Skills","count":5},{"language":"en","tag":"Showcase","count":4},{"language":"en","tag":"Spec Templates","count":4},{"language":"zh","tag":"项目展示","count":4},{"language":"zh","tag":"Spec Templates","count":4},{"language":"en","tag":"Tech Blog","count":3},{"language":"zh","tag":"Tech Blog","count":3},{"language":"en","tag":"Contributing","count":2},{"language":"zh","tag":"贡献指南","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":"img[src*=\"cloudfront.net/flags\"]{display:none!important}button[aria-haspopup=\"menu\"]>div:first-child{display:none!important}[role=\"menuitem\"]>div:first-child{display:none!important}pre code{font-family:Menlo, Monaco, \"Courier New\", monospace!important}pre.cjk-diagram{display:block!important;padding:14px 16px;border-radius:16px;font-size:14px;line-height:24px;font-family:Menlo, Monaco, \"Courier New\", monospace;overflow-x:auto;white-space:pre;margin:16px 0;background:#f8f8f8;color:#1e1e1e}.dark pre.cjk-diagram{background:#1e1e1e;color:#d4d4d4}pre.cjk-diagram b{display:inline-block;width:2ch;text-align:center;font-weight:normal}.td-wrap{position:relative;max-width:56rem;margin:2rem auto;padding:0 1rem}.td-inner{position:relative}.td-glow{position:absolute;inset:-24px;border-radius:16px;opacity:0.5;filter:blur(64px);pointer-events:none;background:radial-gradient(at 50% 0%, rgba(139,92,246,0.08), transparent 70%)}.td-window{position:relative;overflow:hidden;border-radius:10px;border:1px solid rgba(255,255,255,0.12);box-shadow:0 25px 50px -12px rgba(0,0,0,0.6)}.td-titlebar{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid rgba(255,255,255,0.08);background:#1c1a2e}.td-dots{display:flex;gap:7px}.td-dot{width:11px;height:11px;border-radius:50%}.td-dot-r{background:#ff5f57}.td-dot-y{background:#febc2e}.td-dot-g{background:#28c840}.td-body{height:280px;overflow-y:auto;background:#13111e;padding:20px;padding-bottom:160px;font-family:'Menlo', 'Monaco', 'Courier New', monospace;font-size:13px;line-height:28px}.td-body::-webkit-scrollbar{width:6px}.td-body::-webkit-scrollbar-track{background:transparent}.td-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.08);border-radius:3px}.td-line{opacity:0;transform:translateY(4px);animation:tdFadeIn 0.4s ease-out forwards}@keyframes tdFadeIn{to{opacity:1;transform:translateY(0)}}.td-line-user{margin:6px -8px 0;padding:2px 8px 2px calc(8px - 2px);color:#fff;border-left:2px solid rgba(167,139,250,0.4);background:rgba(139,92,246,0.08);border-radius:4px}.td-line-user .td-prompt{color:#34d399;font-weight:bold}.td-line-user .td-cmd{color:#c4b5fd}.td-line-ai{color:#d4d4d4}.td-line-ai .td-bullet{color:#34d399}.td-line-sub{color:#a3a3a3;padding-left:18px}.td-line-sub .td-bullet{color:#737373}.td-tool-name{color:#34d399;font-weight:500}.td-tool-args{color:#a3a3a3}.td-link{color:#38bdf8}.td-success{color:#34d399}.td-dim{color:#737373}.td-line-agent{color:#d4d4d4;padding-left:4px}.td-agent-icon{color:#a78bfa;font-size:10px}.td-agent-name{color:#fff;font-weight:700;letter-spacing:0.01em}.td-agent-desc{color:#a3a3a3;font-weight:400}.td-line-loading{padding-left:18px;color:#737373;opacity:0;animation:tdFadeIn 0.4s ease-out forwards}.td-highlight{margin:0 -8px;padding:0 8px 0 calc(8px - 2px);border-left:2px solid rgba(167,139,250,0.4);background:rgba(139,92,246,0.12);border-radius:4px}.td-cursor{display:inline-block;width:2px;height:1.1em;margin-left:1px;background:#fff;vertical-align:text-bottom;animation:tdBlink 1s step-end infinite}@keyframes tdBlink{0%,49%{opacity:1}50%,100%{opacity:0}}.td-d0{animation-delay:0.5s}.td-d1{animation-delay:1.1s}.td-d2{animation-delay:1.8s}.td-d3{animation-delay:2.8s}.td-d4{animation-delay:3.4s}.td-d5{animation-delay:4.6s}.td-d6{animation-delay:6.6s}.td-d7{animation-delay:8.0s}.td-d8{animation-delay:9.2s}.td-d9{animation-delay:10.4s}.td-d10{animation-delay:12.0s}.td-d11{animation-delay:14.0s}.td-d12{animation-delay:15.3s}.td-d13{animation-delay:16.8s}.td-d14{animation-delay:18.8s}.td-d15{animation-delay:21.5s}.td-d16{animation-delay:22.1s}.td-d17{animation-delay:23.3s}.td-d18{animation-delay:24.3s}.td-d19{animation-delay:24.9s}.td-d20{animation-delay:26.1s}.td-d21{animation-delay:27.1s}.td-d22{animation-delay:28.3s}.td-timeline{position:relative;display:flex;align-items:center;justify-content:space-between;padding:20px 8px;margin-top:24px;user-select:none}.td-timeline-track{position:absolute;left:8px;right:8px;top:50%;height:1px;transform:translateY(-50%);background:rgba(255,255,255,0.10)}.td-timeline-fill{position:absolute;left:8px;right:8px;top:50%;height:1px;transform:translateY(-50%) scaleX(0);transform-origin:left;background:rgba(167,139,250,0.4);animation:tdFill 28.3s ease-out 0.5s forwards}@keyframes tdFill{0%{transform:translateY(-50%) scaleX(0)}1.7%{transform:translateY(-50%) scaleX(0)}9.7%{transform:translateY(-50%) scaleX(0.167)}15.9%{transform:translateY(-50%) scaleX(0.333)}41.4%{transform:translateY(-50%) scaleX(0.5)}57.9%{transform:translateY(-50%) scaleX(0.667)}74.1%{transform:translateY(-50%) scaleX(0.833)}85.9%{transform:translateY(-50%) scaleX(1)}100%{transform:translateY(-50%) scaleX(1)}}.td-step-dot{position:relative;z-index:10;width:8px;height:8px;border-radius:50%;background:rgba(167,139,250,0.5);border:none;padding:0;cursor:pointer;opacity:0;animation:tdDotIn 0.3s ease-out forwards;transition:transform 0.2s, background 0.2s, box-shadow 0.2s}.td-step-dot:hover{transform:scale(1.75);background:rgba(196,181,253,0.6)}@keyframes tdDotIn{to{opacity:1}}.td-step-dot:nth-child(3){animation-delay:0.5s}.td-step-dot:nth-child(4){animation-delay:2.8s}.td-step-dot:nth-child(5){animation-delay:4.6s}.td-step-dot:nth-child(6){animation-delay:12.0s}.td-step-dot:nth-child(7){animation-delay:16.8s}.td-step-dot:nth-child(8){animation-delay:21.5s}.td-step-dot:nth-child(9){animation-delay:24.3s}.td-step-dot:last-child{animation:tdDotIn 0.3s ease-out forwards, tdDotGlow 0.5s ease-out 27.1s forwards}@keyframes tdDotGlow{to{transform:scale(1.5);background:#a78bfa;box-shadow:0 0 12px rgba(167,139,250,0.3)}}.td-dot-done{opacity:1!important;background:rgba(167,139,250,0.5)}.td-dot-current{opacity:1!important;transform:scale(1.5);background:#a78bfa;box-shadow:0 0 12px rgba(167,139,250,0.3)}.td-dot-future{opacity:1!important;background:rgba(167,139,250,0.25)}.td-descs{position:relative;min-height:56px;padding:0 8px}.td-desc{position:absolute;top:0;left:8px;right:8px;opacity:0}.td-desc-title{font-size:15px;font-weight:600;color:#7c3aed;margin:0}.dark .td-desc-title{color:#a78bfa}.td-desc-text{font-size:14px;line-height:1.7;color:#3f3f46;margin:4px 0 0 0}.dark .td-desc-text{color:#d4d4d8}@keyframes tdDescShow{0%{opacity:0;transform:translateY(4px)}10%{opacity:1;transform:translateY(0)}88%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(0)}}@keyframes tdDescStay{0%{opacity:0;transform:translateY(4px)}15%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}.td-desc-0{animation:tdDescShow 2.3s ease forwards;animation-delay:0.5s}.td-desc-1{animation:tdDescShow 1.8s ease forwards;animation-delay:2.8s}.td-desc-2{animation:tdDescShow 7.4s ease forwards;animation-delay:4.6s}.td-desc-3{animation:tdDescShow 4.8s ease forwards;animation-delay:12.0s}.td-desc-4{animation:tdDescShow 4.7s ease forwards;animation-delay:16.8s}.td-desc-5{animation:tdDescShow 3.5s ease forwards;animation-delay:21.5s}.td-desc-6{animation:tdDescStay 4.0s ease forwards;animation-delay:24.3s}.td-descs-ctrl .td-desc{animation:none!important;opacity:0!important;display:none!important}.td-descs-ctrl .td-desc-active{opacity:1!important;display:block!important;transform:translateY(0)}"}],"page":{"pagePath":"advanced/configuration","slug":"/advanced/configuration","pageMetadata":{"title":"Configure .trellis/config.yaml","sidebarTitle":"Configuration","description":"Learn how Trellis reads .trellis/config.yaml, which keys matter, and how updates add new configuration sections safely.","href":"/advanced/configuration"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Learn how Trellis reads .trellis/config.yaml, which keys matter, and how updates add new configuration sections safely.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(Heading,{level:`2`,id:`configure-trellis/config-yaml`,children:[`Configure `,_jsx(_components.code,{children:`.trellis/config.yaml`})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`.trellis/config.yaml`}),` is the project-level configuration file for Trellis runtime behavior. It controls session journal commits, task lifecycle hooks, package mapping, and Codex dispatch mode.`]}),`\n`,_jsxs(_components.p,{children:[`Track this file with the repo. Treat it as shared team configuration, not as a place for per-machine identity or secrets. Per-machine identity belongs in `,_jsx(_components.code,{children:`.trellis/.developer`}),`; credentials should stay in environment variables or your normal secret manager.`]}),`\n`,_jsx(Heading,{level:`2`,id:`edit-safely`,children:`Edit safely`}),`\n`,_jsx(_components.p,{children:`Most sections are optional. Leave commented examples commented until you need them, and edit only the keys your project actually uses.`}),`\n`,_jsx(_components.p,{children:`Use normal YAML values:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`session_commit_message`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'chore: record journal'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`max_journal_lines`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2000`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`session_auto_commit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`When a key is absent, Trellis uses its built-in default. Keep indentation consistent for nested blocks such as `,_jsx(_components.code,{children:`hooks`}),`, `,_jsx(_components.code,{children:`packages`}),`, and `,_jsx(_components.code,{children:`codex`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Hook commands live in tracked project configuration. Do not put tokens, API keys, or\nmachine-specific absolute paths in `,_jsx(_components.code,{children:`.trellis/config.yaml`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`current-keys`,children:`Current keys`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Key`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`What it controls`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`session_commit_message`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`\"chore: record journal\"`})}),_jsxs(_components.td,{children:[`Commit message used by `,_jsx(_components.code,{children:`add_session.py`}),` when it auto-commits journal and index changes.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`max_journal_lines`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`2000`})}),_jsx(_components.td,{children:`Maximum lines per journal file before Trellis rotates to the next journal file.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`session_auto_commit`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsxs(_components.td,{children:[`Whether `,_jsx(_components.code,{children:`add_session.py`}),` and `,_jsx(_components.code,{children:`task.py archive`}),` auto-stage and auto-commit Trellis journal / task archive changes.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`hooks`})}),_jsx(_components.td,{children:`unset`}),_jsx(_components.td,{children:`Shell commands that run after task lifecycle events.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`packages`})}),_jsx(_components.td,{children:`unset`}),_jsx(_components.td,{children:`Package declarations for monorepos, submodules, and polyrepo-style directories.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`default_package`})}),_jsx(_components.td,{children:`unset`}),_jsx(_components.td,{children:`Fallback package when a command or task does not specify one.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`update.skip`})}),_jsx(_components.td,{children:`unset`}),_jsxs(_components.td,{children:[`Legacy update exclusion list that `,_jsx(_components.code,{children:`trellis update`}),` still honors during normal updates.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`codex.dispatch_mode`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`inline`})}),_jsxs(_components.td,{children:[`Codex-only choice between main-agent implementation and legacy `,_jsx(_components.code,{children:`trellis-*`}),` sub-agent dispatch.`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`session-recording`,children:`Session recording`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`session_commit_message`}),` and `,_jsx(_components.code,{children:`max_journal_lines`}),` apply to session journal recording:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`session_commit_message`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'chore: record journal'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`max_journal_lines`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2000`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`session_commit_message`}),` if your repo has a conventional commit style for Trellis journal commits. Use `,_jsx(_components.code,{children:`max_journal_lines`}),` to keep `,_jsx(_components.code,{children:`.trellis/workspace/\u003cdeveloper>/journal-N.md`}),` files at a reviewable size.`]}),`\n`,_jsx(Heading,{level:`3`,id:`session-auto-commit`,children:`Session auto-commit`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`session_auto_commit`}),` controls whether Trellis scripts touch git for journal and task archive bookkeeping:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`session_auto_commit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Default `,_jsx(_components.code,{children:`true`}),` preserves the normal behavior: `,_jsx(_components.code,{children:`add_session.py`}),` and `,_jsx(_components.code,{children:`task.py archive`}),` write files, stage the Trellis changes, and create bookkeeping commits. Set it to `,_jsx(_components.code,{children:`false`}),` when `,_jsx(_components.code,{children:`.trellis/`}),` is intentionally gitignored or when your team wants to review and commit Trellis bookkeeping manually.`]}),`\n`,_jsxs(_components.p,{children:[`Accepted values are `,_jsx(_components.code,{children:`true`}),`, `,_jsx(_components.code,{children:`false`}),`, `,_jsx(_components.code,{children:`yes`}),`, `,_jsx(_components.code,{children:`no`}),`, `,_jsx(_components.code,{children:`1`}),`, `,_jsx(_components.code,{children:`0`}),`, `,_jsx(_components.code,{children:`on`}),`, and `,_jsx(_components.code,{children:`off`}),` (case-insensitive). Invalid values fall back to `,_jsx(_components.code,{children:`true`}),` and print a warning.`]}),`\n`,_jsx(Heading,{level:`3`,id:`task-lifecycle-hooks`,children:`Task lifecycle hooks`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`hooks`}),` runs shell commands after task lifecycle events. Each command receives `,_jsx(_components.code,{children:`TASK_JSON_PATH`}),`, pointing at the task’s `,_jsx(_components.code,{children:`task.json`}),`.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`hooks`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` after_create`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"echo 'Task created'\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` after_start`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"echo 'Task started'\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` after_finish`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"echo 'Task finished'\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` after_archive`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"echo 'Task archived'\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Supported events are `,_jsx(_components.code,{children:`after_create`}),`, `,_jsx(_components.code,{children:`after_start`}),`, `,_jsx(_components.code,{children:`after_finish`}),`, and `,_jsx(_components.code,{children:`after_archive`}),`. Hook failures print a warning but do not block the main task operation.`]}),`\n`,_jsx(Heading,{level:`3`,id:`packages-and-default-package`,children:`Packages and default package`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`packages`}),` declares project structure for monorepos and repos with multiple working directories:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`13`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`packages`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` frontend`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` path`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`packages/frontend`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` backend`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` path`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`packages/backend`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` docs`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` path`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`docs-site`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`submodule`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` webapp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` path`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`./webapp`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` git`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`default_package`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`frontend`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`type: submodule`}),` for git submodules. Use `,_jsx(_components.code,{children:`git: true`}),` when a subdirectory is its own independent git repository, as in polyrepo or meta-repo layouts.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`default_package`}),` must match a key under `,_jsx(_components.code,{children:`packages`}),`. Trellis uses it when a task or command does not specify a package.`]}),`\n`,_jsx(Heading,{level:`3`,id:`update-skip-compatibility`,children:`Update skip compatibility`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`update.skip`}),` is still supported for projects that already use it, even though the current template no longer includes a commented example:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`update`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` skip`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`.claude/commands/`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`docs-site/`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`During normal `,_jsx(_components.code,{children:`trellis update`}),` runs, skipped paths are excluded from template writes and safe-file-delete cleanup. During breaking migrations that you run with `,_jsx(_components.code,{children:`--migrate`}),`, Trellis can bypass `,_jsx(_components.code,{children:`update.skip`}),` for migration-required cleanup so the project does not stay half-updated; the update command prints a warning before doing this.`]}),`\n`,_jsx(Heading,{level:`3`,id:`codex-dispatch-mode`,children:`Codex dispatch mode`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`codex.dispatch_mode`}),` is only read by Codex workflows. Other platforms ignore it.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`codex`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` dispatch_mode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`inline`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # or \"sub-agent\" to dispatch trellis-* sub-agents`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`inline`}),` keeps implementation and checking in the main Codex agent. `,_jsx(_components.code,{children:`sub-agent`}),` opts into the older dispatch model where the main agent launches `,_jsx(_components.code,{children:`trellis-implement`}),`, `,_jsx(_components.code,{children:`trellis-check`}),`, or `,_jsx(_components.code,{children:`trellis-research`}),` sub-agents.`]}),`\n`,_jsxs(_components.p,{children:[`The default is `,_jsx(_components.code,{children:`inline`}),` because Codex sub-agents run in isolated turns and cannot inherit the parent session’s full task context. Use `,_jsx(_components.code,{children:`sub-agent`}),` only when you explicitly want that legacy split.`]}),`\n`,_jsx(Heading,{level:`2`,id:`update-behavior`,children:`Update behavior`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`trellis init`}),` writes the current template for new projects. For existing projects, `,_jsx(_components.code,{children:`trellis update`}),` preserves local edits to `,_jsx(_components.code,{children:`.trellis/config.yaml`}),` instead of replacing the file wholesale.`]}),`\n`,_jsxs(_components.p,{children:[`When a release adds a new config section, the migration manifest can declare it through `,_jsx(_components.code,{children:`configSectionsAdded`}),`. During `,_jsx(_components.code,{children:`trellis update`}),`, Trellis checks whether the configured sentinel text already appears in the target file. If the sentinel is missing, Trellis appends the matching section from the bundled template to the end of `,_jsx(_components.code,{children:`.trellis/config.yaml`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`This append-only path is idempotent and preserves your existing values. The `,_jsx(_components.code,{children:`session_auto_commit`}),` section was delivered this way for existing projects: if `,_jsx(_components.code,{children:`session_auto_commit:`}),` was missing, `,_jsx(_components.code,{children:`trellis update`}),` appended the commented section; if it was already present, update skipped it.`]}),`\n`,_jsx(_components.p,{children:`After an update, review any appended commented section and uncomment only the keys you want to activate.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Configure .trellis/config.yaml","sidebarTitle":"Configuration","description":"Learn how Trellis reads .trellis/config.yaml, which keys matter, and how updates add new configuration sections safely.","href":"/advanced/configuration"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Configure .trellis/config.yaml","slug":"configure-trellis/config-yaml","depth":2,"children":[]},{"title":"Edit safely","slug":"edit-safely","depth":2,"children":[]},{"title":"Current keys","slug":"current-keys","depth":2,"children":[{"title":"Session recording","slug":"session-recording","depth":3,"children":[]},{"title":"Session auto-commit","slug":"session-auto-commit","depth":3,"children":[]},{"title":"Task lifecycle hooks","slug":"task-lifecycle-hooks","depth":3,"children":[]},{"title":"Packages and default package","slug":"packages-and-default-package","depth":3,"children":[]},{"title":"Update skip compatibility","slug":"update-skip-compatibility","depth":3,"children":[]},{"title":"Codex dispatch mode","slug":"codex-dispatch-mode","depth":3,"children":[]}]},{"title":"Update behavior","slug":"update-behavior","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/mindfold/50463574fbbae5a0/terminal-demo.js"],"subdomain":"mindfold","siteName":"Trellis Doc","title":"Configure .trellis/config.yaml - Trellis Doc","navMaps":{"firstHrefInVersion":{"Beta":{"href":"/beta/advanced/configuration","matchLevel":1},"Release":{"href":"/advanced/configuration","matchLevel":0}},"firstHrefInLanguage":{"en":{"href":"/advanced/configuration","matchLevel":0},"zh":{"href":"/zh/advanced/configuration","matchLevel":1}}},"lastModified":"2026-05-10T04:50:39.307Z","originalFileLocation":"advanced/configuration.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Learn how Trellis reads .trellis/config.yaml, which keys matter, and how updates add new configuration sections safely.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Trellis Doc\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mindfold/t6N3E_qvIvor4dyy/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/mindfold/t6N3E_qvIvor4dyy/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mindfold/t6N3E_qvIvor4dyy/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mindfold/t6N3E_qvIvor4dyy/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mindfold/t6N3E_qvIvor4dyy/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mindfold/t6N3E_qvIvor4dyy/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mindfold/t6N3E_qvIvor4dyy/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mindfold/t6N3E_qvIvor4dyy/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mindfold/t6N3E_qvIvor4dyy/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Configure .trellis/config.yaml - Trellis Doc\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn how Trellis reads .trellis/config.yaml, which keys matter, and how updates add new configuration sections safely.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Trellis Doc\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.trytrellis.app/advanced/configuration\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mindfold.mintlify.site/_mintlify/api/og/v2?division=Advanced\u0026amp;title=Configure+.trellis%2Fconfig.yaml\u0026amp;description=Learn+how+Trellis+reads+.trellis%2Fconfig.yaml%2C+which+keys+matter%2C+and+how+updates+add+new+configuration+sections+safely.\u0026amp;theme=e10d6787289c0cc7bf9a598e\u0026amp;signature=4600e1db38494a1593cfc2a69165b42949766bfda517b697fbc1c225766c6289\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Configure .trellis/config.yaml - Trellis Doc\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn how Trellis reads .trellis/config.yaml, which keys matter, and how updates add new configuration sections safely.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mindfold.mintlify.site/_mintlify/api/og/v2?division=Advanced\u0026amp;title=Configure+.trellis%2Fconfig.yaml\u0026amp;description=Learn+how+Trellis+reads+.trellis%2Fconfig.yaml%2C+which+keys+matter%2C+and+how+updates+add+new+configuration+sections+safely.\u0026amp;theme=e10d6787289c0cc7bf9a598e\u0026amp;signature=4600e1db38494a1593cfc2a69165b42949766bfda517b697fbc1c225766c6289\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/mindfold/t6N3E_qvIvor4dyy/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Trellis Doc\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.trytrellis.app/advanced/configuration\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/advanced/configuration.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.trytrellis.app/advanced/configuration\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.trytrellis.app/zh/advanced/configuration\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.trytrellis.app/advanced/configuration\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.trytrellis.app/#organization\",\"name\":\"Trellis Doc\",\"url\":\"https://docs.trytrellis.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mindfold/bqj-FQTDA-Gh0h6g/logo/light.svg?fit=max\u0026auto=format\u0026n=bqj-FQTDA-Gh0h6g\u0026q=85\u0026s=4f3e567a1573dcafba24aea3ef6a86bb\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.trytrellis.app#website\",\"name\":\"Trellis Doc\",\"url\":\"https://docs.trytrellis.app\",\"publisher\":{\"@id\":\"https://docs.trytrellis.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.trytrellis.app/advanced/configuration#webpage\",\"url\":\"https://docs.trytrellis.app/advanced/configuration\",\"name\":\"Configure .trellis/config.yaml\",\"description\":\"Learn how Trellis reads .trellis/config.yaml, which keys matter, and how updates add new configuration sections safely.\",\"dateModified\":\"2026-05-10T04:50:39.307Z\",\"isPartOf\":{\"@id\":\"https://docs.trytrellis.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.trytrellis.app/advanced/configuration#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.trytrellis.app/advanced/configuration#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Advanced\",\"item\":\"https://docs.trytrellis.app/advanced/architecture\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configure .trellis/config.yaml\",\"item\":\"https://docs.trytrellis.app/advanced/configuration\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.trytrellis.app/advanced/configuration#article\",\"headline\":\"Configure .trellis/config.yaml\",\"name\":\"Configure .trellis/config.yaml\",\"description\":\"Learn how Trellis reads .trellis/config.yaml, which keys matter, and how updates add new configuration sections safely.\",\"url\":\"https://docs.trytrellis.app/advanced/configuration\",\"mainEntityOfPage\":{\"@id\":\"https://docs.trytrellis.app/advanced/configuration#webpage\"},\"dateModified\":\"2026-05-10T04:50:39.307Z\",\"publisher\":{\"@id\":\"https://docs.trytrellis.app/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.trytrellis.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Trellis Doc\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Trellis Doc","nav":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/mindfold-ai/Trellis"}]},"languages":[{"language":"en","versions":[{"version":"Beta","default":true,"pages":[{"title":"Beta","href":"/beta/advanced/configuration"}]},{"version":"Release","groups":[{"group":"Start Here","pages":[{"title":"Trellis","href":""},{"title":"Install \u0026 First Task","href":"/start/install-and-first-task"},{"title":"How It Works","href":"/start/how-it-works"},{"title":"Commands, Upgrades, Tasks \u0026 Specs","href":"/start/everyday-use"},{"title":"Real-World Scenarios","icon":"map","href":"/start/real-world-scenarios"}]},{"group":"Advanced","pages":[{"title":"Architecture Overview","href":"/advanced/architecture"},{"title":"Multi-agent Collaboration with Channel","sidebarTitle":"Channel","href":"/advanced/channel"},{"title":"Roadmap","href":"/advanced/roadmap"},{"title":"Customizing the Workflow","href":"/advanced/custom-workflow"},{"title":"Custom Slash Commands","href":"/advanced/custom-commands"},{"title":"Custom Sub-agents","href":"/advanced/custom-agents"},{"title":"Custom Hooks","href":"/advanced/custom-hooks"},{"title":"Custom Skills","href":"/advanced/custom-skills"},{"title":"Custom Spec Template Marketplace","description":null,"href":"/advanced/custom-spec-template-marketplace"},{"title":"Configure .trellis/config.yaml","sidebarTitle":"Configuration","href":"/advanced/configuration"},{"title":"Multi-Platform and Team Configuration","description":null,"href":"/advanced/multi-platform"},{"title":"Appendix A: Key File Paths Quick Reference","href":"/advanced/appendix-a"},{"title":"Appendix B: Command \u0026 Skill Cheat Sheet","href":"/advanced/appendix-b"},{"title":"Appendix C: task.json Schema Reference","href":"/advanced/appendix-c"},{"title":"Appendix D: JSONL Configuration Format Reference","href":"/advanced/appendix-d"},{"title":"Appendix F: FAQ","href":"/advanced/appendix-f"},{"title":"Resources \u0026 Acknowledgments","href":"/advanced/resources"}]},{"group":"Use Cases","pages":[{"title":"open-typeless","href":"/use-cases/open-typeless"}]},{"group":"Resource Marketplace","pages":[{"group":"Skills","expanded":false,"pages":[{"title":"Overview","href":"/skills-market/index"},{"title":"trellis-meta","href":"/skills-market/trellis-meta"},{"title":"trellis-spec-bootstrap","href":"/skills-market/trellis-spec-bootstrap"},{"title":"frontend-fullchain-optimization","href":"/skills-market/frontend-fullchain-optimization"},{"title":"mem-recall","href":"/skills-market/mem-recall"}]},{"group":"Spec Templates","expanded":false,"pages":[{"title":"Overview","href":"/templates/specs-index"},{"title":"Electron + React + TypeScript","href":"/templates/specs-electron"},{"title":"Next.js + oRPC + PostgreSQL","href":"/templates/specs-nextjs"},{"title":"Cloudflare Workers + Hono + Turso","href":"/templates/specs-cf-workers"}]}]},{"group":"Community","pages":[{"group":"Showcase","expanded":false,"pages":[{"title":"Showcase","sidebarTitle":"Overview","href":"/showcase/index"},{"title":"Workflow Demo","sidebarTitle":"Workflow Demo","href":"/showcase/terminal-demo"},{"title":"open-typeless","sidebarTitle":"open-typeless","href":"/showcase/open-typeless"},{"title":"Trellis for Cursor","sidebarTitle":"Trellis for Cursor","href":"/showcase/trellis-cursor"}]},{"group":"Contributing","expanded":false,"pages":[{"title":"Contribute to Docs","href":"/contribute/docs"},{"title":"Contribute to Trellis","href":"/contribute/trellis"}]},{"group":"Tech Blog","expanded":false,"pages":[{"title":"Overview","href":"/blog/index"},{"title":"Understanding Trellis Through Kubernetes","href":"/blog/use-k8s-to-know-trellis"},{"title":"Building an AI Collaborative Development System in Real Projects","href":"/blog/ai-collaborative-dev-system"}]},{"group":"Changelog","expanded":false,"pages":[{"title":"v0.6.17","href":"/changelog/v0.6.17"},{"title":"v0.6.16","href":"/changelog/v0.6.16"},{"title":"v0.6.15","href":"/changelog/v0.6.15"},{"title":"v0.6.14","href":"/changelog/v0.6.14"},{"title":"v0.6.13","href":"/changelog/v0.6.13"},{"title":"v0.6.12","href":"/changelog/v0.6.12"},{"title":"v0.7.0-beta.4","href":"/changelog/v0.7.0-beta.4"},{"title":"v0.7.0-beta.3","href":"/changelog/v0.7.0-beta.3"},{"title":"v0.7.0-beta.2","href":"/changelog/v0.7.0-beta.2"},{"title":"v0.7.0-beta.1","href":"/changelog/v0.7.0-beta.1"},{"title":"v0.7.0-beta.0","href":"/changelog/v0.7.0-beta.0"},{"title":"v0.6.11","href":"/changelog/v0.6.11"},{"title":"v0.6.10","href":"/changelog/v0.6.10"},{"title":"v0.6.9","href":"/changelog/v0.6.9"},{"title":"v0.6.8","href":"/changelog/v0.6.8"},{"title":"v0.6.7","href":"/changelog/v0.6.7"},{"title":"v0.6.6","href":"/changelog/v0.6.6"},{"title":"v0.6.5","href":"/changelog/v0.6.5"},{"title":"v0.6.4","href":"/changelog/v0.6.4"},{"title":"v0.6.3","href":"/changelog/v0.6.3"},{"title":"v0.6.2","href":"/changelog/v0.6.2"},{"title":"v0.6.1","href":"/changelog/v0.6.1"},{"title":"v0.6.0","href":"/changelog/v0.6.0"},{"title":"v0.6.0-rc.0","href":"/changelog/v0.6.0-rc.0"},{"title":"v0.6.0-beta.23","href":"/changelog/v0.6.0-beta.23"},{"title":"v0.6.0-beta.22","href":"/changelog/v0.6.0-beta.22"},{"title":"v0.5.19","href":"/changelog/v0.5.19"},{"title":"v0.6.0-beta.21","href":"/changelog/v0.6.0-beta.21"},{"title":"v0.6.0-beta.20","href":"/changelog/v0.6.0-beta.20"},{"title":"v0.5.18","href":"/changelog/v0.5.18"},{"title":"v0.6.0-beta.19","href":"/changelog/v0.6.0-beta.19"},{"title":"v0.5.17","href":"/changelog/v0.5.17"},{"title":"v0.6.0-beta.18","href":"/changelog/v0.6.0-beta.18"},{"title":"v0.5.16","href":"/changelog/v0.5.16"},{"title":"v0.6.0-beta.17","href":"/changelog/v0.6.0-beta.17"},{"title":"v0.6.0-beta.16","href":"/changelog/v0.6.0-beta.16"},{"title":"v0.6.0-beta.15","href":"/changelog/v0.6.0-beta.15"},{"title":"v0.6.0-beta.14","href":"/changelog/v0.6.0-beta.14"},{"title":"v0.6.0-beta.13","href":"/changelog/v0.6.0-beta.13"},{"title":"v0.6.0-beta.12","href":"/changelog/v0.6.0-beta.12"},{"title":"v0.5.15","href":"/changelog/v0.5.15"},{"title":"v0.6.0-beta.11","href":"/changelog/v0.6.0-beta.11"},{"title":"v0.5.14","href":"/changelog/v0.5.14"},{"title":"v0.6.0-beta.10","href":"/changelog/v0.6.0-beta.10"},{"title":"v0.6.0-beta.9","href":"/changelog/v0.6.0-beta.9"},{"title":"v0.5.13","href":"/changelog/v0.5.13"},{"title":"v0.6.0-beta.8","href":"/changelog/v0.6.0-beta.8"},{"title":"v0.6.0-beta.7","href":"/changelog/v0.6.0-beta.7"},{"title":"v0.5.12","href":"/changelog/v0.5.12"},{"title":"v0.5.11","href":"/changelog/v0.5.11"},{"title":"v0.5.10","href":"/changelog/v0.5.10"},{"title":"v0.6.0-beta.6","href":"/changelog/v0.6.0-beta.6"},{"title":"v0.6.0-beta.5","href":"/changelog/v0.6.0-beta.5"},{"title":"v0.6.0-beta.4","href":"/changelog/v0.6.0-beta.4"},{"title":"v0.6.0-beta.3","href":"/changelog/v0.6.0-beta.3"},{"title":"v0.6.0-beta.2","href":"/changelog/v0.6.0-beta.2"},{"title":"v0.6.0-beta.1","href":"/changelog/v0.6.0-beta.1"},{"title":"v0.5.9","href":"/changelog/v0.5.9"},{"title":"v0.6.0-beta.0","href":"/changelog/v0.6.0-beta.0"},{"title":"v0.5.8","href":"/changelog/v0.5.8"},{"title":"v0.5.7","href":"/changelog/v0.5.7"},{"title":"v0.5.6","href":"/changelog/v0.5.6"},{"title":"v0.5.5","href":"/changelog/v0.5.5"},{"title":"v0.5.4","href":"/changelog/v0.5.4"},{"title":"v0.5.3","href":"/changelog/v0.5.3"},{"title":"v0.5.2","href":"/changelog/v0.5.2"},{"title":"v0.5.1","href":"/changelog/v0.5.1"},{"title":"v0.5.0","href":"/changelog/v0.5.0"},{"title":"v0.5.0-rc.7","href":"/changelog/v0.5.0-rc.7"},{"title":"v0.5.0-rc.6","href":"/changelog/v0.5.0-rc.6"},{"title":"v0.5.0-rc.5","href":"/changelog/v0.5.0-rc.5"},{"title":"v0.5.0-rc.4","href":"/changelog/v0.5.0-rc.4"},{"title":"v0.5.0-rc.3","href":"/changelog/v0.5.0-rc.3"},{"title":"v0.5.0-rc.2","href":"/changelog/v0.5.0-rc.2"},{"title":"v0.5.0-rc.1","href":"/changelog/v0.5.0-rc.1"},{"title":"v0.5.0-rc.0","href":"/changelog/v0.5.0-rc.0"},{"title":"v0.5.0-beta.19","href":"/changelog/v0.5.0-beta.19"},{"title":"v0.5.0-beta.18","href":"/changelog/v0.5.0-beta.18"},{"title":"v0.5.0-beta.17","href":"/changelog/v0.5.0-beta.17"},{"title":"v0.5.0-beta.16","href":"/changelog/v0.5.0-beta.16"},{"title":"v0.5.0-beta.15","href":"/changelog/v0.5.0-beta.15"},{"title":"v0.5.0-beta.14","href":"/changelog/v0.5.0-beta.14"},{"title":"v0.5.0-beta.13","href":"/changelog/v0.5.0-beta.13"},{"title":"v0.5.0-beta.12","href":"/changelog/v0.5.0-beta.12"},{"title":"v0.5.0-beta.11","href":"/changelog/v0.5.0-beta.11"},{"title":"v0.5.0-beta.10","href":"/changelog/v0.5.0-beta.10"},{"title":"v0.5.0-beta.9","href":"/changelog/v0.5.0-beta.9"},{"title":"v0.5.0-beta.8","href":"/changelog/v0.5.0-beta.8"},{"title":"v0.5.0-beta.7","href":"/changelog/v0.5.0-beta.7"},{"title":"v0.5.0-beta.6","href":"/changelog/v0.5.0-beta.6"},{"title":"v0.5.0-beta.5","href":"/changelog/v0.5.0-beta.5"},{"title":"v0.5.0-beta.4","href":"/changelog/v0.5.0-beta.4"},{"title":"v0.5.0-beta.3","href":"/changelog/v0.5.0-beta.3"},{"title":"v0.5.0-beta.2","href":"/changelog/v0.5.0-beta.2"},{"title":"v0.5.0-beta.1","href":"/changelog/v0.5.0-beta.1"},{"title":"v0.5.0-beta.0","href":"/changelog/v0.5.0-beta.0"},{"title":"v0.4.0","href":"/changelog/v0.4.0"},{"title":"v0.4.0-rc.1","href":"/changelog/v0.4.0-rc.1"},{"title":"v0.4.0-rc.0","href":"/changelog/v0.4.0-rc.0"},{"title":"v0.4.0-beta.10","href":"/changelog/v0.4.0-beta.10"},{"title":"v0.4.0-beta.9","href":"/changelog/v0.4.0-beta.9"},{"title":"v0.4.0-beta.8","href":"/changelog/v0.4.0-beta.8"},{"title":"v0.4.0-beta.7","href":"/changelog/v0.4.0-beta.7"},{"title":"v0.4.0-beta.6","href":"/changelog/v0.4.0-beta.6"},{"title":"v0.4.0-beta.5","href":"/changelog/v0.4.0-beta.5"},{"title":"v0.4.0-beta.4","href":"/changelog/v0.4.0-beta.4"},{"title":"v0.4.0-beta.3","href":"/changelog/v0.4.0-beta.3"},{"title":"v0.4.0-beta.2","href":"/changelog/v0.4.0-beta.2"},{"title":"v0.4.0-beta.1","href":"/changelog/v0.4.0-beta.1"},{"title":"v0.3.10","href":"/changelog/v0.3.10"},{"title":"v0.3.9","href":"/changelog/v0.3.9"},{"title":"v0.3.8","href":"/changelog/v0.3.8"},{"title":"v0.3.7","href":"/changelog/v0.3.7"},{"title":"v0.3.6","href":"/changelog/v0.3.6"},{"title":"v0.3.5","href":"/changelog/v0.3.5"},{"title":"v0.3.4","href":"/changelog/v0.3.4"},{"title":"v0.3.3","href":"/changelog/v0.3.3"},{"title":"v0.3.2","href":"/changelog/v0.3.2"},{"title":"v0.3.1","href":"/changelog/v0.3.1"},{"title":"v0.3.0-rc.6","href":"/changelog/v0.3.0-rc.6"},{"title":"v0.3.0-rc.5","href":"/changelog/v0.3.0-rc.5"},{"title":"v0.3.0-rc.4","href":"/changelog/v0.3.0-rc.4"},{"title":"v0.3.0-rc.3","href":"/changelog/v0.3.0-rc.3"},{"title":"v0.3.0-rc.2","href":"/changelog/v0.3.0-rc.2"},{"title":"v0.3.0-rc.1","href":"/changelog/v0.3.0-rc.1"},{"title":"v0.3.0-rc.0","href":"/changelog/v0.3.0-rc.0"},{"title":"v0.3.0-beta.16","href":"/changelog/v0.3.0-beta.16"},{"title":"v0.3.0-beta.15","href":"/changelog/v0.3.0-beta.15"},{"title":"v0.3.0-beta.14","href":"/changelog/v0.3.0-beta.14"},{"title":"v0.3.0-beta.13","href":"/changelog/v0.3.0-beta.13"},{"title":"v0.3.0-beta.12","href":"/changelog/v0.3.0-beta.12"},{"title":"v0.3.0-beta.11","href":"/changelog/v0.3.0-beta.11"},{"title":"v0.3.0-beta.10","href":"/changelog/v0.3.0-beta.10"},{"title":"v0.3.0-beta.9","href":"/changelog/v0.3.0-beta.9"},{"title":"v0.3.0-beta.8","href":"/changelog/v0.3.0-beta.8"},{"title":"v0.3.0-beta.7","href":"/changelog/v0.3.0-beta.7"},{"title":"v0.3.0-beta.0","href":"/changelog/v0.3.0-beta.0"},{"title":"v0.2.0","href":"/changelog/v0.2.0"},{"title":"v0.1.9","href":"/changelog/v0.1.9"}]}]}]}]},{"language":"zh","pages":[{"title":"zh","href":"/zh/advanced/configuration"}]}]},"basePath":"","title":"Configure .trellis/config.yaml - Trellis Doc","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["10e4515597"],"chunks":["BannerMarkdown-BcDCEkh6.js","dist-CwjSCXIK.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-eKJ4rcii.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}