Manage platform resources as version-controlled MDX with the 2501 CLI
The 2501 CLI syncs a directory of MDX files with your platform. Reviewable diffs, pull requests, reproducible source of truth. For the per-resource frontmatter schema, see the Resource Reference pages below.
Each resource is one MDX file. YAML frontmatter holds the fields; the body (when the kind has one) holds long-form text - the specialty prompt, the rule text, the host knowledge, the gateway’s inbound prompt.
# Snapshot the live platform into your repo2501 resources pull -d ./config# Apply the repo back to the platform2501 resources sync -d ./config
pull is a true mirror - existing .mdx files in each kind folder are removed before writing, so deletes on the platform also disappear from your repo. Credential secret values are never exported.sync diffs each resource, prints a plan (create / update / delete / unchanged), and applies in dependency-safe order. An agent can reference a host declared in the same directory, even before the host exists on the platform. Sync stops on the first failure; already-applied resources stay applied - re-run to continue.For CI, --dry-run prints the plan without applying and --auto-approve skips the y/N prompt.
On pull, only that org’s resources are exported. On sync, files declaring a different org are rejected. Always pair pull --org with sync --org so the two operations cover the same scope.
Host and operational-rule tags are validated against the platform’s tag vocabulary at plan time. Only tags introduced by a create or update are checked - resources already carrying an out-of-vocab tag on the platform round-trip untouched, so adopting Configuration as Code never forces a tag cleanup first.
app:<name> open-namespace tags are accepted on both hosts and rules.
procedure:* tags are valid on operational rules only - never on hosts.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"2501.ai","colors":{"primary":"#121212","light":"#FAFAFA","dark":"#121212"},"logo":{"light":"https://mintcdn.com/2501/gMl_w8qww9Zl47hO/logo/light.png?fit=max\u0026auto=format\u0026n=gMl_w8qww9Zl47hO\u0026q=85\u0026s=eeeb37b3ca386a00dde53b3e6235adce","dark":"https://mintcdn.com/2501/gMl_w8qww9Zl47hO/logo/dark.png?fit=max\u0026auto=format\u0026n=gMl_w8qww9Zl47hO\u0026q=85\u0026s=4d0ac2514d479eb43fe361193d12c495","href":"/0.7/getting-started/welcome"},"favicon":"https://mintcdn.com/2501/gMl_w8qww9Zl47hO/favicon.png?fit=max\u0026auto=format\u0026n=gMl_w8qww9Zl47hO\u0026q=85\u0026s=884be98d09b5672f470de49ac6430f22","appearance":{"default":"light"},"background":{"color":{"light":"#FAFAFA","dark":"#121212"}},"navbar":{"links":[{"href":"mailto:hello@2501.ai","label":"Contact"},{"href":"https://github.com/2501-ai","label":"Github"},{"href":"https://2501.ai/","label":"Website"}]},"footer":{"socials":{"website":"https://www.2501.ai/","github":"https://github.com/2501-ai","linkedin":"https://www.linkedin.com/company/99099126"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"2501","hasAudioNarration":false,"actualSubdomain":"2501","customDomains":["docs.2501.ai"],"gitSource":{"type":"github","owner":"2501-ai","repo":"2501","deployBranch":"main","contentDirectory":"apps/public-docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae06382dc8e261a8bb5a8cf","collectionId":"1211b02f-18ff-4e53-923a-18bdb4bcf20b","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae06382dc8e261a8bb5a8cf"},"entitlements":{},"buildId":"6ae0ecdb4edb7c9bfb43e653","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"Reference","count":843},{"language":"default","tag":"API","count":405},{"language":"default","tag":"Configure","count":286},{"language":"default","tag":"Guides","count":180},{"language":"default","tag":"Docs","count":173},{"language":"default","tag":"Benchmark","count":165},{"language":"default","tag":"Integration","count":117},{"language":"default","tag":"Deploy","count":112},{"language":"default","tag":"Agents","count":104},{"language":"default","tag":"Concepts","count":101}]},"assistantConfig":{},"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":"editor-v7-file-tree","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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"0.14/configure/configuration-as-code","slug":"/0.14/configure/configuration-as-code","pageMetadata":{"title":"Configuration as Code","description":"Manage platform resources as version-controlled MDX with the 2501 CLI","href":"/0.14/configure/configuration-as-code"},"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: \"Manage platform resources as version-controlled MDX with the 2501 CLI\"\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={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._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(_components.p,{children:[`The `,_jsx(_components.code,{children:`2501`}),` CLI syncs a directory of MDX files with your platform. Reviewable diffs, pull requests, reproducible source of truth. For the per-resource frontmatter schema, see the `,_jsx(_components.strong,{children:`Resource Reference`}),` pages below.`]}),`\n`,_jsx(Heading,{level:`2`,id:`authentication`,children:`Authentication`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`2501`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` login`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # email + password, interactive`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`2501`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` status`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # confirm which instance + user`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How it works`}),`\n`,_jsx(_components.p,{children:`Each resource is one MDX file. YAML frontmatter holds the fields; the body (when the kind has one) holds long-form text - the specialty prompt, the rule text, the host knowledge, the gateway’s inbound prompt.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Kind`}),_jsx(_components.th,{children:`Subdirectory`}),_jsx(_components.th,{children:`Body`}),_jsx(_components.th,{children:`Reference`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Agent`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`agents/`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:`-`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/0.14/configure/resources/agents`,children:`Agent`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Host`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`hosts/`})}),_jsx(_components.td,{children:`Host knowledge`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/0.14/configure/resources/hosts`,children:`Host`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Specialty`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`specialties/`})}),_jsx(_components.td,{children:`Specialty prompt`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/0.14/configure/resources/specialties`,children:`Specialty`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Operational Rule`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`operational_rules/`})}),_jsx(_components.td,{children:`Rule text`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/0.14/configure/resources/operational-rules`,children:`Operational Rule`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Credential`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`credentials/`})}),_jsxs(_components.td,{children:[`- (secrets via `,_jsx(_components.code,{children:\"${ENV}\"}),`)`]}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/0.14/configure/resources/credentials`,children:`Credential`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Gateway`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`gateways/`})}),_jsx(_components.td,{children:`Inbound prompt`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/0.14/configure/resources/gateways`,children:`Gateway`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Blacklist`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`blacklist/`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:`-`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/0.14/configure/resources/blacklist`,children:`Blacklist`})})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`workflow`,children:`Workflow`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Snapshot the live platform into your repo`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`2501`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` resources`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` pull`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ./config`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Apply the repo back to the platform`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`2501`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` resources`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` sync`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ./config`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`pull`}),` is a true mirror - existing `,_jsx(_components.code,{children:`.mdx`}),` files in each kind folder are removed before writing, so deletes on the platform also disappear from your repo. Credential secret values are `,_jsx(_components.strong,{children:`never`}),` exported.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`sync`}),` diffs each resource, prints a plan (create / update / delete / unchanged), and applies in dependency-safe order. An agent can reference a host declared in the same directory, even before the host exists on the platform. Sync stops on the first failure; already-applied resources stay applied - re-run to continue.`]}),`\n`,_jsxs(_components.p,{children:[`For CI, `,_jsx(_components.code,{children:`--dry-run`}),` prints the plan without applying and `,_jsx(_components.code,{children:`--auto-approve`}),` skips the y/N prompt.`]}),`\n`,_jsx(Heading,{level:`2`,id:`deletes-are-opt-in`,children:`Deletes are opt-in`}),`\n`,_jsxs(_components.p,{children:[`By default, `,_jsx(_components.code,{children:`sync`}),` never deletes. Resources on the platform that aren’t in your directory are `,_jsx(_components.strong,{children:`reported, not removed`}),`. To prune them, pass `,_jsx(_components.code,{children:`--prune`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`2501`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` resources`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` sync`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ./config`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --prune`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`A prune that would orphan dependents is flagged `,_jsx(_components.strong,{children:`BLOCKED`}),` and skipped:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`host`}),` is blocked while it has active tasks or attached agents.`]}),`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`specialty`}),` is blocked while agents or rules still reference it.`]}),`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`gateway`}),` is blocked while webhooks or tickets still reference it (jobs never block).`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`To override, add `,_jsx(_components.code,{children:`--force`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`2501`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` resources`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` sync`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ./config`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --prune`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --force`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`--prune --force`}),` removes resources even when they have dependents. Review the printed plan carefully before approving.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`scoping-to-one-organization`,children:`Scoping to one organization`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`2501`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` resources`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` pull`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ./config`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --org`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` platform-team`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`2501`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` resources`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` sync`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ./config`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --org`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` platform-team`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`On `,_jsx(_components.code,{children:`pull`}),`, only that org’s resources are exported. On `,_jsx(_components.code,{children:`sync`}),`, files declaring a different org are rejected. Always pair `,_jsx(_components.code,{children:`pull --org`}),` with `,_jsx(_components.code,{children:`sync --org`}),` so the two operations cover the same scope.`]}),`\n`,_jsx(Heading,{level:`2`,id:`keeping-secrets-out-of-git`,children:`Keeping secrets out of git`}),`\n`,_jsxs(_components.p,{children:[`Credential `,_jsx(_components.code,{children:`value`}),` fields reference environment variables with `,_jsx(_components.code,{children:\"${ENV_VAR}\"}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`mdx`,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:`mdx`,children:_jsxs(_components.code,{language:`mdx`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`value: $`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`{`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PROD_DB_PASSWORD`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`}`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`At sync time, the placeholder is resolved from the shell or CI secret store. See `,_jsx(_components.a,{href:`/0.14/configure/resources/credentials`,children:`Credential`}),` for the full credential file format.`]}),`\n`,_jsx(Heading,{level:`2`,id:`tag-validation`,children:`Tag validation`}),`\n`,_jsxs(_components.p,{children:[`Host and operational-rule tags are validated against the platform’s `,_jsx(_components.a,{href:`/0.14/configure/operational-rules#tag-axes`,children:`tag vocabulary`}),` at plan time. `,_jsx(_components.strong,{children:`Only tags introduced by a create or update are checked`}),` - resources already carrying an out-of-vocab tag on the platform round-trip untouched, so adopting Configuration as Code never forces a tag cleanup first.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`app:\u003cname>`}),` open-namespace tags are accepted on both hosts and rules.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`procedure:*`}),` tags are valid on operational rules only - never on hosts.`]}),`\n`]})]})}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":"Configuration as Code","description":"Manage platform resources as version-controlled MDX with the 2501 CLI","href":"/0.14/configure/configuration-as-code"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Authentication","slug":"authentication","depth":2,"children":[]},{"title":"How it works","slug":"how-it-works","depth":2,"children":[]},{"title":"Workflow","slug":"workflow","depth":2,"children":[]},{"title":"Deletes are opt-in","slug":"deletes-are-opt-in","depth":2,"children":[]},{"title":"Scoping to one organization","slug":"scoping-to-one-organization","depth":2,"children":[]},{"title":"Keeping secrets out of git","slug":"keeping-secrets-out-of-git","depth":2,"children":[]},{"title":"Tag validation","slug":"tag-validation","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"2501","siteName":"2501.ai","title":"Configuration as Code - 2501.ai","navMaps":{"firstHrefInVersion":{"0.18":{"href":"/0.18/configure/specialties","matchLevel":2},"0.17":{"href":"/0.17/configure/configuration-as-code","matchLevel":1},"0.16":{"href":"/0.16/configure/configuration-as-code","matchLevel":1},"0.15":{"href":"/0.15/configure/configuration-as-code","matchLevel":1},"0.14":{"href":"/0.14/configure/configuration-as-code","matchLevel":0},"0.13":{"href":"/0.13/configure/configuration-as-code","matchLevel":1},"0.12":{"href":"/0.12/configure/configuration-as-code","matchLevel":1},"0.11":{"href":"/0.11/configure/configuration-as-code","matchLevel":1},"0.10":{"href":"/0.10/configure/configuration-as-code","matchLevel":1},"0.9":{"href":"/0.9/configure/configuration-as-code","matchLevel":1},"0.8":{"href":"/0.8/configure/configuration-as-code","matchLevel":1},"0.7":{"href":"/0.7/configure/configuration-as-code","matchLevel":1},"0.4":{"href":"/0.4/configure/specialties","matchLevel":2},"0.3.0":{"href":"/0.3.0/configure/specialties","matchLevel":2},"0.2.6":{"href":"/0.2.6/configure/specialties","matchLevel":2}},"firstHrefInLanguage":{}},"lastModified":"2026-09-17T08:17:44.108Z","originalFileLocation":"0.14/configure/configuration-as-code.mdx"},"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=\"light\"}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=\"Manage platform resources as version-controlled MDX with the 2501 CLI\">\u003cmeta data-mint-head name=\"application-name\" content=\"2501.ai\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_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/2501/ur2ley-wQyHAsGwc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_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/2501/ur2ley-wQyHAsGwc/_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/2501/ur2ley-wQyHAsGwc/_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/2501/ur2ley-wQyHAsGwc/_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/2501/ur2ley-wQyHAsGwc/_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/2501/ur2ley-wQyHAsGwc/_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/2501/ur2ley-wQyHAsGwc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Configuration as Code - 2501.ai\">\u003cmeta data-mint-head property=\"og:description\" content=\"Manage platform resources as version-controlled MDX with the 2501 CLI\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"2501.ai\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.2501.ai/0.14/configure/configuration-as-code\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://2501.mintlify.app/_mintlify/api/og/v2?division=Integration\u0026amp;title=Configuration+as+Code\u0026amp;description=Manage+platform+resources+as+version-controlled+MDX+with+the+2501+CLI\u0026amp;theme=f33d4ade6ddd98c4a45fdcd4\u0026amp;signature=a89b0c731ef6c14cf6ad1c9f0c74a01f30e77bfcb87e5b35266264c21e6d714e\">\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=\"Configuration as Code - 2501.ai\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Manage platform resources as version-controlled MDX with the 2501 CLI\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://2501.mintlify.app/_mintlify/api/og/v2?division=Integration\u0026amp;title=Configuration+as+Code\u0026amp;description=Manage+platform+resources+as+version-controlled+MDX+with+the+2501+CLI\u0026amp;theme=f33d4ade6ddd98c4a45fdcd4\u0026amp;signature=a89b0c731ef6c14cf6ad1c9f0c74a01f30e77bfcb87e5b35266264c21e6d714e\">\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/2501/ur2ley-wQyHAsGwc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"2501.ai\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#121212\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.2501.ai/0.14/configure/configuration-as-code\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/0.14/configure/configuration-as-code.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.2501.ai/#organization\",\"name\":\"2501.ai\",\"url\":\"https://docs.2501.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/2501/gMl_w8qww9Zl47hO/logo/light.png?fit=max\u0026auto=format\u0026n=gMl_w8qww9Zl47hO\u0026q=85\u0026s=eeeb37b3ca386a00dde53b3e6235adce\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.2501.ai#website\",\"name\":\"2501.ai\",\"url\":\"https://docs.2501.ai\",\"publisher\":{\"@id\":\"https://docs.2501.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.2501.ai/0.14/configure/configuration-as-code#webpage\",\"url\":\"https://docs.2501.ai/0.14/configure/configuration-as-code\",\"name\":\"Configuration as Code\",\"description\":\"Manage platform resources as version-controlled MDX with the 2501 CLI\",\"dateModified\":\"2026-09-17T08:17:44.108Z\",\"isPartOf\":{\"@id\":\"https://docs.2501.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.2501.ai/0.14/configure/configuration-as-code#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.2501.ai/0.14/configure/configuration-as-code#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Configure\",\"item\":\"https://docs.2501.ai/0.14/configure/specialties\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integration\",\"item\":\"https://docs.2501.ai/0.14/configure/webhooks\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Configuration as Code\",\"item\":\"https://docs.2501.ai/0.14/configure/configuration-as-code\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.2501.ai/0.14/configure/configuration-as-code#article\",\"headline\":\"Configuration as Code\",\"name\":\"Configuration as Code\",\"description\":\"Manage platform resources as version-controlled MDX with the 2501 CLI\",\"url\":\"https://docs.2501.ai/0.14/configure/configuration-as-code\",\"mainEntityOfPage\":{\"@id\":\"https://docs.2501.ai/0.14/configure/configuration-as-code#webpage\"},\"dateModified\":\"2026-09-17T08:17:44.108Z\",\"publisher\":{\"@id\":\"https://docs.2501.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.2501.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"2501.ai\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"2501.ai","nav":{"global":null,"versions":[{"version":"0.18","pages":[{"title":"0.18","href":"/0.18/configure/specialties"}]},{"version":"0.17","pages":[{"title":"0.17","href":"/0.17/configure/configuration-as-code"}]},{"version":"0.16","pages":[{"title":"0.16","href":"/0.16/configure/configuration-as-code"}]},{"version":"0.15","pages":[{"title":"0.15","href":"/0.15/configure/configuration-as-code"}]},{"version":"0.14","tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":"/0.14/getting-started/welcome"}]},{"tab":"Reference","groups":[{"group":"API","pages":[{"title":"API Overview","href":"/0.14/api/overview"},{"group":"Specialties","pages":[{"title":"List specialties","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/specialties","href":"/0.14/api-reference/specialties/list-specialties"},{"title":"Create a specialty","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/specialties","href":"/0.14/api-reference/specialties/create-a-specialty"},{"title":"Search specialties","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/specialties/search","href":"/0.14/api-reference/specialties/search-specialties"},{"title":"Get a specialty","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/specialties/{id}","href":"/0.14/api-reference/specialties/get-a-specialty"},{"title":"Update a specialty","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/specialties/{id}","href":"/0.14/api-reference/specialties/update-a-specialty"},{"title":"Delete a specialty","deprecated":null,"version":null,"openapi":"/0.14/openapi.json delete /api/v1/specialties/{id}","href":"/0.14/api-reference/specialties/delete-a-specialty"},{"title":"Count what references a specialty","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/specialties/{id}/references","href":"/0.14/api-reference/specialties/count-what-references-a-specialty"}]},{"group":"Blacklists","pages":[{"title":"List blacklisted commands","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/blacklists","href":"/0.14/api-reference/blacklists/list-blacklisted-commands"},{"title":"Create a blacklisted command","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/blacklists","href":"/0.14/api-reference/blacklists/create-a-blacklisted-command"},{"title":"Search blacklisted commands","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/blacklists/search","href":"/0.14/api-reference/blacklists/search-blacklisted-commands"},{"title":"Get a blacklisted command","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/blacklists/{id}","href":"/0.14/api-reference/blacklists/get-a-blacklisted-command"},{"title":"Update a blacklisted command","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/blacklists/{id}","href":"/0.14/api-reference/blacklists/update-a-blacklisted-command"},{"title":"Delete a blacklisted command","deprecated":null,"version":null,"openapi":"/0.14/openapi.json delete /api/v1/blacklists/{id}","href":"/0.14/api-reference/blacklists/delete-a-blacklisted-command"}]},{"group":"Gateways","pages":[{"title":"List gateways","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/gateways","href":"/0.14/api-reference/gateways/list-gateways"},{"title":"Create a gateway","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/gateways","href":"/0.14/api-reference/gateways/create-a-gateway"},{"title":"Search gateways","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/gateways/search","href":"/0.14/api-reference/gateways/search-gateways"},{"title":"Get a gateway","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/gateways/{id}","href":"/0.14/api-reference/gateways/get-a-gateway"},{"title":"Update a gateway","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/gateways/{id}","href":"/0.14/api-reference/gateways/update-a-gateway"},{"title":"Delete a gateway","deprecated":null,"version":null,"openapi":"/0.14/openapi.json delete /api/v1/gateways/{id}","href":"/0.14/api-reference/gateways/delete-a-gateway"},{"title":"Count what references a gateway","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/gateways/{id}/references","href":"/0.14/api-reference/gateways/count-what-references-a-gateway"}]},{"group":"Hosts","pages":[{"title":"List hosts","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/hosts","href":"/0.14/api-reference/hosts/list-hosts"},{"title":"Create a host","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/hosts","href":"/0.14/api-reference/hosts/create-a-host"},{"title":"Search hosts","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/hosts/search","href":"/0.14/api-reference/hosts/search-hosts"},{"title":"Bulk import hosts","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/hosts/batch","href":"/0.14/api-reference/hosts/bulk-import-hosts"},{"title":"Bulk export hosts","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/hosts/export","href":"/0.14/api-reference/hosts/bulk-export-hosts"},{"title":"Get a host","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/hosts/{id}","href":"/0.14/api-reference/hosts/get-a-host"},{"title":"Update a host","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/hosts/{id}","href":"/0.14/api-reference/hosts/update-a-host"},{"title":"Delete a host","deprecated":null,"version":null,"openapi":"/0.14/openapi.json delete /api/v1/hosts/{id}","href":"/0.14/api-reference/hosts/delete-a-host"},{"title":"List a host agents","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/hosts/{id}/agents","href":"/0.14/api-reference/hosts/list-a-host-agents"}]},{"group":"Agents","pages":[{"title":"List agents","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/agents","href":"/0.14/api-reference/agents/list-agents"},{"title":"Create an agent","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/agents","href":"/0.14/api-reference/agents/create-an-agent"},{"title":"Search agents","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/agents/search","href":"/0.14/api-reference/agents/search-agents"},{"title":"Bulk import agents","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/agents/batch","href":"/0.14/api-reference/agents/bulk-import-agents"},{"title":"Bulk export agents","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/agents/export","href":"/0.14/api-reference/agents/bulk-export-agents"},{"title":"Get an agent","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/agents/{id}","href":"/0.14/api-reference/agents/get-an-agent"},{"title":"Update an agent","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/agents/{id}","href":"/0.14/api-reference/agents/update-an-agent"},{"title":"Archive an agent","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/agents/{id}/archive","href":"/0.14/api-reference/agents/archive-an-agent"},{"title":"Archive idle tasks","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/agents/{id}/archive-tasks","href":"/0.14/api-reference/agents/archive-idle-tasks"},{"title":"List an agent tasks","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/agents/{id}/tasks","href":"/0.14/api-reference/agents/list-an-agent-tasks"},{"title":"Test the connection","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/agents/{id}/test-connection","href":"/0.14/api-reference/agents/test-the-connection"},{"title":"List an agent plugins","deprecated":null,"version":null,"openapi":"/0.14/openapi.json get /api/v1/agents/{id}/plugins","href":"/0.14/api-reference/agents/list-an-agent-plugins"},{"title":"Attach a plugin","deprecated":null,"version":null,"openapi":"/0.14/openapi.json post /api/v1/agents/{id}/plugins","href":"/0.14/api-reference/agents/attach-a-plugin"},{"title":"Detach a plugin","deprecated":null,"version":null,"openapi":"/0.14/openapi.json delete /api/v1/agents/{id}/plugins/{pluginId}","href":"/0.14/api-reference/agents/detach-a-plugin"}]}]},{"group":"CLI","pages":[{"title":"2501 CLI","href":"/0.14/cli/overview"},{"title":"login \u0026 status","href":"/0.14/cli/login-status"},{"title":"resources","href":"/0.14/cli/resources"},{"title":"infra","href":"/0.14/cli/infra"},{"title":"runner","href":"/0.14/cli/runner"},{"title":"chat","href":"/0.14/cli/chat"}]},{"group":"Deploy","pages":[{"title":"Overview","href":"/0.14/deployment/overview"},{"title":"Init Command","href":"/0.14/deployment/init-command"},{"title":"Configuration","href":"/0.14/deployment/configuration"},{"title":"Docker Swarm","href":"/0.14/deployment/docker-swarm"},{"title":"Kubernetes","href":"/0.14/deployment/kubernetes"},{"title":"LLM Providers","href":"/0.14/deployment/llm-providers"},{"title":"Users \u0026 Organizations","href":"/0.14/deployment/users-organizations"},{"title":"Troubleshooting","href":"/0.14/deployment/troubleshooting"},{"title":"Feature Toggles","href":"/0.14/deployment/feature-toggles"}]},{"group":"Configure","pages":[{"group":"Agent Behavior","pages":[{"title":"Specialties","href":"/0.14/configure/specialties"},{"title":"Operational Rules","href":"/0.14/configure/operational-rules"},{"title":"Blacklist","href":"/0.14/configure/blacklist"}]},{"title":"Clusters","href":"/0.14/configure/clusters"},{"title":"Knowledge Base","href":"/0.14/configure/knowledge"},{"title":"Import and Export","href":"/0.14/configure/import-export"},{"group":"Access \u0026 Secrets","pages":[{"title":"Credentials","href":"/0.14/configure/credentials"},{"title":"API Keys","href":"/0.14/configure/api-keys"},{"title":"Plugins","href":"/0.14/configure/plugins"}]},{"group":"Integration","pages":[{"title":"Webhooks","description":"Set up real-time webhook notifications from ServiceNow","href":"/0.14/configure/webhooks"},{"title":"Configuration as Code","href":"/0.14/configure/configuration-as-code"},{"group":"Resource Reference","pages":[{"title":"Agent","description":"MDX frontmatter reference for agent resources","href":"/0.14/configure/resources/agents"},{"title":"Host","href":"/0.14/configure/resources/hosts"},{"title":"Specialty","href":"/0.14/configure/resources/specialties"},{"title":"Operational Rule","href":"/0.14/configure/resources/operational-rules"},{"title":"Credential","href":"/0.14/configure/resources/credentials"},{"title":"Gateway","href":"/0.14/configure/resources/gateways"},{"title":"Blacklist","href":"/0.14/configure/resources/blacklist"}]},{"title":"Network Discovery","href":"/0.14/configure/discovery"}]},{"group":"LLM","pages":[{"title":"Providers","href":"/0.14/configure/providers"},{"title":"Models","href":"/0.14/configure/models"}]},{"title":"Users","href":"/0.14/configure/users"},{"title":"Licensing \u0026 Usage","href":"/0.14/configure/licensing"}]}]},{"tab":"Benchmark","pages":[{"title":"Benchmark","href":"/0.14/benchmark/overview"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/0.14/configure/prompting"}]}]},{"version":"0.13","pages":[{"title":"0.13","href":"/0.13/configure/configuration-as-code"}]},{"version":"0.12","pages":[{"title":"0.12","href":"/0.12/configure/configuration-as-code"}]},{"version":"0.11","pages":[{"title":"0.11","href":"/0.11/configure/configuration-as-code"}]},{"version":"0.10","pages":[{"title":"0.10","href":"/0.10/configure/configuration-as-code"}]},{"version":"0.9","pages":[{"title":"0.9","href":"/0.9/configure/configuration-as-code"}]},{"version":"0.8","pages":[{"title":"0.8","href":"/0.8/configure/configuration-as-code"}]},{"version":"0.7","pages":[{"title":"0.7","href":"/0.7/configure/configuration-as-code"}]},{"version":"0.4","pages":[{"title":"0.4","href":"/0.4/configure/specialties"}]},{"version":"0.3.0","pages":[{"title":"0.3.0","href":"/0.3.0/configure/specialties"}]},{"version":"0.2.6","pages":[{"title":"0.2.6","href":"/0.2.6/configure/specialties"}]}]},"title":"Configuration as Code - 2501.ai","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":[],"chunks":[]}