[{"data":1,"prerenderedAt":530},["ShallowReactive",2],{"-docs-getting-started-installation":3,"-docs-getting-started-installation-surround":519},{"id":4,"title":5,"body":6,"description":509,"extension":510,"links":511,"meta":512,"navigation":513,"path":515,"seo":516,"stem":517,"__hash__":518},"docs\u002Fdocs\u002F1.getting-started\u002F3.installation.md","Installation",{"type":7,"value":8,"toc":500},"minimark",[9,32,37,119,123,214,220,224,227,256,260,287,292,319,326,330,341,408,426,430,464,468,496],[10,11,12,13,17,18,21,22,25,26,31],"p",{},"TheSpider has three components you may install: the ",[14,15,16],"strong",{},"brain server"," (Bun + Hono + Drizzle), the ",[14,19,20],{},"web UI"," (Nuxt, served same-origin by the server image in production), and the ",[14,23,24],{},"agent"," (a single Rust binary). This page covers a local dev setup; for production on-prem see ",[27,28,30],"a",{"href":29},"\u002Fdocs\u002Fdeploy\u002Fonprem","On-prem deploy",".",[33,34,36],"h2",{"id":35},"prerequisites","Prerequisites",[38,39,40,53],"table",{},[41,42,43],"thead",{},[44,45,46,50],"tr",{},[47,48,49],"th",{},"Component",[47,51,52],{},"Requirement",[54,55,56,71,79,95,111],"tbody",{},[44,57,58,62],{},[59,60,61],"td",{},"Brain server",[59,63,64,70],{},[27,65,69],{"href":66,"rel":67},"https:\u002F\u002Fbun.sh",[68],"nofollow","Bun"," ≥ latest stable, Docker (for Postgres)",[44,72,73,76],{},[59,74,75],{},"Database",[59,77,78],{},"Postgres 16 (bundled compose, or BYO)",[44,80,81,84],{},[59,82,83],{},"Agent",[59,85,86,87,91,92],{},"Rust ≥ 1.75, a POSIX shell (",[88,89,90],"code",{},"sh",") on ",[88,93,94],{},"PATH",[44,96,97,100],{},[59,98,99],{},"Agent on Windows",[59,101,102,103,106,107,110],{},"run under ",[14,104,105],{},"git-bash or WSL"," (model execution shells out to ",[88,108,109],{},"sh -c",")",[44,112,113,116],{},[59,114,115],{},"Models",[59,117,118],{},"one or more coding-agent \u002F LLM CLIs installed locally with working auth",[33,120,122],{"id":121},"boot-the-brain-server-local-dev","Boot the brain server (local dev)",[124,125,126,204],"code-group",{},[127,128,134],"pre",{"className":129,"code":130,"filename":131,"language":132,"meta":133,"style":133},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cd server && bun install\ndocker compose up -d          # Postgres 16 on :5433\nbun run migrate\nbun run serve                 # API (+ web SPA when image-built)\n","server + Postgres","bash","",[88,135,136,160,179,191],{"__ignoreMap":133},[137,138,141,145,149,153,157],"span",{"class":139,"line":140},"line",1,[137,142,144],{"class":143},"s2Zo4","cd",[137,146,148],{"class":147},"sfazB"," server",[137,150,152],{"class":151},"sMK4o"," &&",[137,154,156],{"class":155},"sBMFI"," bun",[137,158,159],{"class":147}," install\n",[137,161,163,166,169,172,175],{"class":139,"line":162},2,[137,164,165],{"class":155},"docker",[137,167,168],{"class":147}," compose",[137,170,171],{"class":147}," up",[137,173,174],{"class":147}," -d",[137,176,178],{"class":177},"sHwdD","          # Postgres 16 on :5433\n",[137,180,182,185,188],{"class":139,"line":181},3,[137,183,184],{"class":155},"bun",[137,186,187],{"class":147}," run",[137,189,190],{"class":147}," migrate\n",[137,192,194,196,198,201],{"class":139,"line":193},4,[137,195,184],{"class":155},[137,197,187],{"class":147},[137,199,200],{"class":147}," serve",[137,202,203],{"class":177},"                 # API (+ web SPA when image-built)\n",[127,205,208],{"className":129,"code":206,"filename":207,"language":132,"meta":133,"style":133},"postgres:\u002F\u002Fpostgres:thespider@127.0.0.1:5433\u002Fthespider\n","DATABASE_URL default",[88,209,210],{"__ignoreMap":133},[137,211,212],{"class":139,"line":140},[137,213,206],{"class":155},[10,215,216,219],{},[88,217,218],{},"DATABASE_URL"," defaults to the compose Postgres above. Override it to point at your own database.",[33,221,223],{"id":222},"run-the-web-ui-dev","Run the web UI (dev)",[10,225,226],{},"The web SPA is bundled into the production server image, but for local dev run it standalone:",[127,228,231],{"className":129,"code":229,"filename":230,"language":132,"meta":133,"style":133},"cd web && bun install && bun run dev\n","web\u002F",[88,232,233],{"__ignoreMap":133},[137,234,235,237,240,242,244,247,249,251,253],{"class":139,"line":140},[137,236,144],{"class":143},[137,238,239],{"class":147}," web",[137,241,152],{"class":151},[137,243,156],{"class":155},[137,245,246],{"class":147}," install",[137,248,152],{"class":151},[137,250,156],{"class":155},[137,252,187],{"class":147},[137,254,255],{"class":147}," dev\n",[33,257,259],{"id":258},"install-the-agent","Install the agent",[10,261,262,265,266,269,270,273,274,279,280,282,283,286],{},[14,263,264],{},"Linux:"," grab a static binary (musl, ",[88,267,268],{},"x86_64","\u002F",[88,271,272],{},"aarch64",", no system deps) from the\n",[27,275,278],{"href":276,"rel":277},"https:\u002F\u002Fgitlab.com\u002Fdragonstone-labs\u002Fthespider-saas\u002F-\u002Freleases",[68],"releases page"," and drop it on your\n",[88,281,94],{},". Checksums ship as ",[88,284,285],{},"SHA256SUMS"," alongside each release.",[10,288,289],{},[14,290,291],{},"macOS \u002F Windows \u002F from source:",[127,293,296],{"className":129,"code":294,"filename":295,"language":132,"meta":133,"style":133},"cd client && cargo build --release   # -> target\u002Frelease\u002Fthespider-agent\n","client\u002F",[88,297,298],{"__ignoreMap":133},[137,299,300,302,305,307,310,313,316],{"class":139,"line":140},[137,301,144],{"class":143},[137,303,304],{"class":147}," client",[137,306,152],{"class":151},[137,308,309],{"class":155}," cargo",[137,311,312],{"class":147}," build",[137,314,315],{"class":147}," --release",[137,317,318],{"class":177},"   # -> target\u002Frelease\u002Fthespider-agent\n",[10,320,321,322,325],{},"The release binary is the whole agent — a single artifact. A ",[88,323,324],{},"strings"," check on it shows no prompt or methodology text (only one rendered prompt per claimed slice ever reaches the client, by design).",[33,327,329],{"id":328},"on-prem-production-docker-compose","On-prem \u002F production (Docker Compose)",[10,331,332,333,336,337,340],{},"For a real single-tenant install, skip the dev steps above and use the shipped image — it serves the ",[88,334,335],{},"\u002Fv1"," API, the Better-Auth endpoints, ",[14,338,339],{},"and"," the web SPA from one origin, and migrates-on-boot:",[127,342,345],{"className":129,"code":343,"filename":344,"language":132,"meta":133,"style":133},"cp deploy\u002F.env.example deploy\u002F.env\n# At minimum set in deploy\u002F.env:\n#   BETTER_AUTH_SECRET   (openssl rand -base64 48)\n#   LICENSE_JWT          (from your vendor; without it the instance is read-only)\ndocker compose -f deploy\u002Fdocker-compose.yml up -d --build\ncurl -fsS http:\u002F\u002Flocalhost:8080\u002Fhealthz     # {\"status\":\"ok\",\"mode\":\"onprem\",...}\n","deploy\u002F",[88,346,347,358,363,368,373,393],{"__ignoreMap":133},[137,348,349,352,355],{"class":139,"line":140},[137,350,351],{"class":155},"cp",[137,353,354],{"class":147}," deploy\u002F.env.example",[137,356,357],{"class":147}," deploy\u002F.env\n",[137,359,360],{"class":139,"line":162},[137,361,362],{"class":177},"# At minimum set in deploy\u002F.env:\n",[137,364,365],{"class":139,"line":181},[137,366,367],{"class":177},"#   BETTER_AUTH_SECRET   (openssl rand -base64 48)\n",[137,369,370],{"class":139,"line":193},[137,371,372],{"class":177},"#   LICENSE_JWT          (from your vendor; without it the instance is read-only)\n",[137,374,376,378,380,383,386,388,390],{"class":139,"line":375},5,[137,377,165],{"class":155},[137,379,168],{"class":147},[137,381,382],{"class":147}," -f",[137,384,385],{"class":147}," deploy\u002Fdocker-compose.yml",[137,387,171],{"class":147},[137,389,174],{"class":147},[137,391,392],{"class":147}," --build\n",[137,394,396,399,402,405],{"class":139,"line":395},6,[137,397,398],{"class":155},"curl",[137,400,401],{"class":147}," -fsS",[137,403,404],{"class":147}," http:\u002F\u002Flocalhost:8080\u002Fhealthz",[137,406,407],{"class":177},"     # {\"status\":\"ok\",\"mode\":\"onprem\",...}\n",[10,409,410,411,418,419,31],{},"Full guide: ",[27,412,415],{"href":413,"rel":414},"https:\u002F\u002Fgitlab.com\u002Fdragonstone-labs\u002Fthespider-saas\u002F-\u002Fblob\u002Fmain\u002Fdeploy\u002Finstall-guide.md",[68],[88,416,417],{},"deploy\u002Finstall-guide.md",". Air-gap: ",[27,420,423],{"href":421,"rel":422},"https:\u002F\u002Fgitlab.com\u002Fdragonstone-labs\u002Fthespider-saas\u002F-\u002Fblob\u002Fmain\u002Fdeploy\u002Fair-gap.md",[68],[88,424,425],{},"deploy\u002Fair-gap.md",[33,427,429],{"id":428},"verify-the-install","Verify the install",[124,431,432,447],{},[127,433,436],{"className":129,"code":434,"filename":435,"language":132,"meta":133,"style":133},"curl -fsS http:\u002F\u002Flocalhost:8080\u002Fhealthz\n","server health",[88,437,438],{"__ignoreMap":133},[137,439,440,442,444],{"class":139,"line":140},[137,441,398],{"class":155},[137,443,401],{"class":147},[137,445,446],{"class":147}," http:\u002F\u002Flocalhost:8080\u002Fhealthz\n",[127,448,451],{"className":129,"code":449,"filename":450,"language":132,"meta":133,"style":133},".\u002Ftarget\u002Frelease\u002Fthespider-agent status   # org\u002Fprojects\u002Fentitlements + token source\n","agent sanity",[88,452,453],{"__ignoreMap":133},[137,454,455,458,461],{"class":139,"line":140},[137,456,457],{"class":155},".\u002Ftarget\u002Frelease\u002Fthespider-agent",[137,459,460],{"class":147}," status",[137,462,463],{"class":177},"   # org\u002Fprojects\u002Fentitlements + token source\n",[33,465,467],{"id":466},"next-steps","Next steps",[469,470,471,479,489],"ul",{},[472,473,474,478],"li",{},[27,475,477],{"href":476},"\u002Fdocs\u002Fgetting-started\u002Fquickstart","Quickstart"," — run your first audit.",[472,480,481,485,486,31],{},[27,482,484],{"href":483},"\u002Fdocs\u002Fguide\u002Fconfiguration","Configure the agent"," — ",[88,487,488],{},"~\u002F.thespider\u002Fconfig.toml",[472,490,491,495],{},[27,492,494],{"href":493},"\u002Fdocs\u002Freference\u002Fenv-vars","Environment reference"," — every server knob.",[497,498,499],"style",{},"html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":133,"searchDepth":162,"depth":162,"links":501},[502,503,504,505,506,507,508],{"id":35,"depth":162,"text":36},{"id":121,"depth":162,"text":122},{"id":222,"depth":162,"text":223},{"id":258,"depth":162,"text":259},{"id":328,"depth":162,"text":329},{"id":428,"depth":162,"text":429},{"id":466,"depth":162,"text":467},"How to install TheSpider — the brain server, the web UI, and the Rust agent","md",null,{},{"icon":514},"i-lucide-download","\u002Fdocs\u002Fgetting-started\u002Finstallation",{"title":5,"description":509},"docs\u002F1.getting-started\u002F3.installation","erBeL37O4qhj0vd5oAL7W4cgItDIN3jTf1KDxD4wRKc",[520,526],{"title":521,"path":522,"stem":523,"description":524,"icon":525,"children":-1},"AI Setup Wizard","\u002Fdocs\u002Fgetting-started\u002Fai-setup","docs\u002F1.getting-started\u002F2.ai-setup","Let your AI agent set up TheSpider for you — one prompt, zero manual steps","i-lucide-sparkles",{"title":477,"path":476,"stem":527,"description":528,"icon":529,"children":-1},"docs\u002F1.getting-started\u002F4.quickstart","Run your first TheSpider audit end-to-end","i-lucide-zap",1783955419117]