[{"data":1,"prerenderedAt":757},["ShallowReactive",2],{"navigation_docs":3,"-installation":139,"-installation-surround":752},[4,8,12,16,20,24,28,32,59,63,117,121,135],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","1.introduction",{"title":9,"path":10,"stem":11},"Memory","\u002Fmemory","10.memory",{"title":13,"path":14,"stem":15},"Customization","\u002Fcustomization","11.customization",{"title":17,"path":18,"stem":19},"Deployment","\u002Fdeployment","12.deployment",{"title":21,"path":22,"stem":23},"Reference","\u002Freference","13.reference",{"title":25,"path":26,"stem":27},"Quickstart","\u002Fquickstart","2.quickstart",{"title":29,"path":30,"stem":31},"Installation","\u002Finstallation","3.installation",{"title":33,"icon":34,"path":35,"stem":36,"children":37,"page":58},"Connectors","i-lucide-cable","\u002Fconnectors","4.connectors",[38,42,46,50,54],{"title":39,"path":40,"stem":41},"Telegram","\u002Fconnectors\u002Ftelegram","4.connectors\u002F1.telegram",{"title":43,"path":44,"stem":45},"Slack","\u002Fconnectors\u002Fslack","4.connectors\u002F2.slack",{"title":47,"path":48,"stem":49},"Email","\u002Fconnectors\u002Femail","4.connectors\u002F3.email",{"title":51,"path":52,"stem":53},"API","\u002Fconnectors\u002Fapi","4.connectors\u002F4.api",{"title":55,"path":56,"stem":57},"Terminal","\u002Fconnectors\u002Fterminal","4.connectors\u002F5.terminal",false,{"title":60,"path":61,"stem":62},"Attachments","\u002Fattachments","5.attachments",{"title":64,"icon":65,"path":66,"stem":67,"children":68,"page":58},"Tools","i-lucide-wrench","\u002Ftools","6.tools",[69,73,77,81,85,89,93,97,101,105,109,113],{"title":70,"path":71,"stem":72},"File Manager","\u002Ftools\u002Ffile-manager","6.tools\u002F1.file-manager",{"title":74,"path":75,"stem":76},"Text-to-Speech","\u002Ftools\u002Ftext-to-speech","6.tools\u002F10.text-to-speech",{"title":78,"path":79,"stem":80},"Confirmations","\u002Ftools\u002Fconfirmations","6.tools\u002F11.confirmations",{"title":82,"path":83,"stem":84},"Adding Custom Tools","\u002Ftools\u002Fadding-custom-tools","6.tools\u002F12.adding-custom-tools",{"title":86,"path":87,"stem":88},"Image Manager","\u002Ftools\u002Fimage-manager","6.tools\u002F2.image-manager",{"title":90,"path":91,"stem":92},"Web Request","\u002Ftools\u002Fweb-request","6.tools\u002F3.web-request",{"title":94,"path":95,"stem":96},"Reminders","\u002Ftools\u002Freminders","6.tools\u002F4.reminders",{"title":98,"path":99,"stem":100},"Heartbeats","\u002Ftools\u002Fheartbeats","6.tools\u002F5.heartbeats",{"title":102,"path":103,"stem":104},"Email Manager","\u002Ftools\u002Femail-manager","6.tools\u002F6.email-manager",{"title":106,"path":107,"stem":108},"Calendar","\u002Ftools\u002Fcalendar","6.tools\u002F7.calendar",{"title":110,"path":111,"stem":112},"Read Database","\u002Ftools\u002Fread-database","6.tools\u002F8.read-database",{"title":114,"path":115,"stem":116},"Headless Browser","\u002Ftools\u002Fbrowser","6.tools\u002F9.browser",{"title":118,"path":119,"stem":120},"Tinker","\u002Ftinker","7.tinker",{"title":122,"icon":123,"path":124,"stem":125,"children":126,"page":58},"Skills","i-lucide-sparkles","\u002Fskills","8.skills",[127,131],{"title":128,"path":129,"stem":130},"Overview","\u002Fskills\u002Foverview","8.skills\u002F1.overview",{"title":132,"path":133,"stem":134},"Adding Custom Skills","\u002Fskills\u002Fadding-custom-skills","8.skills\u002F2.adding-custom-skills",{"title":136,"path":137,"stem":138},"Personas","\u002Fpersonas","9.personas",{"id":140,"title":29,"body":141,"description":745,"extension":746,"links":747,"meta":748,"navigation":749,"path":30,"seo":750,"stem":31,"__hash__":751},"docs\u002F3.installation.md",{"type":142,"value":143,"toc":735},"minimark",[144,148,161,167,171,174,217,237,255,259,262,286,289,308,311,347,355,370,374,377,391,394,461,468,473,476,624,631,635,638,661,664,678,681,684,715,719,728,731],[145,146,5],"h2",{"id":147},"introduction",[149,150,151,152,155,156,160],"p",{},"The ",[153,154,25],"a",{"href":26}," gets you to a working terminal loop in five minutes. This page is the ",[157,158,159],"em",{},"full"," install reference: every prerequisite, what the wizard actually does behind the scenes, and how to invoke each step on its own.",[149,162,163,164,166],{},"If you're just kicking the tires, the Quickstart is plenty. If you're putting Laraclaw into a real project — and especially if you're heading toward ",[153,165,17],{"href":18}," — read on.",[145,168,170],{"id":169},"prerequisites","Prerequisites",[149,172,173],{},"Laraclaw requires:",[175,176,177,185,191,197,208],"ul",{},[178,179,180,184],"li",{},[181,182,183],"strong",{},"PHP 8.4 or higher"," — we lean on the latest type system goodies.",[178,186,187,190],{},[181,188,189],{},"Laravel 12 or higher"," — older majors won't resolve.",[178,192,193,196],{},[181,194,195],{},"Redis"," — used by the confirmation flow (the agent asking yes\u002Fno through chat) and by default for the queue.",[178,198,199,202,203,207],{},[181,200,201],{},"A queue worker"," (",[204,205,206],"code",{},"php artisan queue:work",") — almost every connector dispatches the agent run to a job.",[178,209,210,202,213,216],{},[181,211,212],{},"The Laravel scheduler",[204,214,215],{},"schedule:work"," or a cron entry) — reminders and heartbeats fire from scheduled commands.",[149,218,219,220,228,229,232,233,236],{},"PostgreSQL with the ",[153,221,225],{"href":222,"rel":223},"https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector",[224],"nofollow",[204,226,227],{},"pgvector"," extension is ",[181,230,231],{},"optional",". You'll want it if you plan to use ",[153,234,235],{"href":10},"memory"," at any meaningful scale — without it, Laraclaw stores embeddings as JSON and computes cosine similarity in PHP. Fine for a few thousand chunks; slow past that.",[238,239,240],"blockquote",{},[149,241,242,246,247,250,251,254],{},[243,244,245],"span",{},"!TIP","\nDon't have Redis locally? ",[204,248,249],{},"brew install redis && brew services start redis"," on macOS, or ",[204,252,253],{},"docker run -p 6379:6379 redis"," if you'd rather containerize it.",[145,256,258],{"id":257},"how-to-install","How to Install",[149,260,261],{},"Install via Composer:",[263,264,269],"pre",{"className":265,"code":266,"language":267,"meta":268,"style":268},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","composer require laraclaw\u002Flaraclaw\n","bash","",[204,270,271],{"__ignoreMap":268},[243,272,275,279,283],{"class":273,"line":274},"line",1,[243,276,278],{"class":277},"sBMFI","composer",[243,280,282],{"class":281},"sfazB"," require",[243,284,285],{"class":281}," laraclaw\u002Flaraclaw\n",[149,287,288],{},"Then publish the config and migrations:",[263,290,292],{"className":265,"code":291,"language":267,"meta":268,"style":268},"php artisan vendor:publish --tag=laraclaw\n",[204,293,294],{"__ignoreMap":268},[243,295,296,299,302,305],{"class":273,"line":274},[243,297,298],{"class":277},"php",[243,300,301],{"class":281}," artisan",[243,303,304],{"class":281}," vendor:publish",[243,306,307],{"class":281}," --tag=laraclaw\n",[149,309,310],{},"This puts the following on disk:",[175,312,313,319,329,335,341],{},[178,314,315,318],{},[204,316,317],{},"config\u002Flaraclaw.php"," — all the configuration knobs.",[178,320,321,324,325,328],{},[204,322,323],{},"database\u002Fmigrations\u002F*_create_laraclaw_*"," — the five tables (",[153,326,5],{"href":327},"\u002Fintroduction#the-data-model"," covers what each one stores).",[178,330,331,334],{},[204,332,333],{},"laraclaw\u002Finstructions.md"," — the base system prompt. Edit this to change the agent's default behavior.",[178,336,337,340],{},[204,338,339],{},"laraclaw\u002Fpersonas\u002Fdefault.md"," — a starter persona, applied automatically. Edit it, or delete it to run on the base prompt alone.",[178,342,343,346],{},[204,344,345],{},"laraclaw\u002Fskills\u002Fgreeting\u002FSKILL.md"," — a tiny example skill to copy from.",[149,348,349,350,354],{},"Those last three make up ",[153,351,353],{"href":352},"\u002Fcustomization#the-agent-folder","the agent folder",": everything that shapes how the agent thinks, in plain Markdown you can review in a pull request.",[238,356,357],{},[149,358,359,361,362,365,366,369],{},[243,360,245],{},"\nPublishing never overwrites a file that already exists, so you can re-run ",[204,363,364],{},"vendor:publish --tag=laraclaw"," after an upgrade without losing your edits. To pull in a fresh copy of a file you ",[157,367,368],{},"have"," edited, delete it first.",[145,371,373],{"id":372},"the-setup-wizard","The Setup Wizard",[149,375,376],{},"Run the interactive wizard:",[263,378,380],{"className":265,"code":379,"language":267,"meta":268,"style":268},"php artisan laraclaw:setup\n",[204,381,382],{"__ignoreMap":268},[243,383,384,386,388],{"class":273,"line":274},[243,385,298],{"class":277},[243,387,301],{"class":281},[243,389,390],{"class":281}," laraclaw:setup\n",[149,392,393],{},"Here's what it does, in order:",[395,396,397,407,416,426,432,438],"ol",{},[178,398,399,402,403,406],{},[181,400,401],{},"Runs migrations"," — creates the five ",[204,404,405],{},"laraclaw_*"," tables.",[178,408,409,202,412,415],{},[181,410,411],{},"Picks the owner user",[204,413,414],{},"LARACLAW_ADMIN_USER_ID",") and registers their first account row.",[178,417,418,421,422,425],{},[181,419,420],{},"Picks the AI provider"," via ",[204,423,424],{},"AI_DEFAULT",", prompting for the API key.",[178,427,428,431],{},[181,429,430],{},"Lets you select connectors"," to set up (Telegram, Slack, Email), then runs the per-connector wizard for each.",[178,433,434,437],{},[181,435,436],{},"Optionally enables the API connector"," and prints a Bearer token you can use right away.",[178,439,440,443,444,446,447,449,450,449,452,454,455,457,458,460],{},[181,441,442],{},"Asks whether to enable"," ",[153,445,235],{"href":10},", the ",[153,448,70],{"href":71},", ",[153,451,106],{"href":107},[153,453,110],{"href":111},", and ",[153,456,114],{"href":115}," tools, and the ",[153,459,118],{"href":119}," tool.",[149,462,463,464,467],{},"Each step writes to your ",[204,465,466],{},".env"," file. You can re-run the wizard at any time, and any answer you've already given is the new default — handy when you just want to update one thing.",[469,470,472],"h3",{"id":471},"running-sub-commands-directly","Running Sub-Commands Directly",[149,474,475],{},"Don't want the full wizard? Each step has its own command:",[263,477,479],{"className":265,"code":478,"language":267,"meta":268,"style":268},"php artisan laraclaw:setup-admin              # owner user + first account\nphp artisan laraclaw:setup-agent              # AI provider + key\nphp artisan laraclaw:setup-connector telegram # one connector at a time\nphp artisan laraclaw:setup-connector slack\nphp artisan laraclaw:setup-connector email\nphp artisan laraclaw:setup-connector api\nphp artisan laraclaw:setup-calendar           # Google or Apple\nphp artisan laraclaw:setup-files              # File Manager allowlist\nphp artisan laraclaw:setup-memory             # memory + embedding provider\nphp artisan laraclaw:setup-read-database      # read-only DB connection\nphp artisan laraclaw:setup-browser            # headless browser (Lightpanda)\n",[204,480,481,494,507,523,535,547,559,572,585,598,611],{"__ignoreMap":268},[243,482,483,485,487,490],{"class":273,"line":274},[243,484,298],{"class":277},[243,486,301],{"class":281},[243,488,489],{"class":281}," laraclaw:setup-admin",[243,491,493],{"class":492},"sHwdD","              # owner user + first account\n",[243,495,497,499,501,504],{"class":273,"line":496},2,[243,498,298],{"class":277},[243,500,301],{"class":281},[243,502,503],{"class":281}," laraclaw:setup-agent",[243,505,506],{"class":492},"              # AI provider + key\n",[243,508,510,512,514,517,520],{"class":273,"line":509},3,[243,511,298],{"class":277},[243,513,301],{"class":281},[243,515,516],{"class":281}," laraclaw:setup-connector",[243,518,519],{"class":281}," telegram",[243,521,522],{"class":492}," # one connector at a time\n",[243,524,526,528,530,532],{"class":273,"line":525},4,[243,527,298],{"class":277},[243,529,301],{"class":281},[243,531,516],{"class":281},[243,533,534],{"class":281}," slack\n",[243,536,538,540,542,544],{"class":273,"line":537},5,[243,539,298],{"class":277},[243,541,301],{"class":281},[243,543,516],{"class":281},[243,545,546],{"class":281}," email\n",[243,548,550,552,554,556],{"class":273,"line":549},6,[243,551,298],{"class":277},[243,553,301],{"class":281},[243,555,516],{"class":281},[243,557,558],{"class":281}," api\n",[243,560,562,564,566,569],{"class":273,"line":561},7,[243,563,298],{"class":277},[243,565,301],{"class":281},[243,567,568],{"class":281}," laraclaw:setup-calendar",[243,570,571],{"class":492},"           # Google or Apple\n",[243,573,575,577,579,582],{"class":273,"line":574},8,[243,576,298],{"class":277},[243,578,301],{"class":281},[243,580,581],{"class":281}," laraclaw:setup-files",[243,583,584],{"class":492},"              # File Manager allowlist\n",[243,586,588,590,592,595],{"class":273,"line":587},9,[243,589,298],{"class":277},[243,591,301],{"class":281},[243,593,594],{"class":281}," laraclaw:setup-memory",[243,596,597],{"class":492},"             # memory + embedding provider\n",[243,599,601,603,605,608],{"class":273,"line":600},10,[243,602,298],{"class":277},[243,604,301],{"class":281},[243,606,607],{"class":281}," laraclaw:setup-read-database",[243,609,610],{"class":492},"      # read-only DB connection\n",[243,612,614,616,618,621],{"class":273,"line":613},11,[243,615,298],{"class":277},[243,617,301],{"class":281},[243,619,620],{"class":281}," laraclaw:setup-browser",[243,622,623],{"class":492},"            # headless browser (Lightpanda)\n",[149,625,626,627,630],{},"These are the same building blocks ",[204,628,629],{},"laraclaw:setup"," calls. Run any of them whenever you need to change just that piece.",[145,632,634],{"id":633},"verifying-the-installation","Verifying the Installation",[149,636,637],{},"Start the supporting processes:",[263,639,641],{"className":265,"code":640,"language":267,"meta":268,"style":268},"php artisan queue:work\nphp artisan schedule:work\n",[204,642,643,652],{"__ignoreMap":268},[243,644,645,647,649],{"class":273,"line":274},[243,646,298],{"class":277},[243,648,301],{"class":281},[243,650,651],{"class":281}," queue:work\n",[243,653,654,656,658],{"class":273,"line":496},[243,655,298],{"class":277},[243,657,301],{"class":281},[243,659,660],{"class":281}," schedule:work\n",[149,662,663],{},"Then open a terminal session with the agent:",[263,665,667],{"className":265,"code":666,"language":267,"meta":268,"style":268},"php artisan laraclaw:chat\n",[204,668,669],{"__ignoreMap":268},[243,670,671,673,675],{"class":273,"line":274},[243,672,298],{"class":277},[243,674,301],{"class":281},[243,676,677],{"class":281}," laraclaw:chat\n",[149,679,680],{},"Type a message. The agent should reply.",[149,682,683],{},"If it doesn't, the most common culprits are:",[175,685,686,692,705],{},[178,687,688,691],{},[181,689,690],{},"No queue worker running."," Most connectors (terminal included) queue the agent run.",[178,693,694,700,701,704],{},[181,695,696,697,699],{},"Wrong ",[204,698,424],{}," value or missing API key."," Re-run ",[204,702,703],{},"php artisan laraclaw:setup-agent",".",[178,706,707,700,712,704],{},[181,708,709,711],{},[204,710,414],{}," doesn't match a real user.",[204,713,714],{},"php artisan laraclaw:setup-admin",[145,716,718],{"id":717},"whats-next","What's Next",[149,720,721,722,724,725,727],{},"From here, head to ",[153,723,33],{"href":40}," to register a webhook URL with whichever channel you've enabled, or ",[153,726,13],{"href":14}," to tune behaviour.",[149,729,730],{},"Until next time!",[732,733,734],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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);}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}",{"title":268,"searchDepth":496,"depth":496,"links":736},[737,738,739,740,743,744],{"id":147,"depth":496,"text":5},{"id":169,"depth":496,"text":170},{"id":257,"depth":496,"text":258},{"id":372,"depth":496,"text":373,"children":741},[742],{"id":471,"depth":509,"text":472},{"id":633,"depth":496,"text":634},{"id":717,"depth":496,"text":718},"Install Laraclaw, publish its config, and walk through the setup wizard.","md",null,{},true,{"title":29,"description":745},"S-nRuqrRTyKQcuOtcapuFeF0QFR1H7IUXwKfh3A368g",[753,755],{"title":25,"path":26,"stem":27,"description":754,"children":-1},"Install Laraclaw and have the agent reply to you in the terminal in under five minutes.",{"title":39,"path":40,"stem":41,"description":756,"children":-1},"Wire Laraclaw up to a Telegram bot for direct messages and group chats.",1786661906119]