[{"data":1,"prerenderedAt":361},["ShallowReactive",2],{"navigation_docs":3,"-platform-security":151,"-platform-security-surround":356},[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":115,"body":153,"description":349,"extension":350,"links":351,"meta":352,"navigation":353,"path":116,"seo":354,"stem":117,"__hash__":355},"docs/3.platform/5.security.md",{"type":154,"value":155,"toc":340},"minimark",[156,161,211,214,264,268,286,290,310,314],[157,158,160],"h2",{"id":159},"overview","Overview",[162,163,164,179,193,199],"ul",{},[165,166,167,171,172,178],"li",{},[168,169,170],"strong",{},"Secrets"," live in ",[168,173,174],{},[175,176,177],"code",{},"~/.agent-os/config.json"," or in the environment; never commit them to the repo.",[165,180,181,184,185,188,189,192],{},[168,182,183],{},"Server"," binds to ",[168,186,187],{},"127.0.0.1"," by default (configurable via ",[168,190,191],{},"HOST","); no internet exposure unless you use a reverse proxy or change HOST.",[165,194,195,198],{},[168,196,197],{},"Channel tokens"," (Telegram, Slack, Discord, Signal, Viber) are stored only in config; webhooks should be served over HTTPS in production.",[165,200,201,204,205,210],{},[168,202,203],{},"Skill config"," (API keys, options) is stored in ",[168,206,207],{},[175,208,209],{},"~/.agent-os/configs/\u003Cskill_id>.json","; keep that directory out of public repos.",[157,212,82],{"id":213},"agent-os",[162,215,216,226,236,248,258],{},[165,217,218,221,222,225],{},[168,219,220],{},"Binding:"," Server binds to ",[168,223,224],{},"127.0.0.1:3010"," by default. Expose publicly only behind a reverse proxy with HTTPS and, if needed, auth.",[165,227,228,231,232,235],{},[168,229,230],{},"Secrets:"," API keys (OpenAI, OpenRouter, Anthropic, Google) and channel tokens are read from ",[168,233,234],{},"config.json"," or env. Set them in Settings or edit the file; never put them in code or git.",[165,237,238,241,242,247],{},[168,239,240],{},"Workspace:"," Each agent has a sandbox at ",[168,243,244],{},[175,245,246],{},"~/.agent-os/workspaces/{agent_id}/",". File-access tools are restricted to this path (resolveInWorkspace); agents cannot read/write outside it.",[165,249,250,253,254,257],{},[168,251,252],{},"Tools:"," Agents declare ",[168,255,256],{},"allowed tools"," (from their skills + built-in allowlist). Runtime limits (max_turns, max_tokens, max_runtime) can be set per agent. Restrict which tools an agent can use via its config.",[165,259,260,263],{},[168,261,262],{},"Exec tool:"," If the agent can run shell commands (exec tool), restrict to a safe working directory (workspace) and document allowed commands; avoid running untrusted code.",[157,265,267],{"id":266},"channels","Channels",[162,269,270,280],{},[165,271,272,275,276,279],{},[168,273,274],{},"Webhooks:"," In production use ",[168,277,278],{},"HTTPS"," for webhook URLs. Set tokens and signing secrets only in config or env.",[165,281,282,285],{},[168,283,284],{},"Verification:"," Slack (signing secret) and Discord (public key) verify request signatures; keep those values secret and set them in config.",[157,287,289],{"id":288},"optional-store","Optional store",[162,291,292,303],{},[165,293,294,295,298,299,302],{},"If you run a ",[168,296,297],{},"skill store",", protect admin and submission APIs with secrets (e.g. ",[168,300,301],{},"ADMIN_SECRET","). License tokens for paid skills should be kept private.",[165,304,305,306,309],{},"Agent OS only ",[168,307,308],{},"consumes"," a registry URL; it does not store OAuth tokens for the store. Store credentials belong in the store app’s env.",[157,311,313],{"id":312},"best-practices","Best practices",[162,315,316,322,333],{},[165,317,318,319,321],{},"Use ",[168,320,278],{}," for any publicly reachable server (e.g. reverse proxy in front of Agent OS).",[165,323,324,325,328,329,332],{},"Rotate ",[168,326,327],{},"API keys"," and channel ",[168,330,331],{},"tokens"," if you suspect exposure.",[165,334,335,336,339],{},"Prefer ",[168,337,338],{},"least privilege:"," run the process with a user that cannot access unrelated files; rely on the workspace sandbox for agent file access.",{"title":341,"searchDepth":342,"depth":342,"links":343},"",2,[344,345,346,347,348],{"id":159,"depth":342,"text":160},{"id":213,"depth":342,"text":82},{"id":266,"depth":342,"text":267},{"id":288,"depth":342,"text":289},{"id":312,"depth":342,"text":313},"How secrets, tokens, and access are handled in Sulala Agent OS.","md",null,{},{"icon":118},{"title":115,"description":349},"6zrLbxfEFFXbY77E5jCVgf0D2tGfn19Ib6QK87w6r-g",[357,359],{"title":111,"path":112,"stem":113,"description":358,"icon":17,"children":-1},"How to write a skill for Agent OS — folder layout (skill.yaml or SKILL.md, tools.yaml), config schema, and installation.",{"title":120,"path":121,"stem":122,"description":360,"icon":90,"children":-1},"REST API for Sulala Agent OS — agents, run, stream, tasks, skills, memory, conversations, channels.",1773850668598]