{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Mirage","description":"Mirage gives AI agents one virtual filesystem for S3, Google Drive, Slack, GitHub, Notion, Postgres, and SSH, so shell commands work across services.","colors":{"primary":"#0C0C0C","light":"#FAFAFA","dark":"#000000"},"logo":{"light":"https://mintcdn.com/struktoai/7G-pGKhPIqaKqOXr/logo/light.svg?fit=max\u0026auto=format\u0026n=7G-pGKhPIqaKqOXr\u0026q=85\u0026s=d7007be7b5588a72b2072d2c33791785","dark":"https://mintcdn.com/struktoai/7G-pGKhPIqaKqOXr/logo/dark.svg?fit=max\u0026auto=format\u0026n=7G-pGKhPIqaKqOXr\u0026q=85\u0026s=0a255f925beb7370a41145f3f9185e9d"},"favicon":"https://mintcdn.com/struktoai/F9Lv_nTaj6By6crk/favicon.svg?fit=max\u0026auto=format\u0026n=F9Lv_nTaj6By6crk\u0026q=85\u0026s=bbca6fb54e64d72bdda46fb667828f1f","api":{"playground":{"display":"none"}},"navbar":{"links":[{"icon":"globe","href":"https://www.strukto.ai/mirage","label":"mirage"},{"icon":"discord","href":"https://discord.gg/u8BPQ65KsS","label":""},{"icon":"x-twitter","href":"https://x.com/struktoai","label":""},{"icon":"github","href":"https://github.com/strukto-ai/mirage","label":"strukto-ai/mirage"}]},"footer":{"socials":{"github":"https://github.com/strukto-ai/mirage"}},"seo":{"metatags":{"keywords":"Mirage, filesystem for AI agents, virtual filesystem, AI agent tools, agent infrastructure, MCP alternative, bash for agents, S3 filesystem, Google Drive filesystem, Slack filesystem, GitHub filesystem, agent sandbox, Strukto","author":"Strukto","robots":"index, follow","googlebot":"index, follow","canonical":"https://docs.mirage.strukto.ai","theme-color":"#0C0C0C","color-scheme":"light dark","language":"en","category":"Technology","target":"developers","apple-mobile-web-app-capable":"yes","apple-mobile-web-app-status-bar-style":"black-translucent","og:type":"website","og:url":"https://docs.mirage.strukto.ai","og:image":"https://raw.githubusercontent.com/strukto-ai/mirage/main/assets/mirage-og-light@2x.png","og:image:alt":"Mirage: a virtual terminal for AI agents","og:site_name":"Mirage","og:locale":"en_US","twitter:card":"summary_large_image","twitter:site":"@struktoai","twitter:creator":"@struktoai","twitter:image":"https://raw.githubusercontent.com/strukto-ai/mirage/main/assets/mirage-og-light@2x.png","twitter:image:alt":"Mirage · A Virtual Terminal for AI Agents | Strukto"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"struktoai","hasAudioNarration":false,"actualSubdomain":"struktoai","customDomains":["docs.mirage.strukto.ai"],"gitSource":{"type":"github","owner":"strukto-ai","repo":"mirage","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aecc113b20fc35bf671c161","collectionId":"c7fe3e69-889e-47b8-b169-a31692320da7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aecc113b20fc35bf671c161"},"entitlements":{},"buildId":"6aee565bda8ce456c16389fb","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"VFS","count":198},{"language":"default","tag":"Home","count":134},{"language":"default","tag":"API","count":98},{"language":"default","tag":"Operations","count":96},{"language":"default","tag":"TS","count":95},{"language":"default","tag":"Python","count":91},{"language":"default","tag":"CLIs","count":79},{"language":"default","tag":"Object Storage","count":48},{"language":"default","tag":"Cloud \u0026 Productivity","count":35},{"language":"default","tag":"Data \u0026 AI","count":33}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":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":"editor-metadata","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":[],"page":{"pagePath":"api/operations/saved-clis/list-cli-configs","slug":"/api/operations/saved-clis/list-cli-configs","pageMetadata":{"title":"List CLI configs","description":"The saved CLI configs: a CLI install's type and fields, kept by name for templates to use.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/clis","href":"/api/operations/saved-clis/list-cli-configs","autogeneratedByOpenApi":true},"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: \"The saved CLI configs: a CLI install’s type and fields, kept by name for templates to use.\"\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"List CLI configs","description":"The saved CLI configs: a CLI install's type and fields, kept by name for templates to use.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/clis","href":"/api/operations/saved-clis/list-cli-configs","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"list_entries_v1_clis_get","parameters":["0157482a-d8fa-4248-b075-41ab499a5356","070453f8-4b30-41fb-9b1f-442ecf5dbc91"],"responses":{"200":"70378d55-c122-4183-b614-52d8fadcb545","401":"abc58720-87db-402c-a1b3-ca1e2eb87cce","422":"f7775928-cd17-4bc3-ae41-09c82b2e7ed3","429":"0c7cf234-1e5b-4da7-8d50-9ffba51d07ba","501":"466d3eca-e0fc-4a4a-846a-03c37f6efd7e"},"summary":"List CLI configs","description":"The saved CLI configs: a CLI install's type and fields, kept by name for templates to use.","tags":["Saved CLIs"],"x-hosts":["daemon","hosted"],"method":"get","type":"path","servers":["5b646690-c8a6-470b-9b36-ade1de13789b"],"security":["4159ccc1-3afa-4800-8ae3-f86840818ec3"],"path":"/v1/clis","baseUrlOptions":["http://127.0.0.1:8765"],"title":"List CLI configs","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"0157482a-d8fa-4248-b075-41ab499a5356":{"in":"query","name":"type","required":false,"schema":{"oneOf":[{"type":"string","description":"Only entries of this type, such as s3.","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","description":"Only entries of this type, such as s3.","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"},"description":"Only entries of this type, such as s3."},"070453f8-4b30-41fb-9b1f-442ecf5dbc91":{"in":"query","name":"q","required":false,"schema":{"oneOf":[{"type":"string","description":"Only entries whose name contains this text, ignoring case.","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","description":"Only entries whose name contains this text, ignoring case.","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"},"description":"Only entries whose name contains this text, ignoring case."}},"responses":{"70378d55-c122-4183-b614-52d8fadcb545":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The entry's id; the daemon uses its name.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].name","typeLabel":"string"},"kind":{"type":"string","enum":["vfs","cli","runtime"],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"type":{"type":"string","description":"The VFS, CLI or runtime type, such as s3.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].type","typeLabel":"string"},"builtin":{"type":"boolean","isRequired":true,"uniqueKey":"\\items.items.[INDEX].builtin","typeLabel":"boolean"},"config":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","description":"A field's value, or a pointer to a saved store's secret for a string field.","uniqueKey":"\\items.items.[INDEX].config.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","description":"A field's value, or a pointer to a saved store's secret for a string field.","uniqueKey":"\\items.items.[INDEX].config.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"A field's value, or a pointer to a saved store's secret for a string field.","uniqueKey":"\\items.items.[INDEX].config.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"array","items":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].config.additionalProperties.oneOf.3.items.[INDEX]","typeLabel":"any"},"description":"A field's value, or a pointer to a saved store's secret for a string field.","uniqueKey":"\\items.items.[INDEX].config.additionalProperties.oneOf.3","typeLabel":"any[]"},{"type":"object","description":"A field's value, or a pointer to a saved store's secret for a string field.","required":["from","ref","key"],"properties":{"from":{"type":"string","description":"The saved store holding the secret.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].config.additionalProperties.oneOf.4.from","typeLabel":"string"},"ref":{"type":"string","description":"The secret in that store.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].config.additionalProperties.oneOf.4.ref","typeLabel":"string"},"key":{"type":"string","description":"The key inside that secret whose value the field takes.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].config.additionalProperties.oneOf.4.key","typeLabel":"string"}},"uniqueKey":"\\items.items.[INDEX].config.additionalProperties.oneOf.4","typeLabel":"object"}],"uniqueKey":"\\items.items.[INDEX].config.additionalProperties","typeLabel":"string | number | boolean | any[] | object"},"description":"The plain fields. Sealed fields are never answered.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].config","typeLabel":"object"},"captures":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"\\items.items.[INDEX].captures.items.[INDEX]","typeLabel":"any"},"description":"A runtime's captures; runtimes only.","uniqueKey":"\\items.items.[INDEX].captures","typeLabel":"any[]"},"created_by":{"oneOf":[{"type":"string","uniqueKey":"\\items.items.[INDEX].created_by.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"\\items.items.[INDEX].created_by.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].created_by","typeLabel":"string | null"},"created_at":{"oneOf":[{"type":"string","uniqueKey":"\\items.items.[INDEX].created_at.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"\\items.items.[INDEX].created_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].created_at","typeLabel":"string | null"},"updated_at":{"oneOf":[{"type":"string","uniqueKey":"\\items.items.[INDEX].updated_at.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"\\items.items.[INDEX].updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].updated_at","typeLabel":"string | null"},"used_by":{"type":"integer","description":"How many templates name the entry; in a list only.","uniqueKey":"\\items.items.[INDEX].used_by","typeLabel":"integer"}},"required":["id","name","kind","type","builtin","config"],"uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"\\items","typeLabel":"object[]"}},"required":["items"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"items":[{"id":"\u003cstring>","name":"\u003cstring>","kind":"vfs","type":"\u003cstring>","builtin":true,"config":{},"captures":["\u003cunknown>"],"created_by":"\u003cstring>","created_at":"\u003cstring>","updated_at":"\u003cstring>","used_by":123}]}}},"exampleType":"generated"}},"exampleType":"generated"},"abc58720-87db-402c-a1b3-ca1e2eb87cce":{"description":"The token is missing or wrong","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"description":"What went wrong, as text or a structured record.","isRequired":true,"uniqueKey":"detail","typeLabel":"any"},"errno":{"type":"string","description":"The errno of a failed file call, such as ENOENT.","uniqueKey":"errno","typeLabel":"string"},"refusal":{"type":"object","description":"The policy refusal, when a policy refused the call.","uniqueKey":"refusal","typeLabel":"object"}},"required":["detail"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":"\u003cunknown>","errno":"\u003cstring>","refusal":{}}}},"exampleType":"generated"},"text/plain":{"schema":{"type":"string","description":"The Python daemon answers Unauthorized as plain text.","uniqueKey":"","typeLabel":"string"},"examples":{"Example":{"title":"Example","value":"\u003cstring>"}},"exampleType":"generated"}},"exampleType":"generated"},"f7775928-cd17-4bc3-ae41-09c82b2e7ed3":{"content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"oneOf":[{"type":"string","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"integer","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.1","typeLabel":"integer"}],"uniqueKey":"detail.items.[INDEX].loc.items.[INDEX]","typeLabel":"string | integer"},"type":"array","title":"Location","isRequired":true,"uniqueKey":"detail.items.[INDEX].loc","typeLabel":"(string | integer)[]"},"msg":{"type":"string","title":"Message","isRequired":true,"uniqueKey":"detail.items.[INDEX].msg","typeLabel":"string"},"type":{"type":"string","title":"Error Type","isRequired":true,"uniqueKey":"detail.items.[INDEX].type","typeLabel":"string"},"input":{"oneOf":[{"title":"Input"}],"uniqueKey":"detail.items.[INDEX].input","typeLabel":"any"},"ctx":{"type":"object","title":"Context","uniqueKey":"detail.items.[INDEX].ctx","typeLabel":"Context · object"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError","uniqueKey":"detail.items.[INDEX]","typeLabel":"ValidationError · object"},"type":"array","title":"Detail","uniqueKey":"detail","typeLabel":"ValidationError · object[]"}},"type":"object","title":"HTTPValidationError","uniqueKey":"","typeLabel":"HTTPValidationError · object"},"examples":{"Example":{"title":"Example","value":{"detail":[{"loc":["\u003cstring>"],"msg":"\u003cstring>","type":"\u003cstring>","input":"\u003cunknown>","ctx":{}}]}}},"exampleType":"generated"}},"description":"Validation Error","exampleType":"generated"},"0c7cf234-1e5b-4da7-8d50-9ffba51d07ba":{"description":"Past a rate limit, or a new session past max_sessions","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"description":"What went wrong, as text or a structured record.","isRequired":true,"uniqueKey":"detail","typeLabel":"any"},"errno":{"type":"string","description":"The errno of a failed file call, such as ENOENT.","uniqueKey":"errno","typeLabel":"string"},"refusal":{"type":"object","description":"The policy refusal, when a policy refused the call.","uniqueKey":"refusal","typeLabel":"object"}},"required":["detail"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":"\u003cunknown>","errno":"\u003cstring>","refusal":{}}}},"exampleType":"generated"}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"exampleType":"generated"},"466d3eca-e0fc-4a4a-846a-03c37f6efd7e":{"description":"The server requires accounts; saved configs are kept only on a server of one account","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"description":"What went wrong, as text or a structured record.","isRequired":true,"uniqueKey":"detail","typeLabel":"any"},"errno":{"type":"string","description":"The errno of a failed file call, such as ENOENT.","uniqueKey":"errno","typeLabel":"string"},"refusal":{"type":"object","description":"The policy refusal, when a policy refused the call.","uniqueKey":"refusal","typeLabel":"object"}},"required":["detail"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":"\u003cunknown>","errno":"\u003cstring>","refusal":{}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"4159ccc1-3afa-4800-8ae3-f86840818ec3":{"bearerAuth":{"type":"http","scheme":"bearer","description":"The server's token (MIRAGE_AUTH_TOKEN) or a JWT. A daemon in the default local mode with no token accepts requests without one.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"5b646690-c8a6-470b-9b36-ade1de13789b":{"url":"http://127.0.0.1:8765","description":"A local daemon on its default port"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"The server's token (MIRAGE_AUTH_TOKEN) or a JWT. A daemon in the default local mode with no token accepts requests without one.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"The server's token (MIRAGE_AUTH_TOKEN) or a JWT. A daemon in the default local mode with no token accepts requests without one.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"struktoai","siteName":"Mirage","title":"List CLI configs - Mirage","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T19:53:33.162Z","originalFileLocation":"api/operations/saved-clis/list-cli-configs.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=\"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=\"The saved CLI configs: a CLI install\u0026#x27;s type and fields, kept by name for templates to use.\">\u003cmeta data-mint-head name=\"keywords\" content=\"Mirage, filesystem for AI agents, virtual filesystem, AI agent tools, agent infrastructure, MCP alternative, bash for agents, S3 filesystem, Google Drive filesystem, Slack filesystem, GitHub filesystem, agent sandbox, Strukto\">\u003cmeta data-mint-head name=\"application-name\" content=\"Mirage\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"List CLI configs - Mirage\">\u003cmeta data-mint-head property=\"og:description\" content=\"The saved CLI configs: a CLI install\u0026#x27;s type and fields, kept by name for templates to use.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Mirage\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.mirage.strukto.ai/api/operations/saved-clis/list-cli-configs\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://raw.githubusercontent.com/strukto-ai/mirage/main/assets/mirage-og-light@2x.png\">\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=\"List CLI configs - Mirage\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The saved CLI configs: a CLI install\u0026#x27;s type and fields, kept by name for templates to use.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://raw.githubusercontent.com/strukto-ai/mirage/main/assets/mirage-og-light@2x.png\">\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/struktoai/3lv99snhL-Tr_A0L/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Mirage\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0C0C0C\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"author\" content=\"Strukto\">\u003cmeta data-mint-head name=\"googlebot\" content=\"index, follow\">\u003cmeta data-mint-head name=\"theme-color\" content=\"#0C0C0C\">\u003cmeta data-mint-head name=\"color-scheme\" content=\"light dark\">\u003cmeta data-mint-head name=\"language\" content=\"en\">\u003cmeta data-mint-head name=\"category\" content=\"Technology\">\u003cmeta data-mint-head name=\"target\" content=\"developers\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-capable\" content=\"yes\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\">\u003cmeta data-mint-head name=\"og:image:alt\" content=\"Mirage: a virtual terminal for AI agents\">\u003cmeta data-mint-head name=\"twitter:creator\" content=\"@struktoai\">\u003cmeta data-mint-head name=\"twitter:image:alt\" content=\"Mirage · A Virtual Terminal for AI Agents | Strukto\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.mirage.strukto.ai/api/operations/saved-clis/list-cli-configs\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/operations/saved-clis/list-cli-configs.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.mirage.strukto.ai/#organization\",\"name\":\"Mirage\",\"url\":\"https://docs.mirage.strukto.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/struktoai/7G-pGKhPIqaKqOXr/logo/light.svg?fit=max\u0026auto=format\u0026n=7G-pGKhPIqaKqOXr\u0026q=85\u0026s=d7007be7b5588a72b2072d2c33791785\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.mirage.strukto.ai#website\",\"name\":\"Mirage\",\"url\":\"https://docs.mirage.strukto.ai\",\"publisher\":{\"@id\":\"https://docs.mirage.strukto.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.mirage.strukto.ai/api/operations/saved-clis/list-cli-configs#webpage\",\"url\":\"https://docs.mirage.strukto.ai/api/operations/saved-clis/list-cli-configs\",\"name\":\"List CLI configs\",\"description\":\"The saved CLI configs: a CLI install's type and fields, kept by name for templates to use.\",\"dateModified\":\"2026-11-06T19:53:33.162Z\",\"isPartOf\":{\"@id\":\"https://docs.mirage.strukto.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mirage.strukto.ai/api/operations/saved-clis/list-cli-configs#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mirage.strukto.ai/api/operations/saved-clis/list-cli-configs#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Operations\",\"item\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/list-workspaces\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"List CLI configs\",\"item\":\"https://docs.mirage.strukto.ai/api/operations/saved-clis/list-cli-configs\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.mirage.strukto.ai/api/operations/saved-clis/list-cli-configs#apireference\",\"headline\":\"List CLI configs\",\"name\":\"List CLI configs\",\"description\":\"The saved CLI configs: a CLI install's type and fields, kept by name for templates to use.\",\"url\":\"https://docs.mirage.strukto.ai/api/operations/saved-clis/list-cli-configs\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mirage.strukto.ai/api/operations/saved-clis/list-cli-configs#webpage\"},\"image\":\"https://raw.githubusercontent.com/strukto-ai/mirage/main/assets/mirage-og-light@2x.png\",\"dateModified\":\"2026-11-06T19:53:33.162Z\",\"publisher\":{\"@id\":\"https://docs.mirage.strukto.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.mirage.strukto.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Mirage\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Mirage","nav":{"global":null,"tabs":[{"tab":"Home","icon":"https://mintlify.s3.us-west-1.amazonaws.com/struktoai/images/mirage-icon-light.svg","pages":[{"title":"Home","href":"/home/introduction"}]},{"tab":"Python","icon":"https://mintlify.s3.us-west-1.amazonaws.com/struktoai/images/python-logo.svg","pages":[{"title":"Python","href":"/python/install"}]},{"tab":"TS","icon":"https://mintlify.s3.us-west-1.amazonaws.com/struktoai/images/typescript-logo.svg","pages":[{"title":"TS","href":"/typescript/install"}]},{"tab":"API","icon":"code","groups":[{"group":"HTTP API","pages":[{"title":"Overview","icon":"book-open","href":"/api/overview"},{"title":"API reference","description":"Every route of the Mirage HTTP API, generated from openapi.yaml.","icon":"list","href":"/api/reference"}]},{"group":"Operations","hidden":true,"searchable":true,"pages":[{"group":"Workspaces","pages":[{"title":"List workspaces","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces","href":"/api/operations/workspaces/list-workspaces"},{"title":"Create a workspace","description":"Create a workspace, or answer the live one created from this config.\n\nCreating is idempotent for one config: an id already held by a\nworkspace created from an identical config answers that workspace\nwith 200, so a client that names its workspace can run again and\nreach it; an id held by anything else is refused with 409. The\nserver's policies judge the config as written (`pre_workspace`)\nbefore any of it is built: a refusal is 403 with its reason, and\n`explain` answers what they say without creating anything.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces","href":"/api/operations/workspaces/create-a-workspace"},{"title":"Get a workspace","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}","href":"/api/operations/workspaces/get-a-workspace"},{"title":"Delete a workspace","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/workspaces/{workspace_id}","href":"/api/operations/workspaces/delete-a-workspace"},{"title":"Read a workspace's history","description":"The workspace's recorded history, oldest first: a `command`\nentry for every line its sessions ran, and with `vfs` a `vfs`\nentry for every call a line made to a mount. Read on the workspace's\nown loop.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/history","href":"/api/operations/workspaces/read-a-workspaces-history"},{"title":"Close a workspace","description":"Close the workspace and keep its state for the owner to reopen.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/close","href":"/api/operations/workspaces/close-a-workspace"},{"title":"Cancel a workspace's lines","description":"Cancel every session's running and queued lines; all stay open.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/cancel","href":"/api/operations/workspaces/cancel-a-workspaces-lines"},{"title":"Kill a workspace's jobs","description":"Kill every session's background jobs and runners.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/kill","href":"/api/operations/workspaces/kill-a-workspaces-jobs"},{"title":"Set a profile","description":"Define a named profile on the live workspace, or replace it.\n\nOnly the live table changes: a session moves when it is updated\nonto the name, and the workspace's config is never rewritten.","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/workspaces/{workspace_id}/profiles/{name}","href":"/api/operations/workspaces/set-a-profile"},{"title":"Install an MCP CLI","description":"Install an MCP server as a CLI on the live workspace.\n\nThe body is one `clis:` entry, `cli: mcp` with its config, as a\nconfig file states it. Its pointers resolve and its tools are listed\nunder the workspace's network. A name already installed answers 409.","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/workspaces/{workspace_id}/clis/{name}","href":"/api/operations/workspaces/install-an-mcp-cli"},{"title":"Remove an MCP CLI","description":"Remove an MCP CLI from the live workspace.","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/workspaces/{workspace_id}/clis/{name}","href":"/api/operations/workspaces/remove-an-mcp-cli"}]},{"group":"Snapshots","pages":[{"title":"Clone a workspace","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/clone","href":"/api/operations/snapshots/clone-a-workspace"},{"title":"Download a snapshot","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/snapshot","href":"/api/operations/snapshots/download-a-snapshot"},{"title":"Snapshot a workspace","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/snapshot","href":"/api/operations/snapshots/snapshot-a-workspace"},{"title":"Load a snapshot","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/load","href":"/api/operations/snapshots/load-a-snapshot"}]},{"group":"Templates","pages":[{"title":"List templates","description":"The saved templates, by name.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/templates","href":"/api/operations/templates/list-templates"},{"title":"Create a template","description":"Save a template: a whole workspace config, checked as a create\nchecks one, and kept as written. A name already saved is a 409.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/templates","href":"/api/operations/templates/create-a-template"},{"title":"Get a template","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/templates/{ref}","href":"/api/operations/templates/get-a-template"},{"title":"Delete a template","description":"Delete a template; `restore` brings it back.","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/templates/{ref}","href":"/api/operations/templates/delete-a-template"},{"title":"Restore a template","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/templates/{ref}/restore","href":"/api/operations/templates/restore-a-template"}]},{"group":"Documents","pages":[{"title":"Read the workspace's VFS.md","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/vfs-md","href":"/api/operations/documents/read-the-workspaces-vfsmd"},{"title":"Write the workspace's VFS.md","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/workspaces/{workspace_id}/vfs-md","href":"/api/operations/documents/write-the-workspaces-vfsmd"},{"title":"Read a session's VFS.md","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/sessions/{session_id}/vfs-md","href":"/api/operations/documents/read-a-sessions-vfsmd"},{"title":"Write a session's VFS.md","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/workspaces/{workspace_id}/sessions/{session_id}/vfs-md","href":"/api/operations/documents/write-a-sessions-vfsmd"},{"title":"Read the workspace's SKILL.md","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/skill-md","href":"/api/operations/documents/read-the-workspaces-skillmd"},{"title":"Write the workspace's SKILL.md","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/workspaces/{workspace_id}/skill-md","href":"/api/operations/documents/write-the-workspaces-skillmd"},{"title":"Read a session's SKILL.md","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/sessions/{session_id}/skill-md","href":"/api/operations/documents/read-a-sessions-skillmd"},{"title":"Write a session's SKILL.md","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/workspaces/{workspace_id}/sessions/{session_id}/skill-md","href":"/api/operations/documents/write-a-sessions-skillmd"}]},{"group":"Sessions","pages":[{"title":"List sessions","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/sessions","href":"/api/operations/sessions/list-sessions"},{"title":"Create a session","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/sessions","href":"/api/operations/sessions/create-a-session"},{"title":"Delete a session","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/workspaces/{workspace_id}/sessions/{session_id}","href":"/api/operations/sessions/delete-a-session"},{"title":"Change a session's profile","description":"Replace the session's profile; its cwd, env and history stay.","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /v1/workspaces/{workspace_id}/sessions/{session_id}","href":"/api/operations/sessions/change-a-sessions-profile"},{"title":"Cancel a session's lines","description":"Cancel the session's running and queued lines, from every entry point.\n\nThe session stays open; returns once those lines have ended.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/sessions/{session_id}/cancel","href":"/api/operations/sessions/cancel-a-sessions-lines"},{"title":"Kill a session's jobs","description":"Kill the session's background jobs and runners; it stays open.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/sessions/{session_id}/kill","href":"/api/operations/sessions/kill-a-sessions-jobs"}]},{"group":"Asks","pages":[{"title":"List asks","description":"The workspace's asks: pending by default, every decision under\n`all=true`. The ledger already serves both views from one store,\nso the entry point only picks which query to run.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/asks","href":"/api/operations/asks/list-asks"},{"title":"Answer an ask","description":"Answer one waiting ask, allow or deny, and return the settled\nrecord. A known id with nothing waiting is 409 rather than 404, so\nan operator retrying a click reads \"already answered\", not \"not\nfound\".","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/asks/{ask_id}","href":"/api/operations/asks/answer-an-ask"}]},{"group":"Shell","pages":[{"title":"Run a shell line","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/shell","href":"/api/operations/shell/run-a-shell-line"},{"title":"Match paths","description":"`session.glob`: every path a pattern matches, as the session\nsees them.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/glob","href":"/api/operations/shell/match-paths"}]},{"group":"Tools","pages":[{"title":"Shell tool","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/tools/shell","href":"/api/operations/tools/shell-tool"},{"title":"Read tool","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/tools/read","href":"/api/operations/tools/read-tool"},{"title":"Write tool","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/tools/write","href":"/api/operations/tools/write-tool"},{"title":"Edit tool","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/tools/edit","href":"/api/operations/tools/edit-tool"},{"title":"Ls tool","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/tools/ls","href":"/api/operations/tools/ls-tool"},{"title":"Grep tool","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/tools/grep","href":"/api/operations/tools/grep-tool"},{"title":"Glob tool","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/tools/glob","href":"/api/operations/tools/glob-tool"}]},{"group":"VFS","pages":[{"title":"VFS read","description":"Read a file's bytes, from an offset.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/read","href":"/api/operations/vfs/vfs-read"},{"title":"VFS write","description":"Write a file's bytes, replacing what it held.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/write","href":"/api/operations/vfs/vfs-write"},{"title":"VFS append","description":"Append bytes to a file.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/append","href":"/api/operations/vfs/vfs-append"},{"title":"VFS pwrite","description":"Write bytes into a file at an offset.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/pwrite","href":"/api/operations/vfs/vfs-pwrite"},{"title":"VFS stat","description":"A path's metadata.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/stat","href":"/api/operations/vfs/vfs-stat"},{"title":"VFS readdir","description":"A directory's entries.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/readdir","href":"/api/operations/vfs/vfs-readdir"},{"title":"VFS exists","description":"Whether a path exists.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/exists","href":"/api/operations/vfs/vfs-exists"},{"title":"VFS is_dir","description":"Whether a path is a directory.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/is_dir","href":"/api/operations/vfs/vfs-is_dir"},{"title":"VFS is_file","description":"Whether a path is a file.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/is_file","href":"/api/operations/vfs/vfs-is_file"},{"title":"VFS list_files","description":"The names of a directory's files.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/list_files","href":"/api/operations/vfs/vfs-list_files"},{"title":"VFS mkdir","description":"Make a directory.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/mkdir","href":"/api/operations/vfs/vfs-mkdir"},{"title":"VFS rmdir","description":"Remove an empty directory.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/rmdir","href":"/api/operations/vfs/vfs-rmdir"},{"title":"VFS unlink","description":"Remove a file.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/unlink","href":"/api/operations/vfs/vfs-unlink"},{"title":"VFS create","description":"Create an empty file.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/create","href":"/api/operations/vfs/vfs-create"},{"title":"VFS rename","description":"Rename a path within its mount.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/rename","href":"/api/operations/vfs/vfs-rename"},{"title":"VFS symlink","description":"Make a symbolic link at a path.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/symlink","href":"/api/operations/vfs/vfs-symlink"},{"title":"VFS readlink","description":"Where a symbolic link points.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/readlink","href":"/api/operations/vfs/vfs-readlink"},{"title":"VFS setattr","description":"Change a path's mode, owner or times.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/setattr","href":"/api/operations/vfs/vfs-setattr"},{"title":"VFS getxattr","description":"One extended attribute's value.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/getxattr","href":"/api/operations/vfs/vfs-getxattr"},{"title":"VFS listxattr","description":"A path's extended attribute names.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/listxattr","href":"/api/operations/vfs/vfs-listxattr"},{"title":"VFS setxattr","description":"Set an extended attribute.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/setxattr","href":"/api/operations/vfs/vfs-setxattr"},{"title":"VFS removexattr","description":"Remove an extended attribute.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/removexattr","href":"/api/operations/vfs/vfs-removexattr"},{"title":"VFS truncate","description":"Cut or extend a file to a length.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/truncate","href":"/api/operations/vfs/vfs-truncate"},{"title":"Call any VFS function","description":"Call a declared VFS function using the ordinary session and policy gate.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/{name}","href":"/api/operations/vfs/call-any-vfs-function"}]},{"group":"Server","pages":[{"title":"Check health","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/health","href":"/api/operations/server/check-health"},{"title":"Check readiness","description":"Whether the server takes new workspaces: 503 while it drains for\nshutdown or holds `max_workspaces`, so a load balancer sends new\nwork elsewhere. `/v1/health` only says the process is up.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/ready","href":"/api/operations/server/check-readiness"},{"title":"Shut down the server","description":"Trip the exit event, which the app's `on_idle_exit` acts on.\n\nThe daemon's hook sends SIGTERM to its own process, so uvicorn runs\nits graceful shutdown (close connections, run the lifespan's finally\nblock). An app run without a hook keeps serving. The server serves\nevery account, so an account may not stop it.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/shutdown","href":"/api/operations/server/shut-down-the-server"}]},{"group":"Auth","pages":[{"title":"Read OAuth protected-resource metadata","description":"Say where to log in, for `mirage login`.\n\nRFC 9728's protected resource metadata names the issuer, and\n`client_id` the OAuth client the CLI signs in as. A server that\npublishes no login answers 404, so the CLI knows it needs none.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /.well-known/oauth-protected-resource","href":"/api/operations/auth/read-oauth-protected-resource-metadata"}]},{"group":"Saved VFS","pages":[{"title":"List VFS configs","description":"The saved VFS configs: a mount's type and fields, kept by name for templates to use.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/vfs","href":"/api/operations/saved-vfs/list-vfs-configs"},{"title":"Create a VFS config","description":"Save a VFS config. Its fields are checked against the type's; secret fields are sealed, and a string field may point at a saved store's secret instead. A name already saved is a 409.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/vfs","href":"/api/operations/saved-vfs/create-a-vfs-config"},{"title":"List VFS config types","description":"Every type a VFS config can be, with the fields its config takes.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/vfs/types","href":"/api/operations/saved-vfs/list-vfs-config-types"},{"title":"Get a VFS config","description":"One saved VFS config, with its sealed fields named but not answered.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/vfs/{ref}","href":"/api/operations/saved-vfs/get-a-vfs-config"},{"title":"Update a VFS config","description":"Change a VFS config's fields. Its name and type stay; a sealed field left out keeps its value.","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/vfs/{ref}","href":"/api/operations/saved-vfs/update-a-vfs-config"},{"title":"Delete a VFS config","description":"Delete a saved VFS config.","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/vfs/{ref}","href":"/api/operations/saved-vfs/delete-a-vfs-config"}]},{"group":"Saved CLIs","pages":[{"title":"List CLI configs","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/clis","href":"/api/operations/saved-clis/list-cli-configs"},{"title":"Create a CLI config","description":"Save a CLI config. Its fields are checked against the type's; secret fields are sealed, and a string field may point at a saved store's secret instead. A name already saved is a 409.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/clis","href":"/api/operations/saved-clis/create-a-cli-config"},{"title":"List CLI config types","description":"Every type a CLI config can be, with the fields its config takes.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/clis/types","href":"/api/operations/saved-clis/list-cli-config-types"},{"title":"Get a CLI config","description":"One saved CLI config, with its sealed fields named but not answered.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/clis/{ref}","href":"/api/operations/saved-clis/get-a-cli-config"},{"title":"Update a CLI config","description":"Change a CLI config's fields. Its name and type stay; a sealed field left out keeps its value.","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/clis/{ref}","href":"/api/operations/saved-clis/update-a-cli-config"},{"title":"Delete a CLI config","description":"Delete a saved CLI config.","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/clis/{ref}","href":"/api/operations/saved-clis/delete-a-cli-config"}]},{"group":"Saved runtimes","pages":[{"title":"List runtime configs","description":"The saved runtime configs: a runtime's type and fields, kept by name for templates to use.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/runtimes","href":"/api/operations/saved-runtimes/list-runtime-configs"},{"title":"Create a runtime config","description":"Save a runtime config. Its fields are checked against the type's; secret fields are sealed, and a string field may point at a saved store's secret instead. A name already saved is a 409.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/runtimes","href":"/api/operations/saved-runtimes/create-a-runtime-config"},{"title":"List runtime config types","description":"Every type a runtime config can be, with the fields its config takes.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/runtimes/types","href":"/api/operations/saved-runtimes/list-runtime-config-types"},{"title":"Get a runtime config","description":"One saved runtime config, with its sealed fields named but not answered.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/runtimes/{ref}","href":"/api/operations/saved-runtimes/get-a-runtime-config"},{"title":"Update a runtime config","description":"Change a runtime config's fields. Its name and type stay; a sealed field left out keeps its value.","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/runtimes/{ref}","href":"/api/operations/saved-runtimes/update-a-runtime-config"},{"title":"Delete a runtime config","description":"Delete a saved runtime config.","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/runtimes/{ref}","href":"/api/operations/saved-runtimes/delete-a-runtime-config"}]},{"group":"Policies","pages":[{"title":"List policies","description":"The saved policies' names, sorted. Get one for its source.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/policies","href":"/api/operations/policies/list-policies"},{"title":"Create a policy","description":"Save a policy program, by name. A name already saved is a 409.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/policies","href":"/api/operations/policies/create-a-policy"},{"title":"Get a policy","description":"One saved policy, with its source.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/policies/{ref}","href":"/api/operations/policies/get-a-policy"},{"title":"Update a policy","description":"Replace a saved policy's source.","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/policies/{ref}","href":"/api/operations/policies/update-a-policy"},{"title":"Delete a policy","description":"Delete a saved policy.","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/policies/{ref}","href":"/api/operations/policies/delete-a-policy"}]}]}]}]},"basePath":"","title":"List CLI configs - Mirage","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}