Introducing the SpecterOps project management and reporting platform
Ghostwriter is an open-source platform designed to enhance offensive security operations by simplifying report writing,
asset tracking, and assessment management. It offers tools for managing clients, creating a reusable findings library,
and organizing the infrastructure and domains utilized during assessments. With its powerful reporting engine, Ghostwriter
includes comprehensive collaborative writing features and customizable report templates, allowing teams to produce polished
deliverables with minimal manual effort.Ghostwriter comes equipped with “enterprise-level” features, such as role-based access controls, single sign-on authentication,
and multi-factor authentication. Additionally, it integrates with tools like Mythic C2 and Cobalt Strike to enable automatic
activity logging. These capabilities make Ghostwriter an ideal centralized and collaborative environment for red teams and
consultants to efficiently plan, execute, and document their assessments.The platform effectively tracks and manages client and project information, covert infrastructure assets (such as servers
and domain names), finding templates, report templates, evidence files, and more.This data is accessible to Ghostwriter’s reporting engine, which generates comprehensive Word (DOCX) reports using Jinja2
templating and your customized report templates. Ghostwriter can also produce reports in XLSX, PPTX, and JSON formats.Furthermore, you can leverage Ghostwriter’s GraphQL API to integrate custom project management, reporting workflows,
and external tools into the platform.This site will always have the most up-to-date documentation on how to install and use Ghostwriter. To learn more about
Ghostwriter, check out this article.Ghostwriter is entirely free and open-source (FOSS) software. All the code is available on GitHub.
Copyright (c) 2025, Christopher Maddalena All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Ghostwriter nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Ghostwriter Documentation","colors":{"primary":"#6D70A7","light":"#50B071","dark":"#6D70A7"},"logo":{"light":"https://mintcdn.com/specterops-2/rwxeaHvw9J2xZp6c/logo/light.svg?fit=max\u0026auto=format\u0026n=rwxeaHvw9J2xZp6c\u0026q=85\u0026s=7ba094d2f43cc72c0ed5bb0feedd46c2","dark":"https://mintcdn.com/specterops-2/rwxeaHvw9J2xZp6c/logo/dark.svg?fit=max\u0026auto=format\u0026n=rwxeaHvw9J2xZp6c\u0026q=85\u0026s=6d58f4692c9f7bfc4c03ea8f7db37fe3","href":"https://specterops.io/"},"favicon":"https://mintcdn.com/specterops-2/hxAceaiaqVHSIa3R/favicon.png?fit=max\u0026auto=format\u0026n=hxAceaiaqVHSIa3R\u0026q=85\u0026s=146677961412d6ff71d73e719e1c6c60","appearance":{"default":"light","strict":false},"background":{"decoration":"gradient"},"navbar":{"links":[{"href":"https://blog.getghostwriter.io/","label":"Learn More"},{"href":"https://code.getghostwriter.io/","label":"Get the Code"}],"primary":{"type":"button","label":"Support","href":"https://github.com/GhostManager/Ghostwriter/issues"}},"footer":{"socials":{"x":"https://twitter.com/specterops","github":"https://github.com/GhostManager/Ghostwriter","linkedin":"https://www.linkedin.com/company/specterops","slack":"https://slack.specterops.io","instagram":"https://www.instagram.com/specterops.io","youtube":"https://www.youtube.com/channel/UCWMKKqCCQkUjU8dIyiL1yhQ"}},"fonts":{"heading":{"family":"Nunito Sans","weight":900,"source":"https://fonts.gstatic.com/s/nunitosans/v15/pe0TMImSLYBIv1o4X1M8ce2xCx3yop4tQpF_MeTm0lfGWVpNn64CL7U8upHZIbMV51Q42ptCp7t1R-s.woff2","format":"woff2"}},"styling":{"codeblocks":"system","latex":false},"integrations":{"plausible":{"domain":"ghostwriter.wiki"}},"thumbnails":{"background":"https://mintcdn.com/specterops-2/0suYjBVe_0nHu2PQ/images/thumbnail.png?fit=max\u0026auto=format\u0026n=0suYjBVe_0nHu2PQ\u0026q=85\u0026s=779bd023e4a425e93f6924d3eb4b56b0"},"navigation":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/GhostManager/Ghostwriter"},{"anchor":"Community","icon":"slack","href":"https://join.slack.com/t/bloodhoundhq/shared_invite/zt-1tgq6ojd2-ixpx5nz9Wjtbhc3i8AVAWw"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"specterops-2","hasAudioNarration":false,"actualSubdomain":"specterops-2","customDomains":["www.ghostwriter.wiki"],"gitSource":{"type":"github","owner":"ghostmanager","repo":"ghostwriter","deployBranch":"master","contentDirectory":"DOCS","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6acec720b0647c1021582349","collectionId":"054edca7-98db-426f-a696-145794ef4336","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6acec720b0647c1021582349"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6acec720b0647c1021582349","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"Home","count":103},{"language":"default","tag":"Features","count":66},{"language":"default","tag":"Development","count":16},{"language":"default","tag":"GraphQL API","count":14},{"language":"default","tag":"Reporting","count":14},{"language":"default","tag":"Configuring Global Settings","count":10},{"language":"default","tag":"Infrastructure Management","count":9},{"language":"default","tag":"Operation Logs","count":9},{"language":"default","tag":"Database Models","count":8},{"language":"default","tag":"Client \u0026 Project Management","count":8}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"home","slug":"/home","pageMetadata":{"title":"Welcome to Ghostwriter","description":"Introducing the SpecterOps project management and reporting platform","href":"/home"},"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: \"Introducing the SpecterOps project management and reporting platform\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{CodeBlock,Frame,Heading,OptimizedImage,Tab,Tabs}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);return _jsxs(_Fragment,{children:[_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/specterops-2/0suYjBVe_0nHu2PQ/images/logo.png?fit=max\u0026auto=format\u0026n=0suYjBVe_0nHu2PQ\u0026q=85\u0026s=c6b3017eec6e5f9bc69f36dcbab6248c`,alt:`Ghostwriter`,\"data-og-width\":`300`,width:`300`,\"data-og-height\":`322`,height:`322`,\"data-path\":`images/logo.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/specterops-2/0suYjBVe_0nHu2PQ/images/logo.png?w=280\u0026fit=max\u0026auto=format\u0026n=0suYjBVe_0nHu2PQ\u0026q=85\u0026s=eb09f52bd2f58b5207805f62a8e724e5 280w, https://mintcdn.com/specterops-2/0suYjBVe_0nHu2PQ/images/logo.png?w=560\u0026fit=max\u0026auto=format\u0026n=0suYjBVe_0nHu2PQ\u0026q=85\u0026s=d5f4531029061474fed45f700d459a5a 560w, https://mintcdn.com/specterops-2/0suYjBVe_0nHu2PQ/images/logo.png?w=840\u0026fit=max\u0026auto=format\u0026n=0suYjBVe_0nHu2PQ\u0026q=85\u0026s=5e3e506f637be2a0bb9b6b8c06f06304 840w, https://mintcdn.com/specterops-2/0suYjBVe_0nHu2PQ/images/logo.png?w=1100\u0026fit=max\u0026auto=format\u0026n=0suYjBVe_0nHu2PQ\u0026q=85\u0026s=620137452ff6d683667415d911691847 1100w, https://mintcdn.com/specterops-2/0suYjBVe_0nHu2PQ/images/logo.png?w=1650\u0026fit=max\u0026auto=format\u0026n=0suYjBVe_0nHu2PQ\u0026q=85\u0026s=67427bcb7a30aedf65ef9f16eb37079d 1650w, https://mintcdn.com/specterops-2/0suYjBVe_0nHu2PQ/images/logo.png?w=2500\u0026fit=max\u0026auto=format\u0026n=0suYjBVe_0nHu2PQ\u0026q=85\u0026s=41328d7c1821e68a1316b4f3d8b06f07 2500w`})}),`\n`,_jsx(_components.p,{children:`Ghostwriter is an open-source platform designed to enhance offensive security operations by simplifying report writing,\nasset tracking, and assessment management. It offers tools for managing clients, creating a reusable findings library,\nand organizing the infrastructure and domains utilized during assessments. With its powerful reporting engine, Ghostwriter\nincludes comprehensive collaborative writing features and customizable report templates, allowing teams to produce polished\ndeliverables with minimal manual effort.`}),`\n`,_jsx(_components.p,{children:`Ghostwriter comes equipped with “enterprise-level” features, such as role-based access controls, single sign-on authentication,\nand multi-factor authentication. Additionally, it integrates with tools like Mythic C2 and Cobalt Strike to enable automatic\nactivity logging. These capabilities make Ghostwriter an ideal centralized and collaborative environment for red teams and\nconsultants to efficiently plan, execute, and document their assessments.`}),`\n`,_jsx(_components.p,{children:`The platform effectively tracks and manages client and project information, covert infrastructure assets (such as servers\nand domain names), finding templates, report templates, evidence files, and more.`}),`\n`,_jsx(_components.p,{children:`This data is accessible to Ghostwriter’s reporting engine, which generates comprehensive Word (DOCX) reports using Jinja2\ntemplating and your customized report templates. Ghostwriter can also produce reports in XLSX, PPTX, and JSON formats.`}),`\n`,_jsx(_components.p,{children:`Furthermore, you can leverage Ghostwriter’s GraphQL API to integrate custom project management, reporting workflows,\nand external tools into the platform.`}),`\n`,_jsxs(_components.p,{children:[`This site will always have the most up-to-date documentation on how to install and use Ghostwriter. To learn more about\nGhostwriter, check out this `,_jsx(_components.a,{href:`https://posts.specterops.io/introducing-ghostwriter-part-1-61e7bd014aff`,children:`article`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Ghostwriter is entirely free and open-source (FOSS) software. All the code is available on `,_jsx(_components.a,{href:`https://github.com/GhostManager/Ghostwriter`,children:`GitHub`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`license`,children:`License`}),`\n`,_jsxs(_components.p,{children:[`Ghostwriter is licensed under the `,_jsx(_components.strong,{children:`BSD-3`}),` license.`]}),`\n`,_jsx(Tabs,{children:_jsx(Tab,{title:`LICENSE`,id:`license`,children:_jsx(CodeBlock,{filename:`LICENSE.md`,numberOfLines:`28`,language:`markdown`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`markdown`,children:_jsxs(_components.code,{language:`markdown`,numberOfLines:`28`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Copyright (c) 2025, Christopher Maddalena`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` All rights reserved.`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Redistribution and use in source and binary forms, with or without modification,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` are permitted provided that the following conditions are met:`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` * Redistributions of source code must retain the above copyright notice, this`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` list of conditions and the following disclaimer.`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` * Redistributions in binary form must reproduce the above copyright notice, this`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` list of conditions and the following disclaimer in the documentation and/or`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` other materials provided with the distribution.`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` * Neither the name of Ghostwriter nor the names of its`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` contributors may be used to endorse or promote products derived from this`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` software without specific prior written permission.`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` OF THE POSSIBILITY OF SUCH DAMAGE.`})}),`\n`]})})})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Welcome to Ghostwriter","description":"Introducing the SpecterOps project management and reporting platform","href":"/home"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"License","slug":"license","depth":3,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"specterops-2","siteName":"Ghostwriter Documentation","title":"Welcome to Ghostwriter - Ghostwriter Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-22T23:15:27.732Z","originalFileLocation":"home.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Introducing the SpecterOps project management and reporting platform\">\u003cmeta data-mint-head name=\"application-name\" content=\"Ghostwriter Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/specterops-2/xhKbu44XUXjfbp1T/_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/specterops-2/xhKbu44XUXjfbp1T/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/specterops-2/xhKbu44XUXjfbp1T/_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/specterops-2/xhKbu44XUXjfbp1T/_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/specterops-2/xhKbu44XUXjfbp1T/_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/specterops-2/xhKbu44XUXjfbp1T/_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/specterops-2/xhKbu44XUXjfbp1T/_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/specterops-2/xhKbu44XUXjfbp1T/_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/specterops-2/xhKbu44XUXjfbp1T/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Welcome to Ghostwriter - Ghostwriter Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Introducing the SpecterOps project management and reporting platform\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Ghostwriter Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.ghostwriter.wiki/home\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://specterops-2.mintlify.app/_mintlify/api/og/v2?division=Home\u0026amp;title=Welcome+to+Ghostwriter\u0026amp;description=Introducing+the+SpecterOps+project+management+and+reporting+platform\u0026amp;theme=1b2d9326256b8f19fc3d10ae\u0026amp;signature=2b19097cf95f49dac3f330fae1f76cb7304a9d78cf55c892f92c6914d2aa8e3a\">\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=\"Welcome to Ghostwriter - Ghostwriter Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Introducing the SpecterOps project management and reporting platform\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://specterops-2.mintlify.app/_mintlify/api/og/v2?division=Home\u0026amp;title=Welcome+to+Ghostwriter\u0026amp;description=Introducing+the+SpecterOps+project+management+and+reporting+platform\u0026amp;theme=1b2d9326256b8f19fc3d10ae\u0026amp;signature=2b19097cf95f49dac3f330fae1f76cb7304a9d78cf55c892f92c6914d2aa8e3a\">\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/specterops-2/xhKbu44XUXjfbp1T/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Ghostwriter Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6D70A7\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.ghostwriter.wiki/home\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/home.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.ghostwriter.wiki/#organization\",\"name\":\"Ghostwriter Documentation\",\"url\":\"https://www.ghostwriter.wiki\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/specterops-2/rwxeaHvw9J2xZp6c/logo/light.svg?fit=max\u0026auto=format\u0026n=rwxeaHvw9J2xZp6c\u0026q=85\u0026s=7ba094d2f43cc72c0ed5bb0feedd46c2\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.ghostwriter.wiki#website\",\"name\":\"Ghostwriter Documentation\",\"url\":\"https://www.ghostwriter.wiki\",\"publisher\":{\"@id\":\"https://www.ghostwriter.wiki/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.ghostwriter.wiki/home#webpage\",\"url\":\"https://www.ghostwriter.wiki/home\",\"name\":\"Welcome to Ghostwriter\",\"description\":\"Introducing the SpecterOps project management and reporting platform\",\"dateModified\":\"2026-01-22T23:15:27.732Z\",\"isPartOf\":{\"@id\":\"https://www.ghostwriter.wiki#website\"},\"breadcrumb\":{\"@id\":\"https://www.ghostwriter.wiki/home#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.ghostwriter.wiki/home#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ghostwriter Documentation\",\"item\":\"https://www.ghostwriter.wiki\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Welcome to Ghostwriter\",\"item\":\"https://www.ghostwriter.wiki/home\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.ghostwriter.wiki/home#article\",\"headline\":\"Welcome to Ghostwriter\",\"name\":\"Welcome to Ghostwriter\",\"description\":\"Introducing the SpecterOps project management and reporting platform\",\"url\":\"https://www.ghostwriter.wiki/home\",\"mainEntityOfPage\":{\"@id\":\"https://www.ghostwriter.wiki/home#webpage\"},\"dateModified\":\"2026-01-22T23:15:27.732Z\",\"publisher\":{\"@id\":\"https://www.ghostwriter.wiki/#organization\"},\"isPartOf\":{\"@id\":\"https://www.ghostwriter.wiki#website\"}}]}\u003c/script>","siteName":"Ghostwriter Documentation","nav":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/GhostManager/Ghostwriter"},{"anchor":"Community","icon":"slack","href":"https://join.slack.com/t/bloodhoundhq/shared_invite/zt-1tgq6ojd2-ixpx5nz9Wjtbhc3i8AVAWw"}]},"tabs":[{"tab":"Home","groups":[{"group":"Home","pages":[{"title":"Welcome to Ghostwriter","href":"/home"}]},{"group":"Getting Started","pages":[{"title":"Quickstart","description":null,"href":"/getting-started/quickstart"},{"title":"Populating a Demo Database","href":"/getting-started/populating-a-demo-database"},{"title":"Updating Ghostwriter","href":"/getting-started/updating-ghostwriter"},{"group":"Managing the Server with Ghostwriter CLI","pages":[{"title":"Managing the Server with Ghostwriter CLI","sidebarTitle":"Overview","href":"/getting-started/managing-the-server-with-ghostwriter-cli"},{"title":"Managing Logon Sessions","href":"/getting-started/managing-the-server-with-ghostwriter-cli/managing-logon-sessions"},{"title":"Creating and Managing Backups","href":"/getting-started/managing-the-server-with-ghostwriter-cli/creating-and-managing-backups"}]}]},{"group":"Features","pages":[{"group":"Access, Authentication, \u0026 Session Controls","pages":[{"title":"Access, Authentication, \u0026 Session Controls","sidebarTitle":"Overview","href":"/features/access-authentication-and-session-controls"},{"title":"User Profile and Tokens","href":"/features/access-authentication-and-session-controls/user-profile-and-tokens"},{"title":"Single Sign-On","href":"/features/access-authentication-and-session-controls/single-sign-on"},{"title":"Multi-Factor Authentication","href":"/features/access-authentication-and-session-controls/multi-factor-authentication"},{"title":"Role-Based Access Controls","href":"/features/access-authentication-and-session-controls/role-based-access-controls"},{"title":"Session Management","href":"/features/access-authentication-and-session-controls/session-management"}]},{"group":"Client \u0026 Project Management","pages":[{"title":"Overview","href":"/features/client-and-project-management"},{"title":"Client Dashboard","href":"/features/client-and-project-management/client-dashboard"},{"group":"Project Dashboard","pages":[{"title":"Overview","href":"/features/client-and-project-management/project-dashboard"},{"title":"Project Points of Contact \u0026 Assignments","href":"/features/client-and-project-management/project-dashboard/project-points-of-contact-and-assignments"},{"title":"Scope Tracking","href":"/features/client-and-project-management/project-dashboard/scope-tracking"},{"title":"Objective Tracking","href":"/features/client-and-project-management/project-dashboard/objective-tracking"},{"title":"Deconfliction Tracking","href":"/features/client-and-project-management/project-dashboard/deconfliction-tracking"},{"title":"White Card Tracking","href":"/features/client-and-project-management/project-dashboard/white-card-tracking"}]}]},{"group":"Findings Library","pages":[{"title":"Overview","href":"/features/findings-library"},{"title":"Populating the Findings Library","href":"/features/findings-library/populating-the-findings-library"},{"title":"Template Values for Findings","href":"/features/findings-library/finding-keywords"}]},{"title":"Observations Library","href":"/features/observations-library"},{"group":"Infrastructure Management","pages":[{"title":"Infrastructure Management","sidebarTitle":"Overview","href":"/features/infrastructure-management"},{"group":"Server Management","pages":[{"title":"Server Management","sidebarTitle":"Overview","href":"/features/infrastructure-management/server-management"},{"title":"Populating the Server Library","href":"/features/infrastructure-management/server-management/populating-the-server-library"},{"title":"Server Checkout","href":"/features/infrastructure-management/server-management/server-management"},{"title":"Monitoring Servers","href":"/features/infrastructure-management/server-management/monitoring-servers"}]},{"group":"Domains Management","pages":[{"title":"Domains Management","sidebarTitle":"Overview","href":"/features/infrastructure-management/domains-management"},{"title":"Populating the Domain Library","href":"/features/infrastructure-management/domains-management/populating-the-domain-library"},{"title":"Domain Checkout","href":"/features/infrastructure-management/domains-management/domain-checkout-1"},{"title":"Monitoring Domains","href":"/features/infrastructure-management/domains-management/monitoring-domains"}]}]},{"group":"Operation Logs","pages":[{"title":"Overview","href":"/features/operation-logs"},{"title":"Creating a New Operation Log","href":"/features/operation-logs/creating-a-new-oplog"},{"title":"Interacting with the Operation Log Table","href":"/features/operation-logs/create-a-new-entry"},{"title":"Generating Attack Path Narrative Outlines","href":"/features/operation-logs/generating-narrative-outlines"},{"title":"Linking Evidence to Log Entries","href":"/features/operation-logs/linking-evidence-to-entries"},{"title":"Attaching Terminal Recordings to Log Entries","href":"/features/operation-logs/attaching-terminal-recordings"},{"title":"Setting up Automated Logging","href":"/features/operation-logs/setting-up-automated-logging"},{"title":"Exporting / Importing Operation Logs","href":"/features/operation-logs/exporting-importing-oplogs"},{"title":"Auditing Log Sanitization","href":"/features/operation-logs/auditing-oplogs"}]},{"group":"Reporting","pages":[{"title":"Reporting","sidebarTitle":"Overview","href":"/features/reporting"},{"group":"Collaborative Editor","pages":[{"title":"Overview","href":"/features/reporting/collaborative-editing"},{"title":"Editor Features","href":"/features/reporting/collaborative-editor/editor-features"}]},{"group":"Report Types","pages":[{"title":"Overview","href":"/features/reporting/report-types"},{"title":"Word Document Customization","href":"/features/reporting/report-types/word-document-customization"},{"title":"PowerPoint Deck Customization","href":"/features/reporting/report-types/powerpoint-deck-customization"},{"title":"Excel Spreadsheet Customization","href":"/features/reporting/report-types/excel-spreadsheet-customization"}]},{"group":"Report Templates","pages":[{"title":"Report Templates","sidebarTitle":"Overview","href":"/features/reporting/report-templates"},{"title":"Report Template Linting","href":"/features/reporting/report-templates/report-template-linting"},{"title":"Word Template Variables \u0026 Filters","href":"/features/reporting/report-templates/word-template-variables"},{"title":"Word Template Styles","href":"/features/reporting/report-templates/word-template-styles"},{"title":"Troubleshooting Word Templates","href":"/features/reporting/report-templates/troubleshooting-word-templates"}]},{"title":"Templating and Rich Text Fields","href":"/features/reporting/templating-and-rich-text-fields"},{"title":"Jinja2 Tips \u0026 Tricks","href":"/features/reporting/jinja2-tips-and-tricks"}]},{"group":"BloodHound Integration","pages":[{"title":"Overview","href":"/features/bloodhound-integration-overview"},{"title":"Configuring BloodHound","href":"/features/bloodhound-integration/configuring-bloodhound"},{"title":"Viewing \u0026 Managing BloodHound Data","href":"/features/bloodhound-integration/managing-bloodhound-data"},{"title":"Differences Between BHCE and BHE","href":"/features/bloodhound-integration/differences-between-bhce-and-bhe"},{"title":"Accessing BloodHound Data in Reports","href":"/features/bloodhound-integration/bloodhound-data-in-reports"}]},{"group":"Background Tasks","pages":[{"title":"Overview","href":"/features/background-tasks"},{"title":"Scheduling Tasks","href":"/features/background-tasks/scheduled-tasks"},{"title":"Prebuilt Tasks","href":"/features/background-tasks/prebuilt-tasks"}]},{"title":"Health Monitoring","href":"/features/health-monitoring"}]},{"group":"Configuring Global Settings","pages":[{"title":"Introduction to Command Center","sidebarTitle":"Overview","href":"/configuring-global-settings/introduction-to-command-center"},{"title":"Personalizing Company Information","href":"/configuring-global-settings/personalizing-company-information"},{"title":"Configuring Global Report Options","href":"/configuring-global-settings/configuring-global-report-options"},{"title":"Configuring the Announcement Banner","href":"/configuring-global-settings/configuring-the-announcement-banner"},{"group":"Configuring APIs","pages":[{"title":"Overview","href":"/configuring-global-settings/configuring-apis"},{"title":"Configuring Slack","href":"/configuring-global-settings/configuring-apis/configuring-slack"},{"title":"Configuring VirusTotal","href":"/configuring-global-settings/configuring-apis/configuring-virustotal"},{"title":"Configuring Namecheap","href":"/configuring-global-settings/configuring-apis/configuring-namecheap"},{"title":"Configuring Cloud Services","href":"/configuring-global-settings/configuring-apis/configuring-cloud-services"}]},{"title":"Configuring Extra Fields","href":"/configuring-global-settings/configuring-extra-fields"}]},{"group":"Getting Help","pages":[{"title":"Overview","href":"/getting-help/faq"},{"title":"Reporting a Problem","href":"/getting-help/getting-help-with-a-problem"},{"title":"Reporting a Security Issue","href":"/getting-help/reporting-a-security-issue"}]},{"group":"Workflow \u0026 Usage","pages":[{"title":"The Workflow","sidebarTitle":"Overview","href":"/workflow/basic-usage"},{"group":"The Workflow","pages":[{"title":"The Workflow","sidebarTitle":"Overview","href":"/workflow/basic-usage"},{"title":"Finding Edit \u0026 Review Workflow","href":"/workflow/basic-usage/finding-review-workflow"}]}]},{"group":"Coding Style Guide","pages":[{"title":"Overview","href":"/coding-style-guide/style-guide"},{"title":"UI Refresh Design System","sidebarTitle":"UI Refresh","href":"/coding-style-guide/ui-refresh-design-system"},{"group":"Form Layouts \u0026 Design","pages":[{"title":"Form Layouts \u0026 Design","sidebarTitle":"Overview","href":"/coding-style-guide/form-layouts-and-design"},{"title":"Formset Layout \u0026 Design","href":"/coding-style-guide/form-layouts-and-design/formset-layout-and-design"},{"title":"Custom Layout Objects","href":"/coding-style-guide/form-layouts-and-design/custom-layout-objects"}]}]},{"group":"Development","pages":[{"title":"Overview","href":"/development/stack-overview"},{"group":"Stack Overview","pages":[{"title":"Overview","href":"/development/stack-overview"},{"title":"Behind the Scenes","href":"/development/stack-overview/behind-the-scenes"}]},{"group":"Modifying Code","pages":[{"title":"Overview","href":"/development/modifying-code"},{"title":"Modifying Environment Variables","href":"/development/modifying-code/modifying-environment-variables"}]},{"title":"Testing Code","href":"/development/testing-code"},{"group":"Contributing to the Project","pages":[{"title":"Contributing to the Project","sidebarTitle":"Overview","href":"/development/contributing-to-the-project"},{"title":"Pre-Release Checklist","href":"/development/contributing-to-the-project/pre-release-checklist"}]},{"group":"Database Models","pages":[{"title":"Database Models","sidebarTitle":"Overview","href":"/development/database-models"},{"title":"API Models","href":"/development/database-models/api-models"},{"title":"Client \u0026 Project Models","href":"/development/database-models/rolodex-models"},{"title":"Configuration Models","href":"/development/database-models/configuration-models"},{"title":"Home \u0026 User Models","href":"/development/database-models/home-models"},{"title":"Infrastructure Models","href":"/development/database-models/infrastructure-models"},{"title":"Oplog Models","href":"/development/database-models/oplog-models"},{"title":"Reporting Models","href":"/development/database-models/reporting-models"}]},{"title":"Expected Services \u0026 Processes","href":"/development/expected-services-and-processes"}]}]},{"tab":"GraphQL API","pages":[{"title":"GraphQL API","href":"/features/graphql-api/graphql-api"}]}]},"title":"Welcome to Ghostwriter - Ghostwriter Documentation","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-COGkNuA6.js","DynamicMarkdown-85clUA0i.js","zoom-image-lightbox-BZxD9MAj.js","lightbox-handle-r17bVUz3.js"]}