[{"data":1,"prerenderedAt":490},["ShallowReactive",2],{"navigation_docs":3,"-guides-deployment":151,"-guides-deployment-surround":485},[4,15,75,136],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":14},"Getting Started","i-lucide-rocket","/getting-started","1.getting-started",[10],{"title":11,"path":12,"stem":13,"icon":6},"Quick Start","/getting-started/quick-start","1.getting-started/1.quick-start",false,{"title":16,"icon":17,"path":18,"stem":19,"children":20,"page":14},"Guides","i-lucide-book-open","/guides","2.guides",[21,26,31,36,41,46,51,56,61,66,71],{"title":22,"path":23,"stem":24,"icon":25},"Deployment","/guides/deployment","2.guides/1.deployment","i-lucide-server",{"title":27,"path":28,"stem":29,"icon":30},"Get Help","/guides/get-help","2.guides/10.get-help","i-lucide-message-circle",{"title":32,"path":33,"stem":34,"icon":35},"Glossary","/guides/glossary","2.guides/11.glossary","i-lucide-book-marked",{"title":37,"path":38,"stem":39,"icon":40},"Concepts","/guides/concepts","2.guides/2.concepts","i-lucide-list",{"title":42,"path":43,"stem":44,"icon":45},"Roadmap","/guides/roadmap","2.guides/3.roadmap","i-lucide-map",{"title":47,"path":48,"stem":49,"icon":50},"Contribution Guide","/guides/contribution-guide","2.guides/4.contribution-guide","i-lucide-git-pull-request",{"title":52,"path":53,"stem":54,"icon":55},"Using the Dashboard","/guides/using-the-dashboard","2.guides/5.using-the-dashboard","i-lucide-layout-dashboard",{"title":57,"path":58,"stem":59,"icon":60},"Privacy and Data","/guides/privacy-and-data","2.guides/6.privacy-and-data","i-lucide-shield",{"title":62,"path":63,"stem":64,"icon":65},"Changelog","/guides/changelog","2.guides/7.changelog","i-lucide-history",{"title":67,"path":68,"stem":69,"icon":70},"Limits and Quotas","/guides/limits-and-quotas","2.guides/8.limits-and-quotas","i-lucide-gauge",{"title":72,"path":73,"stem":74,"icon":25},"Self-Hosting","/guides/self-hosting","2.guides/9.self-hosting",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":14},"Platform","i-lucide-layers","/platform","3.platform",[81,86,91,96,100,105,110,114,119,123,128,132],{"title":82,"path":83,"stem":84,"icon":85},"Agent OS","/platform/agent","3.platform/1.agent","i-lucide-cpu",{"title":87,"path":88,"stem":89,"icon":90},"Store API Contract (for Agent OS)","/platform/store-api","3.platform/10.store-api","i-lucide-code-2",{"title":92,"path":93,"stem":94,"icon":95},"CLI Reference","/platform/cli-reference","3.platform/11.cli-reference","i-lucide-terminal",{"title":97,"path":98,"stem":99,"icon":25},"MCP Server Integration (optional)","/platform/mcp-server-integration","3.platform/12.mcp-server-integration",{"title":101,"path":102,"stem":103,"icon":104},"Channels (Telegram, Slack, Discord, Signal, Viber)","/platform/integrations","3.platform/2.integrations","i-lucide-plug",{"title":106,"path":107,"stem":108,"icon":109},"Skills Store (optional)","/platform/store","3.platform/3.store","i-lucide-store",{"title":111,"path":112,"stem":113,"icon":17},"Skills Authoring","/platform/skills-authoring","3.platform/4.skills-authoring",{"title":115,"path":116,"stem":117,"icon":118},"Security","/platform/security","3.platform/5.security","i-lucide-shield-check",{"title":120,"path":121,"stem":122,"icon":90},"Agent API Reference","/platform/agent-api","3.platform/6.agent-api",{"title":124,"path":125,"stem":126,"icon":127},"Agent Configuration","/platform/agent-config","3.platform/7.agent-config","i-lucide-settings",{"title":129,"path":130,"stem":131,"icon":127},"Channels Configuration","/platform/integrations-config","3.platform/8.integrations-config",{"title":133,"path":134,"stem":135,"icon":127},"Store Configuration (optional)","/platform/store-config","3.platform/9.store-config",{"title":137,"icon":138,"path":139,"stem":140,"children":141,"page":14},"Troubleshooting","i-lucide-wrench","/troubleshooting","4.troubleshooting",[142,146],{"title":143,"path":144,"stem":145,"icon":138},"Common Issues","/troubleshooting/common-issues","4.troubleshooting/1.common-issues",{"title":147,"path":148,"stem":149,"icon":150},"FAQ","/troubleshooting/faq","4.troubleshooting/2.faq","i-lucide-help-circle",{"id":152,"title":22,"body":153,"description":478,"extension":479,"links":480,"meta":481,"navigation":482,"path":23,"seo":483,"stem":24,"__hash__":484},"docs/2.guides/1.deployment.md",{"type":154,"value":155,"toc":468},"minimark",[156,160,165,169,229,241,245,271,274,278,327,331,396,400,403,437,441,464],[157,158,82],"h2",{"id":159},"agent-os",[161,162,164],"h3",{"id":163},"run-as-a-daemon-background","Run as a daemon (background)",[166,167,168],"p",{},"After building the CLI from the sulala package:",[170,171,176],"pre",{"className":172,"code":173,"language":174,"meta":175,"style":175},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cd sulala\nbun run build\nsulala onboard   # first time only\nsulala start --daemon\n","bash","",[177,178,179,192,205,218],"code",{"__ignoreMap":175},[180,181,184,188],"span",{"class":182,"line":183},"line",1,[180,185,187],{"class":186},"s2Zo4","cd",[180,189,191],{"class":190},"sfazB"," sulala\n",[180,193,195,199,202],{"class":182,"line":194},2,[180,196,198],{"class":197},"sBMFI","bun",[180,200,201],{"class":190}," run",[180,203,204],{"class":190}," build\n",[180,206,208,211,214],{"class":182,"line":207},3,[180,209,210],{"class":197},"sulala",[180,212,213],{"class":190}," onboard",[180,215,217],{"class":216},"sHwdD","   # first time only\n",[180,219,221,223,226],{"class":182,"line":220},4,[180,222,210],{"class":197},[180,224,225],{"class":190}," start",[180,227,228],{"class":190}," --daemon\n",[166,230,231,232,235,236,240],{},"This starts the server in the background and writes the PID to ",[177,233,234],{},"~/.agent-os/sulala.pid",". Use ",[237,238,239],"strong",{},"sulala stop"," to stop it.",[161,242,244],{"id":243},"foreground-dev-or-process-manager","Foreground (dev or process manager)",[170,246,248],{"className":172,"code":247,"language":174,"meta":175,"style":175},"bun run dev\n# or\nsulala start\n",[177,249,250,259,264],{"__ignoreMap":175},[180,251,252,254,256],{"class":182,"line":183},[180,253,198],{"class":197},[180,255,201],{"class":190},[180,257,258],{"class":190}," dev\n",[180,260,261],{"class":182,"line":194},[180,262,263],{"class":216},"# or\n",[180,265,266,268],{"class":182,"line":207},[180,267,210],{"class":197},[180,269,270],{"class":190}," start\n",[166,272,273],{},"Runs the server in the foreground. Use a process manager (systemd, launchd, Docker) if you need restarts and logging.",[161,275,277],{"id":276},"environment-and-persistence","Environment and persistence",[279,280,281,302,317],"ul",{},[282,283,284,287,288,293,294,297,298,301],"li",{},[237,285,286],{},"Home:"," All data lives under ",[237,289,290],{},[177,291,292],{},"AGENT_OS_HOME"," (default ",[177,295,296],{},"~/.agent-os","): ",[177,299,300],{},"config.json",", SQLite DB, agents, skills, configs, graphs, workspaces.",[282,303,304,307,308,293,313,316],{},[237,305,306],{},"Database:"," ",[237,309,310],{},[177,311,312],{},"AGENT_MEMORY_DB_PATH",[177,314,315],{},"~/.agent-os/database.db","). Back up this file for persistence. Ensure the process has read/write access.",[282,318,319,322,323,326],{},[237,320,321],{},"Secrets:"," Set API keys and channel tokens in ",[177,324,325],{},"~/.agent-os/config.json"," or via env vars. Never commit config or .env with real keys.",[161,328,330],{"id":329},"production-checklist","Production checklist",[279,332,333,351,377,390],{},[282,334,335,338,339,344,345,350],{},[237,336,337],{},"Port and host:"," Set ",[237,340,341],{},[177,342,343],{},"PORT"," (default 3010) and ",[237,346,347],{},[177,348,349],{},"HOST"," (default 127.0.0.1). Bind to 0.0.0.0 only if you need remote access and have secured the server (e.g. reverse proxy + auth).",[282,352,353,356,357,360,361,364,365,368,369,372,373,376],{},[237,354,355],{},"Reverse proxy:"," Put the server behind nginx or Caddy with HTTPS. Proxy ",[177,358,359],{},"/"," and ",[177,362,363],{},"/api"," (and ",[177,366,367],{},"/api/events"," for WebSocket) to ",[177,370,371],{},"http://127.0.0.1:3010",". Set the channel webhook URLs to the public HTTPS base (e.g. ",[177,374,375],{},"https://your-domain.com/api/channels/telegram/webhook",").",[282,378,379,307,382,385,386,389],{},[237,380,381],{},"Health:",[237,383,384],{},"GET /health"," returns ",[177,387,388],{},"{ ok: true, service: \"agent-os\" }",". Use it for liveness/readiness if needed.",[282,391,392,395],{},[237,393,394],{},"Logs:"," Server logs to stdout/stderr. Redirect or use a process manager that captures logs.",[161,397,399],{"id":398},"docker-optional","Docker (optional)",[166,401,402],{},"If you add a Dockerfile:",[279,404,405,415,427,434],{},[282,406,407,408,411,412,376],{},"Use ",[237,409,410],{},"Bun"," as the base image and run the built entry (e.g. ",[177,413,414],{},"dist/index.js",[282,416,417,418,422,423,426],{},"Set ",[237,419,420],{},[177,421,292],{}," to a path inside the container (e.g. ",[177,424,425],{},"/data",") and mount a volume there so config and DB persist.",[282,428,417,429,433],{},[237,430,431],{},[177,432,343],{}," to match the exposed port. Expose 3010 (or your choice).",[282,435,436],{},"Pass API keys and channel tokens via env or a mounted config file.",[161,438,440],{"id":439},"channels-in-production","Channels in production",[279,442,443,457],{},[282,444,445,448,449,452,453,456],{},[237,446,447],{},"Webhooks"," require a ",[237,450,451],{},"public HTTPS URL",". Use a reverse proxy and set each channel’s webhook on the platform (Telegram, Slack, Discord, Viber) to that URL. For Telegram and Viber, call the ",[237,454,455],{},"set-webhook"," API (or dashboard) with the public URL.",[282,458,459,460,463],{},"Keep ",[237,461,462],{},"tokens and signing secrets"," in config or env; never in the repo.",[465,466,467],"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 .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":175,"searchDepth":194,"depth":194,"links":469},[470],{"id":159,"depth":194,"text":82,"children":471},[472,473,474,475,476,477],{"id":163,"depth":207,"text":164},{"id":243,"depth":207,"text":244},{"id":276,"depth":207,"text":277},{"id":329,"depth":207,"text":330},{"id":398,"depth":207,"text":399},{"id":439,"depth":207,"text":440},"How to run Sulala Agent OS in production — daemon, env, and optional reverse proxy.","md",null,{},{"icon":25},{"title":22,"description":478},"DNDq723pRKVDRBC3q-xJ4NRuNQFddwTwdAtQaFslWKk",[486,488],{"title":11,"path":12,"stem":13,"description":487,"icon":6,"children":-1},"Get Sulala Agent OS running in under 10 minutes — install with Bun, onboard, start the server, and run an agent.",{"title":27,"path":28,"stem":29,"description":489,"icon":30,"children":-1},"Where to ask questions, report bugs, and join the community for Sulala Agent OS.",1773850667751]