Return completed commands newest first by start time and ID, with their mount calls. JSON started_at values and durations are milliseconds. JSONL exports all retained matching commands oldest first as command, vfs and result records, linked by parent, with timestamp in Unix milliseconds. JSONL ignores limit and after. Empty JSON is {items: [], next: null}; empty JSONL has an empty body. Retention is server-specific. Cursors are opaque and server-specific; pagination is not a snapshot.
{"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":"simple"},"examples":{"defaults":"all","languages":["curl","python","javascript"],"prefill":true}},"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":""},"entitlements":{},"buildId":"6aef2d2d59edac7bace65589","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"VFS","count":204},{"language":"default","tag":"Home","count":134},{"language":"default","tag":"TS","count":95},{"language":"default","tag":"Python","count":91},{"language":"default","tag":"CLIs","count":85},{"language":"default","tag":"API","count":82},{"language":"default","tag":"Resources","count":77},{"language":"default","tag":"Object Storage","count":48},{"language":"default","tag":"Workspaces","count":48},{"language":"default","tag":"Cloud \u0026 Productivity","count":35}]},"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/workspaces/read-a-workspaces-logs","slug":"/api/operations/workspaces/read-a-workspaces-logs","pageMetadata":{"title":"Read a workspace's logs","description":"Return completed commands newest first by start time and ID, with their mount calls. JSON started_at values and durations are milliseconds. JSONL exports all retained matching commands oldest first as command, vfs and result records, linked by parent, with timestamp in Unix milliseconds. JSONL ignores limit and after. Empty JSON is {items: [], next: null}; empty JSONL has an empty body. Retention is server-specific. Cursors are opaque and server-specific; pagination is not a snapshot.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/logs","href":"/api/operations/workspaces/read-a-workspaces-logs","autogeneratedByOpenApi":true},"description":"Return completed commands newest first by start time and ID, with their mount calls. JSON started_at values and durations are milliseconds. JSONL exports all retained matching commands oldest first as command, vfs and result records, linked by parent, with timestamp in Unix milliseconds. JSONL ignores limit and after. Empty JSON is {items: [], next: null}; empty JSONL has an empty body. Retention is server-specific. Cursors are opaque and server-specific; pagination is not a snapshot.","pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Accordion,Table}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(Accordion,{title:`Errors`,id:`errors`,children:[_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`400`})}),_jsx(_components.td,{children:`Bad request: malformed, a host not allowed, or a browser page from another origin`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`401`})}),_jsx(_components.td,{children:`The token is missing or wrong`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`404`})}),_jsx(_components.td,{children:`The workspace, session, job or file does not exist`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`422`})}),_jsx(_components.td,{children:`Validation Error`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`429`})}),_jsx(_components.td,{children:`Past a rate limit, or a new session past max_sessions`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`403`})}),_jsx(_components.td,{children:`A policy or mount mode refused the call`})]})]})]}),_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/api/errors`,children:`error examples and recovery steps`}),`. The `,_jsx(_components.a,{href:`https://github.com/strukto-ai/mirage/blob/main/docs/openapi.yaml`,children:`complete OpenAPI contract`}),` includes every response schema.`]})]})}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":"Read a workspace's logs","description":"Return completed commands newest first by start time and ID, with their mount calls. JSON started_at values and durations are milliseconds. JSONL exports all retained matching commands oldest first as command, vfs and result records, linked by parent, with timestamp in Unix milliseconds. JSONL ignores limit and after. Empty JSON is {items: [], next: null}; empty JSONL has an empty body. Retention is server-specific. Cursors are opaque and server-specific; pagination is not a snapshot.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/logs","href":"/api/operations/workspaces/read-a-workspaces-logs","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Read a workspace's logs","operationId":"workspace_logs_v1_workspaces__workspace_id__logs_get","parameters":["a3b0b6d0-9ae1-438f-91e3-8d09c1ba4f1f","3b5f2fb0-acf4-4536-92cd-c112533435f3","ed53e5ec-63de-4050-a881-a35c6f50415b","7cd8291f-a308-4dc9-8e38-d86d0d4f626f","66f15389-2b42-475d-bb7e-e49c6ace37fb"],"responses":{"200":"5bf54f25-f993-4605-bfe7-df862096309b"},"description":"Return completed commands newest first by start time and ID, with their mount calls. JSON started_at values and durations are milliseconds. JSONL exports all retained matching commands oldest first as command, vfs and result records, linked by parent, with timestamp in Unix milliseconds. JSONL ignores limit and after. Empty JSON is {items: [], next: null}; empty JSONL has an empty body. Retention is server-specific. Cursors are opaque and server-specific; pagination is not a snapshot.","tags":["Workspaces"],"x-hosts":["daemon","hosted"],"servers":["81835cf7-f790-4606-b2c9-3f1a593cf445","19631425-5456-4588-afb6-eebc7d544172"],"x-mint":{"content":"\u003cAccordion title=\"Errors\">\n\n| Status | Meaning |\n| --- | --- |\n| `400` | Bad request: malformed, a host not allowed, or a browser page from another origin |\n| `401` | The token is missing or wrong |\n| `404` | The workspace, session, job or file does not exist |\n| `422` | Validation Error |\n| `429` | Past a rate limit, or a new session past max_sessions |\n| `403` | A policy or mount mode refused the call |\n\nSee [error examples and recovery steps](/api/errors). The [complete OpenAPI contract](https://github.com/strukto-ai/mirage/blob/main/docs/openapi.yaml) includes every response schema.\n\n\u003c/Accordion>"},"method":"get","type":"path","security":["f80a26ab-2f74-420c-9d41-5e939d626891"],"path":"/v1/workspaces/{workspace_id}/logs","baseUrlOptions":["https://api.strukto.ai","http://127.0.0.1:8765"],"title":"Read a workspace's logs","codeSamples":[],"requestExampleLanguages":["bash","python","javascript"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[]},"dependencies":{"parameters":{"a3b0b6d0-9ae1-438f-91e3-8d09c1ba4f1f":{"name":"workspace_id","in":"path","required":true,"description":"The workspace's id.","schema":{"type":"string","isRequired":true,"description":"The workspace's id.","uniqueKey":"","typeLabel":"string"},"example":"demo"},"3b5f2fb0-acf4-4536-92cd-c112533435f3":{"name":"session","in":"query","description":"Only this session; absent or empty selects all sessions.","schema":{"type":"string","description":"Only this session; absent or empty selects all sessions.","uniqueKey":"","typeLabel":"string"}},"ed53e5ec-63de-4050-a881-a35c6f50415b":{"name":"limit","in":"query","description":"Commands per JSON page. Ignored for JSONL export.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50,"description":"Commands per JSON page. Ignored for JSONL export.","uniqueKey":"","typeLabel":"integer"}},"7cd8291f-a308-4dc9-8e38-d86d0d4f626f":{"name":"after","in":"query","description":"Opaque next cursor from the previous page with the same filters. Ignored for JSONL export.","schema":{"type":"string","description":"Opaque next cursor from the previous page with the same filters. Ignored for JSONL export.","uniqueKey":"","typeLabel":"string"}},"66f15389-2b42-475d-bb7e-e49c6ace37fb":{"name":"format","in":"query","description":"jsonl downloads all retained matching commands; other values select JSON.","schema":{"type":"string","default":"json","description":"jsonl downloads all retained matching commands; other values select JSON.","uniqueKey":"","typeLabel":"string"}}},"responses":{"5bf54f25-f993-4605-bfe7-df862096309b":{"description":"OK","content":{"application/json":{"schema":{"properties":{"items":{"items":{"properties":{"id":{"title":"Id","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].id","typeLabel":"string"},"command":{"title":"Command","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].command","typeLabel":"string"},"cwd":{"oneOf":[{"type":"string","title":"Cwd","isRequired":true,"uniqueKey":"\\items.items.[INDEX].cwd.oneOf.0","typeLabel":"string"},{"type":"null","title":"Cwd","isRequired":true,"uniqueKey":"\\items.items.[INDEX].cwd.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].cwd","typeLabel":"string | null"},"started_at":{"description":"Start time as Unix epoch milliseconds.","title":"Started At","type":"number","isRequired":true,"uniqueKey":"\\items.items.[INDEX].started_at","typeLabel":"number"},"duration_ms":{"title":"Duration Ms","type":"number","isRequired":true,"uniqueKey":"\\items.items.[INDEX].duration_ms","typeLabel":"number"},"exit_code":{"oneOf":[{"type":"integer","title":"Exit Code","isRequired":true,"uniqueKey":"\\items.items.[INDEX].exit_code.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Exit Code","isRequired":true,"uniqueKey":"\\items.items.[INDEX].exit_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].exit_code","typeLabel":"integer | null"},"stdout":{"title":"Stdout","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].stdout","typeLabel":"string"},"stderr":{"title":"Stderr","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].stderr","typeLabel":"string"},"user_id":{"oneOf":[{"type":"string","title":"User Id","isRequired":true,"uniqueKey":"\\items.items.[INDEX].user_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"User Id","isRequired":true,"uniqueKey":"\\items.items.[INDEX].user_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].user_id","typeLabel":"string | null"},"api_key_id":{"oneOf":[{"type":"string","title":"Api Key Id","isRequired":true,"uniqueKey":"\\items.items.[INDEX].api_key_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Api Key Id","isRequired":true,"uniqueKey":"\\items.items.[INDEX].api_key_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].api_key_id","typeLabel":"string | null"},"mounts":{"items":{"properties":{"op":{"title":"Op","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].mounts.items.[INDEX].op","typeLabel":"string"},"path":{"title":"Path","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].mounts.items.[INDEX].path","typeLabel":"string"},"source":{"title":"Source","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].mounts.items.[INDEX].source","typeLabel":"string"},"bytes":{"oneOf":[{"type":"integer","title":"Bytes","isRequired":true,"uniqueKey":"\\items.items.[INDEX].mounts.items.[INDEX].bytes.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Bytes","isRequired":true,"uniqueKey":"\\items.items.[INDEX].mounts.items.[INDEX].bytes.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"\\items.items.[INDEX].mounts.items.[INDEX].bytes","typeLabel":"integer | null"},"started_at":{"description":"Start time as Unix epoch milliseconds.","title":"Started At","type":"number","isRequired":true,"uniqueKey":"\\items.items.[INDEX].mounts.items.[INDEX].started_at","typeLabel":"number"},"duration_ms":{"title":"Duration Ms","type":"number","isRequired":true,"uniqueKey":"\\items.items.[INDEX].mounts.items.[INDEX].duration_ms","typeLabel":"number"}},"required":["op","path","source","bytes","started_at","duration_ms"],"title":"LogMount","type":"object","uniqueKey":"\\items.items.[INDEX].mounts.items.[INDEX]","typeLabel":"LogMount · object"},"title":"Mounts","type":"array","isRequired":true,"uniqueKey":"\\items.items.[INDEX].mounts","typeLabel":"LogMount · object[]"}},"required":["id","command","cwd","started_at","duration_ms","exit_code","stdout","stderr","user_id","api_key_id","mounts"],"title":"CommandLog","type":"object","uniqueKey":"\\items.items.[INDEX]","typeLabel":"CommandLog · object"},"title":"Items","type":"array","isRequired":true,"uniqueKey":"\\items","typeLabel":"CommandLog · object[]"},"next":{"oneOf":[{"type":"string","title":"Next","isRequired":true,"uniqueKey":"next.oneOf.0","typeLabel":"string"},{"type":"null","title":"Next","isRequired":true,"uniqueKey":"next.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"next","typeLabel":"string | null"}},"required":["items","next"],"title":"LogPage","type":"object","uniqueKey":"","typeLabel":"LogPage · object"},"example":{"items":[{"id":"c1","command":"echo hi","cwd":"/","started_at":1700000000000,"duration_ms":8,"exit_code":0,"stdout":"hi\n","stderr":"","user_id":null,"api_key_id":null,"mounts":[]}],"next":null},"examples":{"Example":{"title":"Example","value":{"items":[{"id":"c1","command":"echo hi","cwd":"/","started_at":1700000000000,"duration_ms":8,"exit_code":0,"stdout":"hi\n","stderr":"","user_id":null,"api_key_id":null,"mounts":[]}],"next":null}}},"exampleType":"examples"},"application/x-ndjson":{"schema":{"type":"string","uniqueKey":"","typeLabel":"string"},"example":"{\"type\":\"command\",\"session\":\"s1\",\"timestamp\":1700000000000,\"id\":\"c1\",\"command\":\"echo hi\"}\n{\"type\":\"result\",\"session\":\"s1\",\"timestamp\":1700000000008,\"parent\":\"c1\",\"duration_ms\":8,\"exit_code\":0,\"stdout\":\"hi\\n\",\"stderr\":\"\"}\n","examples":{"Example":{"title":"Example","value":"{\"type\":\"command\",\"session\":\"s1\",\"timestamp\":1700000000000,\"id\":\"c1\",\"command\":\"echo hi\"}\n{\"type\":\"result\",\"session\":\"s1\",\"timestamp\":1700000000008,\"parent\":\"c1\",\"duration_ms\":8,\"exit_code\":0,\"stdout\":\"hi\\n\",\"stderr\":\"\"}\n"}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"f80a26ab-2f74-420c-9d41-5e939d626891":{"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":{"81835cf7-f790-4606-b2c9-3f1a593cf445":{"url":"https://api.strukto.ai","description":"Cloud API"},"19631425-5456-4588-afb6-eebc7d544172":{"url":"http://127.0.0.1:8765","description":"Local daemon"}},"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":"Read a workspace's logs - Mirage","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-07T13:52:51.739Z","originalFileLocation":"api/operations/workspaces/read-a-workspaces-logs.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=\"Return completed commands newest first by start time and ID, with their mount calls. JSON started_at values and durations are milliseconds. JSONL exports all retained matching commands oldest first as command, vfs and result records, linked by parent, with timestamp in Unix milliseconds. JSONL ignores limit and after. Empty JSON is {items: [], next: null}; empty JSONL has an empty body. Retention is server-specific. Cursors are opaque and server-specific; pagination is not a snapshot.\">\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=\"Read a workspace\u0026#x27;s logs - Mirage\">\u003cmeta data-mint-head property=\"og:description\" content=\"Return completed commands newest first by start time and ID, with their mount calls. JSON started_at values and durations are milliseconds. JSONL exports all retained matching commands oldest first as command, vfs and result records, linked by parent, with timestamp in Unix milliseconds. JSONL ignores limit and after. Empty JSON is {items: [], next: null}; empty JSONL has an empty body. Retention is server-specific. Cursors are opaque and server-specific; pagination is not a snapshot.\">\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/workspaces/read-a-workspaces-logs\">\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=\"Read a workspace\u0026#x27;s logs - Mirage\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Return completed commands newest first by start time and ID, with their mount calls. JSON started_at values and durations are milliseconds. JSONL exports all retained matching commands oldest first as command, vfs and result records, linked by parent, with timestamp in Unix milliseconds. JSONL ignores limit and after. Empty JSON is {items: [], next: null}; empty JSONL has an empty body. Retention is server-specific. Cursors are opaque and server-specific; pagination is not a snapshot.\">\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/workspaces/read-a-workspaces-logs\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/operations/workspaces/read-a-workspaces-logs.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/workspaces/read-a-workspaces-logs#webpage\",\"url\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/read-a-workspaces-logs\",\"name\":\"Read a workspace's logs\",\"description\":\"Return completed commands newest first by start time and ID, with their mount calls. JSON started_at values and durations are milliseconds. JSONL exports all retained matching commands oldest first as command, vfs and result records, linked by parent, with timestamp in Unix milliseconds. JSONL ignores limit and after. Empty JSON is {items: [], next: null}; empty JSONL has an empty body. Retention is server-specific. Cursors are opaque and server-specific; pagination is not a snapshot.\",\"dateModified\":\"2026-11-07T13:52:51.739Z\",\"isPartOf\":{\"@id\":\"https://docs.mirage.strukto.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/read-a-workspaces-logs#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/read-a-workspaces-logs#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Resources\",\"item\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/list-workspaces\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Workspaces\",\"item\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/list-workspaces\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Lifecycle\",\"item\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/list-workspaces\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Read a workspace's logs\",\"item\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/read-a-workspaces-logs\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/read-a-workspaces-logs#apireference\",\"headline\":\"Read a workspace's logs\",\"name\":\"Read a workspace's logs\",\"description\":\"Return completed commands newest first by start time and ID, with their mount calls. JSON started_at values and durations are milliseconds. JSONL exports all retained matching commands oldest first as command, vfs and result records, linked by parent, with timestamp in Unix milliseconds. JSONL ignores limit and after. Empty JSON is {items: [], next: null}; empty JSONL has an empty body. Retention is server-specific. Cursors are opaque and server-specific; pagination is not a snapshot.\",\"url\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/read-a-workspaces-logs\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/read-a-workspaces-logs#webpage\"},\"image\":\"https://raw.githubusercontent.com/strukto-ai/mirage/main/assets/mirage-og-light@2x.png\",\"dateModified\":\"2026-11-07T13:52:51.739Z\",\"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":"Quickstart","icon":"bolt","href":"/api/quickstart"},{"title":"Authentication","icon":"key","href":"/api/authentication"},{"title":"Errors","icon":"triangle-exclamation","href":"/api/errors"},{"title":"API reference","icon":"list","href":"/api/reference"}]},{"group":"Resources","pages":[{"group":"Workspaces","pages":[{"group":"Lifecycle","pages":[{"title":"List workspaces","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces","href":"/api/operations/workspaces/list-workspaces"},{"title":"Create a workspace","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces","href":"/api/operations/workspaces/create-a-workspace"},{"title":"Get a workspace","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 logs","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/logs","href":"/api/operations/workspaces/read-a-workspaces-logs"},{"title":"Stop a workspace","description":"Stop the workspace and keep its state and config for start. A stopped workspace answers as it is, so a stop can be repeated.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/stop","href":"/api/operations/workspaces/stop-a-workspace"},{"title":"Start a workspace","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/start","href":"/api/operations/workspaces/start-a-workspace"},{"title":"Cancel a workspace's lines","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","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","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","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","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/workspaces/{workspace_id}/clis/{name}","href":"/api/operations/workspaces/remove-an-mcp-cli"}]},{"group":"Documents","pages":[{"title":"Read the workspace's VFS.md","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","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","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","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","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","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","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","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":"Asks","pages":[{"title":"List asks","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/asks","href":"/api/operations/asks/list-asks"},{"title":"Answer an ask","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","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/shell","href":"/api/operations/shell/run-a-shell-line"},{"title":"Match paths","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/glob","href":"/api/operations/shell/match-paths"}]},{"group":"VFS","pages":[{"title":"VFS read","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/read","href":"/api/operations/vfs/vfs-read"},{"title":"VFS write","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/write","href":"/api/operations/vfs/vfs-write"},{"title":"VFS append","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/append","href":"/api/operations/vfs/vfs-append"},{"title":"VFS pwrite","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/pwrite","href":"/api/operations/vfs/vfs-pwrite"},{"title":"VFS stat","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/stat","href":"/api/operations/vfs/vfs-stat"},{"title":"VFS readdir","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/readdir","href":"/api/operations/vfs/vfs-readdir"},{"title":"VFS 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","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","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","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","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/mkdir","href":"/api/operations/vfs/vfs-mkdir"},{"title":"VFS rmdir","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/rmdir","href":"/api/operations/vfs/vfs-rmdir"},{"title":"VFS unlink","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/unlink","href":"/api/operations/vfs/vfs-unlink"},{"title":"VFS create","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/create","href":"/api/operations/vfs/vfs-create"},{"title":"VFS rename","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/rename","href":"/api/operations/vfs/vfs-rename"},{"title":"VFS symlink","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/symlink","href":"/api/operations/vfs/vfs-symlink"},{"title":"VFS readlink","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/readlink","href":"/api/operations/vfs/vfs-readlink"},{"title":"VFS setattr","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/setattr","href":"/api/operations/vfs/vfs-setattr"},{"title":"VFS getxattr","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/getxattr","href":"/api/operations/vfs/vfs-getxattr"},{"title":"VFS listxattr","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/listxattr","href":"/api/operations/vfs/vfs-listxattr"},{"title":"VFS setxattr","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/setxattr","href":"/api/operations/vfs/vfs-setxattr"},{"title":"VFS removexattr","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/removexattr","href":"/api/operations/vfs/vfs-removexattr"},{"title":"VFS truncate","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","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/{name}","href":"/api/operations/vfs/call-any-vfs-function"}]}]},{"group":"Templates","pages":[{"title":"List templates","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/templates","href":"/api/operations/templates/list-templates"},{"title":"Create a template","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/templates","href":"/api/operations/templates/create-a-template"},{"title":"Get a template","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/templates/{ref}","href":"/api/operations/templates/get-a-template"},{"title":"Delete a template","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/templates/{ref}","href":"/api/operations/templates/delete-a-template"},{"title":"Restore a template","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/templates/{ref}/restore","href":"/api/operations/templates/restore-a-template"}]},{"group":"Server","pages":[{"title":"Check health","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/health","href":"/api/operations/server/check-health"}]},{"group":"Saved configurations","pages":[{"group":"VFS","pages":[{"title":"List VFS configs","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/vfs","href":"/api/operations/saved-vfs/list-vfs-configs"},{"title":"Create a VFS config","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/vfs","href":"/api/operations/saved-vfs/create-a-vfs-config"},{"title":"List VFS config types","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","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","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","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/vfs/{ref}","href":"/api/operations/saved-vfs/delete-a-vfs-config"}]},{"group":"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","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/clis","href":"/api/operations/saved-clis/create-a-cli-config"},{"title":"List CLI config types","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","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","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","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/clis/{ref}","href":"/api/operations/saved-clis/delete-a-cli-config"}]},{"group":"Runtimes","pages":[{"title":"List runtime configs","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/runtimes","href":"/api/operations/saved-runtimes/list-runtime-configs"},{"title":"Create a runtime config","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/runtimes","href":"/api/operations/saved-runtimes/create-a-runtime-config"},{"title":"List runtime config types","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","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","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","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","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/policies","href":"/api/operations/policies/list-policies"},{"title":"Create a policy","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/policies","href":"/api/operations/policies/create-a-policy"},{"title":"Get a policy","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/policies/{ref}","href":"/api/operations/policies/get-a-policy"},{"title":"Update a policy","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/policies/{ref}","href":"/api/operations/policies/update-a-policy"},{"title":"Delete a policy","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/policies/{ref}","href":"/api/operations/policies/delete-a-policy"}]}]}]}]},"basePath":"","title":"Read a workspace's logs - 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"]}