[{"data":1,"prerenderedAt":2181},["ShallowReactive",2],{"navigation":3,"/app-enablement/compositions":879,"/app-enablement/compositions-surround":2176},[4,22,45,115,156,187,214,235,264,295,318,361,389,418,436,470,491,534,548,571,632,670,693,757,850],{"title":5,"path":6,"stem":7,"children":8,"icon":11},"Introduction","/introduction","01.introduction/1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"What is Orkestia?","i-lucide-sparkles",{"title":13,"path":14,"stem":15,"icon":16},"Core Philosophy","/introduction/core-philosophy","01.introduction/2.core-philosophy","i-lucide-shield-check",{"title":18,"path":19,"stem":20,"icon":21},"Key Benefits","/introduction/key-benefits","01.introduction/3.key-benefits","i-lucide-trophy",{"title":23,"path":24,"stem":25,"children":26,"icon":29},"Getting Started","/getting-started","02.getting-started/1.index",[27,30,35,40],{"title":28,"path":24,"stem":25,"icon":29},"Quick Start","i-lucide-rocket",{"title":31,"path":32,"stem":33,"icon":34},"Architecture Overview","/getting-started/architecture-overview","02.getting-started/2.architecture-overview","i-lucide-layout-dashboard",{"title":36,"path":37,"stem":38,"icon":39},"Concepts at a Glance","/getting-started/concepts","02.getting-started/3.concepts","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Connect an AI Assistant","/getting-started/connect-an-ai-assistant","02.getting-started/4.connect-an-ai-assistant","i-lucide-bot",{"title":46,"path":47,"stem":48,"children":49,"icon":51},"Core Concepts","/concepts","03.concepts/01.index",[50,52,57,62,67,71,76,81,86,91,96,100,105,110],{"title":46,"path":47,"stem":48,"icon":51},"i-lucide-book-open",{"title":53,"path":54,"stem":55,"icon":56},"Workflows","/concepts/workflows","03.concepts/02.workflows","i-lucide-workflow",{"title":58,"path":59,"stem":60,"icon":61},"DGI — Dialog Generative Interface","/concepts/dgi","03.concepts/03.dgi","i-lucide-brain",{"title":63,"path":64,"stem":65,"icon":66},"Staff & AI Workforce Governance","/concepts/staff-governance","03.concepts/04.staff-governance","i-lucide-users-round",{"title":68,"path":69,"stem":70,"icon":44},"Agents — the execution substrate","/concepts/agents-platform","03.concepts/05.agents-platform",{"title":72,"path":73,"stem":74,"icon":75},"Runners & Execution Environments","/concepts/runners","03.concepts/06.runners","i-lucide-server-cog",{"title":77,"path":78,"stem":79,"icon":80},"Lumen Observability","/concepts/lumen","03.concepts/07.lumen","i-lucide-activity",{"title":82,"path":83,"stem":84,"icon":85},"Identity & Multi-Tenancy","/concepts/identity-multi-tenancy","03.concepts/08.identity-multi-tenancy","i-lucide-users",{"title":87,"path":88,"stem":89,"icon":90},"Billing, Pricing & Seats","/concepts/billing-and-seats","03.concepts/09.billing-and-seats","i-lucide-credit-card",{"title":92,"path":93,"stem":94,"icon":95},"App Data","/concepts/appdata","03.concepts/10.appdata","i-lucide-database",{"title":97,"path":98,"stem":99,"icon":61},"Engram","/concepts/engram","03.concepts/11.engram",{"title":101,"path":102,"stem":103,"icon":104},"DevKit","/concepts/devkit","03.concepts/12.devkit","i-lucide-terminal",{"title":106,"path":107,"stem":108,"icon":109},"App Host","/concepts/app-host","03.concepts/13.app-host","i-lucide-globe",{"title":111,"path":112,"stem":113,"icon":114},"Agent Exchange","/concepts/agent-exchange","03.concepts/14.agent-exchange","i-lucide-landmark",{"title":116,"path":117,"stem":118,"children":119,"icon":121},"Guides","/guides","04.guides/1.index",[120,122,127,132,137,142,147,151],{"title":116,"path":117,"stem":118,"icon":121},"i-lucide-compass",{"title":123,"path":124,"stem":125,"icon":126},"Building with DGI","/guides/building-with-dgi","04.guides/2.building-with-dgi","i-lucide-brain-circuit",{"title":128,"path":129,"stem":130,"icon":131},"Creating & Exposing Virtual Workflows","/guides/virtual-workflows","04.guides/4.virtual-workflows","i-lucide-blocks",{"title":133,"path":134,"stem":135,"icon":136},"Runner Management & Provisioning","/guides/runner-management","04.guides/5.runner-management","i-lucide-server",{"title":138,"path":139,"stem":140,"icon":141},"Security & Compliance","/guides/security-and-compliance","04.guides/7.security-and-compliance","i-lucide-shield",{"title":143,"path":144,"stem":145,"icon":146},"Tickets & Software Delivery","/guides/tickets-and-software-delivery","04.guides/8.tickets-and-software-delivery","i-lucide-ticket",{"title":148,"path":149,"stem":150},"Orkestia for AI-driven cloud infrastructure automation","/guides/cloud-automation-alternatives","04.guides/9.cloud-automation-alternatives",{"title":152,"path":153,"stem":154,"icon":155},"Typed decisions with TypeSafe","/guides/typed-decisions-with-typesafe","04.guides/9.typed-decisions-with-typesafe","i-lucide-git-branch",{"title":157,"path":158,"stem":159,"children":160,"icon":162},"Reference","/reference","05.reference/1.index",[161,163,168,173,177,182],{"title":157,"path":158,"stem":159,"icon":162},"i-lucide-library",{"title":164,"path":165,"stem":166,"icon":167},"Workflow Types & Registry","/reference/workflow-types-registry","05.reference/2.workflow-types-registry","i-lucide-list-tree",{"title":169,"path":170,"stem":171,"icon":172},"MCP Integration","/reference/mcp-integration","05.reference/3.mcp-integration","i-lucide-plug-zap",{"title":174,"path":175,"stem":176,"icon":104},"API & Tooling","/reference/api-tooling","05.reference/4.api-tooling",{"title":178,"path":179,"stem":180,"icon":181},"Integrations Catalog","/reference/integrations-catalog","05.reference/6.integrations-catalog","i-lucide-plug",{"title":183,"path":184,"stem":185,"icon":186},"Platform Services","/reference/platform-services","05.reference/7.platform-services","i-lucide-boxes",{"title":188,"path":189,"stem":190,"children":191,"icon":193},"Advanced Topics","/advanced","06.advanced/1.index",[192,194,199,204,209],{"title":188,"path":189,"stem":190,"icon":193},"i-lucide-flask-conical",{"title":195,"path":196,"stem":197,"icon":198},"Hybrid AI + Deterministic Execution","/advanced/hybrid-execution-model","06.advanced/2.hybrid-execution-model","i-lucide-git-merge",{"title":200,"path":201,"stem":202,"icon":203},"Drift Detection & Self-Healing","/advanced/drift-detection-self-healing","06.advanced/3.drift-detection-self-healing","i-lucide-heart-pulse",{"title":205,"path":206,"stem":207,"icon":208},"Governance & Approvals","/advanced/governance-and-approvals","06.advanced/4.governance-and-approvals","i-lucide-scale",{"title":210,"path":211,"stem":212,"icon":213},"Cost & Performance Optimization","/advanced/cost-and-performance","06.advanced/5.cost-and-performance","i-lucide-zap",{"title":215,"path":216,"stem":217,"children":218,"icon":220},"Operations","/operations","07.operations/1.index",[219,221,225,230],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-settings-2",{"title":222,"path":223,"stem":224,"icon":186},"Deployment Models","/operations/deployment-models","07.operations/2.deployment-models",{"title":226,"path":227,"stem":228,"icon":229},"Monitoring & Debugging","/operations/monitoring-and-debugging","07.operations/3.monitoring-and-debugging","i-lucide-bug",{"title":231,"path":232,"stem":233,"icon":234},"Best Practices","/operations/best-practices","07.operations/4.best-practices","i-lucide-check-check",{"title":236,"path":237,"stem":238,"children":239,"icon":241},"AWS Connections","/aws-connections","08.aws-connections/1.index",[240,242,245,250,255,260],{"title":236,"path":237,"stem":238,"icon":241},"i-simple-icons-amazonaws",{"title":23,"path":243,"stem":244,"icon":29},"/aws-connections/getting-started","08.aws-connections/2.getting-started",{"title":246,"path":247,"stem":248,"icon":249},"Setup Methods","/aws-connections/setup-methods","08.aws-connections/3.setup-methods","i-lucide-wrench",{"title":251,"path":252,"stem":253,"icon":254},"Managing Connections","/aws-connections/managing-connections","08.aws-connections/4.managing-connections","i-lucide-settings",{"title":256,"path":257,"stem":258,"icon":259},"Security Best Practices","/aws-connections/security-best-practices","08.aws-connections/5.security-best-practices","i-lucide-lock",{"title":261,"path":262,"stem":263,"icon":229},"Troubleshooting","/aws-connections/troubleshooting","08.aws-connections/6.troubleshooting",{"title":265,"path":266,"stem":267,"children":268,"icon":270},"Cloud Connections","/cloud-connections","09.cloud-connections/1.index",[269,271,276,281,286,291],{"title":265,"path":266,"stem":267,"icon":270},"i-lucide-cable",{"title":272,"path":273,"stem":274,"icon":275},"Google Cloud (GCP)","/cloud-connections/gcp","09.cloud-connections/2.gcp","i-simple-icons-googlecloud",{"title":277,"path":278,"stem":279,"icon":280},"Microsoft Azure","/cloud-connections/azure","09.cloud-connections/3.azure","i-simple-icons-microsoftazure",{"title":282,"path":283,"stem":284,"icon":285},"Magalu Cloud","/cloud-connections/magalu","09.cloud-connections/4.magalu","i-lucide-cloud",{"title":287,"path":288,"stem":289,"icon":290},"Kubernetes","/cloud-connections/kubernetes","09.cloud-connections/5.kubernetes","i-simple-icons-kubernetes",{"title":292,"path":293,"stem":294,"icon":208},"TypeSafe","/cloud-connections/typesafe","09.cloud-connections/6.typesafe",{"title":296,"path":297,"stem":298,"children":299,"icon":136},"DNS Providers","/dns-providers","10.dns-providers/1.index",[300,302,305,308,311,315],{"title":301,"path":297,"stem":298,"icon":136},"DNS Provider Connections",{"title":23,"path":303,"stem":304,"icon":29},"/dns-providers/getting-started","10.dns-providers/2.getting-started",{"title":246,"path":306,"stem":307,"icon":249},"/dns-providers/setup-methods","10.dns-providers/3.setup-methods",{"title":251,"path":309,"stem":310,"icon":254},"/dns-providers/managing-connections","10.dns-providers/4.managing-connections",{"title":312,"path":313,"stem":314,"icon":39},"Zones and Records","/dns-providers/zones-and-records","10.dns-providers/5.zones-and-records",{"title":261,"path":316,"stem":317,"icon":229},"/dns-providers/troubleshooting","10.dns-providers/6.troubleshooting",{"title":319,"path":320,"stem":321,"children":322,"icon":29},"Cloud Deploy","/cloud-deploy","11.cloud-deploy/01.index",[323,324,327,332,336,341,345,349,354,358],{"title":319,"path":320,"stem":321,"icon":29},{"title":23,"path":325,"stem":326,"icon":29},"/cloud-deploy/getting-started","11.cloud-deploy/02.getting-started",{"title":328,"path":329,"stem":330,"icon":331},"Creating a Site","/cloud-deploy/creating-a-site","11.cloud-deploy/03.creating-a-site","i-lucide-plus-circle",{"title":333,"path":334,"stem":335,"icon":34},"Site Overview and Deployments","/cloud-deploy/site-overview","11.cloud-deploy/04.site-overview",{"title":337,"path":338,"stem":339,"icon":340},"Deployment Progress and Success","/cloud-deploy/deployment-progress","11.cloud-deploy/05.deployment-progress","i-lucide-loader",{"title":342,"path":343,"stem":344,"icon":254},"Settings","/cloud-deploy/settings","11.cloud-deploy/06.settings",{"title":346,"path":347,"stem":348,"icon":109},"Custom Domains","/cloud-deploy/custom-domains","11.cloud-deploy/07.custom-domains",{"title":350,"path":351,"stem":352,"icon":353},"Resources, Releases, and Danger Zone","/cloud-deploy/resources-releases","11.cloud-deploy/08.resources-releases","i-lucide-package",{"title":355,"path":356,"stem":357,"icon":141},"Admin Dashboard","/cloud-deploy/admin-dashboard","11.cloud-deploy/09.admin-dashboard",{"title":261,"path":359,"stem":360,"icon":229},"/cloud-deploy/troubleshooting","11.cloud-deploy/10.troubleshooting",{"title":362,"path":363,"stem":364,"children":365,"icon":368},"User Onboarding","/user-onboarding","12.user-onboarding/1.index",[366,369,372,377,382,386],{"title":367,"path":363,"stem":364,"icon":368},"User Creation and Onboarding","i-lucide-user-plus",{"title":23,"path":370,"stem":371,"icon":29},"/user-onboarding/getting-started","12.user-onboarding/2.getting-started",{"title":373,"path":374,"stem":375,"icon":376},"Creating Your Organization","/user-onboarding/onboarding","12.user-onboarding/3.onboarding","i-lucide-building-2",{"title":378,"path":379,"stem":380,"icon":381},"Invitations","/user-onboarding/invitations","12.user-onboarding/4.invitations","i-lucide-mail",{"title":383,"path":384,"stem":385,"icon":254},"Managing Your Account","/user-onboarding/managing-account","12.user-onboarding/5.managing-account",{"title":261,"path":387,"stem":388,"icon":229},"/user-onboarding/troubleshooting","12.user-onboarding/6.troubleshooting",{"title":342,"path":390,"stem":391,"children":392,"icon":394},"/settings","13.settings/1.index",[393,395,400,404,409,413],{"title":342,"path":390,"stem":391,"icon":394},"i-lucide-sliders-horizontal",{"title":396,"path":397,"stem":398,"icon":399},"General Settings","/settings/general","13.settings/2.general","i-lucide-user",{"title":401,"path":402,"stem":403,"icon":85},"Members Settings","/settings/members","13.settings/3.members",{"title":405,"path":406,"stem":407,"icon":408},"Notifications Settings","/settings/notifications","13.settings/4.notifications","i-lucide-bell",{"title":410,"path":411,"stem":412,"icon":141},"Security Settings","/settings/security","13.settings/5.security",{"title":414,"path":415,"stem":416,"icon":417},"Signing Keys","/settings/keys","13.settings/6.keys","i-lucide-key-round",{"title":419,"path":420,"stem":421,"children":422,"icon":29},"App Enablement","/app-enablement","14.app-enablement/1.index",[423,424,428,432],{"title":419,"path":420,"stem":421,"icon":29},{"title":425,"path":426,"stem":427,"icon":417},"Sign in with Orkestia","/app-enablement/sign-in-with-orkestia","14.app-enablement/2.sign-in-with-orkestia",{"title":429,"path":430,"stem":431,"icon":95},"End-user data","/app-enablement/end-user-data","14.app-enablement/3.end-user-data",{"title":433,"path":434,"stem":435,"icon":131},"Compositions — use, invoke, share","/app-enablement/compositions","14.app-enablement/4.compositions",{"title":437,"path":438,"stem":439,"children":440,"icon":80},"Lumen","/lumen","15.lumen/1.index",[441,442,447,452,457,461,465],{"title":437,"path":438,"stem":439,"icon":80},{"title":443,"path":444,"stem":445,"icon":446},"Enable Lumen","/lumen/enable","15.lumen/2.enable","i-lucide-power",{"title":448,"path":449,"stem":450,"icon":451},"Send data","/lumen/send-data","15.lumen/3.send-data","i-lucide-upload",{"title":453,"path":454,"stem":455,"icon":456},"Collector","/lumen/collector","15.lumen/4.collector","i-lucide-container",{"title":458,"path":459,"stem":460,"icon":34},"Use Lumen","/lumen/observe","15.lumen/5.observe",{"title":462,"path":463,"stem":464,"icon":44},"Lumen MCP","/lumen/mcp","15.lumen/6.mcp",{"title":466,"path":467,"stem":468,"icon":469},"Query API","/lumen/query-api","15.lumen/7.query-api","i-lucide-search",{"title":471,"path":472,"stem":473,"children":474,"icon":476},"SDKs","/sdks","16.sdks/1.index",[475,477,482,487],{"title":471,"path":472,"stem":473,"icon":476},"i-lucide-code",{"title":478,"path":479,"stem":480,"icon":481},"Workflows SDK — Node / TypeScript","/sdks/workflows-nodejs","16.sdks/2.workflows-nodejs","i-lucide-file-ts",{"title":483,"path":484,"stem":485,"icon":486},"Workflows SDK — Python","/sdks/workflows-python","16.sdks/3.workflows-python","i-simple-icons-python",{"title":488,"path":489,"stem":490,"icon":417},"Auth SDK — Sign in with Orkestia","/sdks/auth","16.sdks/4.auth",{"title":92,"path":492,"stem":493,"children":494,"icon":95},"/appdata","17.appdata/1.index",[495,496,501,506,510,515,520,525,530],{"title":92,"path":492,"stem":493,"icon":95},{"title":497,"path":498,"stem":499,"icon":500},"Declare structures","/appdata/declare","17.appdata/2.declare","i-lucide-table",{"title":502,"path":503,"stem":504,"icon":505},"Records & Data API","/appdata/data-api","17.appdata/3.data-api","i-lucide-rows-3",{"title":507,"path":508,"stem":509,"icon":376},"Ownership & workspaces","/appdata/ownership","17.appdata/4.ownership",{"title":511,"path":512,"stem":513,"icon":514},"Expose App Data to end-users","/appdata/expose","17.appdata/5.expose","i-lucide-app-window",{"title":516,"path":517,"stem":518,"icon":519},"PostgREST HTTP","/appdata/postgrest","17.appdata/6.postgrest","i-lucide-unplug",{"title":521,"path":522,"stem":523,"icon":524},"Ordered append","/appdata/append","17.appdata/7.append","i-lucide-list-ordered",{"title":526,"path":527,"stem":528,"icon":529},"Databases and instances","/appdata/instances","17.appdata/8.instances","i-lucide-hard-drive",{"title":531,"path":532,"stem":533,"icon":104},"Query console and SQL","/appdata/query","17.appdata/9.query",{"title":97,"path":535,"stem":536,"children":537,"icon":61},"/engram","18.engram/1.index",[538,539,543],{"title":97,"path":535,"stem":536,"icon":61},{"title":540,"path":541,"stem":542,"icon":155},"Write & recall","/engram/write-recall","18.engram/2.write-recall",{"title":544,"path":545,"stem":546,"icon":547},"Field & feed","/engram/agent-memory","18.engram/3.agent-memory","i-lucide-radio",{"title":101,"path":549,"stem":550,"children":551,"icon":104},"/devkit","19.devkit/1.index",[552,553,558,562,567],{"title":101,"path":549,"stem":550,"icon":104},{"title":554,"path":555,"stem":556,"icon":557},"Install DevKit","/devkit/install","19.devkit/2.install","i-lucide-download",{"title":559,"path":560,"stem":561,"icon":519},"Hook redirect","/devkit/hooks","19.devkit/3.hooks",{"title":563,"path":564,"stem":565,"icon":566},"Local coding runner","/devkit/local-runner","19.devkit/4.local-runner","i-lucide-cpu",{"title":568,"path":569,"stem":570,"icon":131},"Compositions from DevKit","/devkit/compositions","19.devkit/5.compositions",{"title":572,"path":573,"stem":574,"children":575,"icon":44},"Staff & Agents","/staff-and-agents","20.staff-and-agents/01.index",[576,577,582,586,590,594,598,602,606,611,615,620,625,629],{"title":572,"path":573,"stem":574,"icon":44},{"title":578,"path":579,"stem":580,"icon":581},"Prerequisites","/staff-and-agents/prerequisites","20.staff-and-agents/02.prerequisites","i-lucide-list-checks",{"title":583,"path":584,"stem":585,"icon":368},"Hire an actor","/staff-and-agents/hire-an-actor","20.staff-and-agents/03.hire-an-actor",{"title":587,"path":588,"stem":589,"icon":34},"Console","/staff-and-agents/console","20.staff-and-agents/04.console",{"title":591,"path":592,"stem":593,"icon":11},"Configs, skills, and MCP","/staff-and-agents/configs-skills-mcp","20.staff-and-agents/05.configs-skills-mcp",{"title":595,"path":596,"stem":597,"icon":136},"Agent runner groups","/staff-and-agents/runner-groups","20.staff-and-agents/06.runner-groups",{"title":599,"path":600,"stem":601,"icon":16},"Governance","/staff-and-agents/governance","20.staff-and-agents/07.governance",{"title":603,"path":604,"stem":605,"icon":417},"Identity and tokens","/staff-and-agents/identity","20.staff-and-agents/08.identity",{"title":607,"path":608,"stem":609,"icon":610},"Memory and cost","/staff-and-agents/memory-and-cost","20.staff-and-agents/09.memory-and-cost","i-lucide-wallet",{"title":612,"path":613,"stem":614,"icon":155},"Coding agents","/staff-and-agents/coding-agents","20.staff-and-agents/10.coding-agents",{"title":616,"path":617,"stem":618,"icon":619},"Wire a repository for coding agents","/staff-and-agents/wire-a-repository","20.staff-and-agents/11.wire-a-repository","i-lucide-link",{"title":621,"path":622,"stem":623,"icon":624},"Run a ticket end to end","/staff-and-agents/run-a-ticket","20.staff-and-agents/12.run-a-ticket","i-lucide-play",{"title":626,"path":627,"stem":628,"icon":66},"Build a product team of actors","/staff-and-agents/build-a-product-team","20.staff-and-agents/13.build-a-product-team",{"title":261,"path":630,"stem":631,"icon":249},"/staff-and-agents/troubleshooting","20.staff-and-agents/14.troubleshooting",{"title":106,"path":633,"stem":634,"children":635,"icon":109},"/app-host","21.app-host/1.index",[636,637,641,644,649,653,658,662,666],{"title":106,"path":633,"stem":634,"icon":109},{"title":638,"path":639,"stem":640,"icon":514},"Your app and site","/app-host/your-app","21.app-host/2.your-app",{"title":92,"path":642,"stem":643,"icon":95},"/app-host/app-data","21.app-host/3.app-data",{"title":645,"path":646,"stem":647,"icon":648},"Website and process","/app-host/hosting","21.app-host/4.hosting","i-lucide-cloud-upload",{"title":650,"path":651,"stem":652,"icon":547},"Buzz","/app-host/buzz","21.app-host/5.buzz",{"title":654,"path":655,"stem":656,"icon":657},"Files","/app-host/files","21.app-host/6.files","i-lucide-folder",{"title":659,"path":660,"stem":661,"icon":109},"Your own domain","/app-host/your-domain","21.app-host/7.your-domain",{"title":663,"path":664,"stem":665,"icon":229},"Troubleshooting App Host","/app-host/troubleshooting","21.app-host/8.troubleshooting",{"title":667,"path":668,"stem":669,"icon":417},"Signing keys","/app-host/signing-keys","21.app-host/9.signing-keys",{"title":111,"path":671,"stem":672,"children":673,"icon":114},"/agent-exchange","22.agent-exchange/01.index",[674,675,678,682,686,690],{"title":111,"path":671,"stem":672,"icon":114},{"title":583,"path":676,"stem":677,"icon":368},"/agent-exchange/hire","22.agent-exchange/02.hire",{"title":679,"path":680,"stem":681,"icon":208},"List an actor","/agent-exchange/list","22.agent-exchange/03.list",{"title":683,"path":684,"stem":685,"icon":104},"Invoke & leases","/agent-exchange/invoke","22.agent-exchange/04.invoke",{"title":687,"path":688,"stem":689,"icon":141},"Settlement & trust","/agent-exchange/settlement","22.agent-exchange/05.settlement",{"title":53,"path":691,"stem":692,"icon":56},"/agent-exchange/workflows","22.agent-exchange/06.workflows",{"title":694,"path":695,"stem":696,"children":697,"icon":75},"Runners","/runners","23.runners/1.index",[698,700,704,709,713,717,721,726,730,734,738,741,745,749,753],{"title":699,"path":695,"stem":696,"icon":75},"Runner groups",{"title":701,"path":702,"stem":703,"icon":275},"Cloud Run","/runners/cloud-run","23.runners/10.cloud-run",{"title":705,"path":706,"stem":707,"icon":708},"DigitalOcean App Job","/runners/do-app-job","23.runners/11.do-app-job","i-simple-icons-digitalocean",{"title":710,"path":711,"stem":712,"icon":708},"DigitalOcean Droplet","/runners/do-droplet","23.runners/12.do-droplet",{"title":714,"path":715,"stem":716,"icon":285},"Magalu Cloud VM","/runners/magalu-vm","23.runners/13.magalu-vm",{"title":101,"path":718,"stem":719,"icon":720},"/runners/devkit","23.runners/14.devkit","i-lucide-laptop",{"title":722,"path":723,"stem":724,"icon":725},"Purposes & integrations","/runners/purposes","23.runners/16.purposes","i-lucide-layers",{"title":727,"path":728,"stem":729,"icon":241},"Fargate","/runners/fargate","23.runners/2.fargate",{"title":731,"path":732,"stem":733,"icon":241},"EC2 Auto Scaling","/runners/ec2-auto-scaling","23.runners/3.ec2-auto-scaling",{"title":735,"path":736,"stem":737,"icon":241},"EC2 VM","/runners/ec2-vm","23.runners/4.ec2-vm",{"title":287,"path":739,"stem":740,"icon":290},"/runners/kubernetes","23.runners/5.kubernetes",{"title":742,"path":743,"stem":744,"icon":280},"Azure Container Apps","/runners/azure-container-apps","23.runners/6.azure-container-apps",{"title":746,"path":747,"stem":748,"icon":280},"Azure VMSS","/runners/azure-vmss","23.runners/7.azure-vmss",{"title":750,"path":751,"stem":752,"icon":280},"Azure VM","/runners/azure-vm","23.runners/8.azure-vm",{"title":754,"path":755,"stem":756,"icon":275},"GCE","/runners/gce","23.runners/9.gce",{"title":758,"path":759,"stem":760,"children":761,"icon":763},"Chat","/chat","24.chat/01.index",[762,764,768,773,777,782,787,791,796,800,805,810,814,819,824,828,832,836,840,845],{"title":758,"path":759,"stem":760,"icon":763},"i-lucide-messages-square",{"title":765,"path":766,"stem":767,"icon":446},"Enable and publish","/chat/enable-and-publish","24.chat/02.enable-and-publish",{"title":769,"path":770,"stem":771,"icon":772},"Theme and customization","/chat/theme-and-customization","24.chat/03.theme-and-customization","i-lucide-palette",{"title":774,"path":775,"stem":776,"icon":85},"Members and moderation","/chat/members-and-moderation","24.chat/04.members-and-moderation",{"title":778,"path":779,"stem":780,"icon":781},"Channels","/chat/channels","24.chat/05.channels","i-lucide-hash",{"title":783,"path":784,"stem":785,"icon":786},"Using the chat","/chat/using-the-chat","24.chat/06.using-the-chat","i-lucide-message-circle",{"title":788,"path":789,"stem":790,"icon":44},"Actors in chat","/chat/actors-in-chat","24.chat/07.actors-in-chat",{"title":792,"path":793,"stem":794,"icon":795},"Internal support actor","/chat/internal-support-actor","24.chat/08.internal-support-actor","i-lucide-life-buoy",{"title":797,"path":798,"stem":799,"icon":104},"API and console","/chat/api-and-console","24.chat/09.api-and-console",{"title":801,"path":802,"stem":803,"icon":804},"Limits","/chat/limits","24.chat/10.limits","i-lucide-triangle-alert",{"title":806,"path":807,"stem":808,"icon":809},"Structured chat with DGI","/chat/structured-chat","24.chat/11.structured-chat","i-lucide-layout-list",{"title":811,"path":812,"stem":813,"icon":109},"Option A: hosted chat with DGI","/chat/option-a-hosted-chat","24.chat/12.option-a-hosted-chat",{"title":815,"path":816,"stem":817,"icon":818},"Option B: embed the chat component","/chat/option-b-embed-component","24.chat/13.option-b-embed-component","i-lucide-component",{"title":820,"path":821,"stem":822,"icon":823},"Option C: custom client (wire contract)","/chat/option-c-custom-client","24.chat/14.option-c-custom-client","i-lucide-braces",{"title":825,"path":826,"stem":827,"icon":394},"Responder configuration reference","/chat/responder-reference","24.chat/15.responder-reference",{"title":829,"path":830,"stem":831,"icon":547},"Cards, live updates and proactive posts","/chat/cards-live-and-proactive","24.chat/16.cards-live-and-proactive",{"title":833,"path":834,"stem":835,"icon":16},"Structured chat security model","/chat/structured-chat-security","24.chat/17.structured-chat-security",{"title":837,"path":838,"stem":839,"icon":181},"Option D: any app or API (dgi.chat)","/chat/option-d-chat-api","24.chat/18.option-d-chat-api",{"title":841,"path":842,"stem":843,"icon":844},"Card catalog","/chat/card-catalog","24.chat/19.card-catalog","i-lucide-layout-grid",{"title":846,"path":847,"stem":848,"icon":849},"Living Surfaces","/chat/living-surfaces","24.chat/20.living-surfaces","i-lucide-sprout",{"title":851,"path":852,"stem":853,"children":854,"icon":61},"DGI","/dgi","25.dgi/1.index",[855,857,862,866,870,874],{"title":856,"path":852,"stem":853,"icon":61},"What is DGI",{"title":858,"path":859,"stem":860,"icon":861},"How DGI works","/dgi/how-it-works","25.dgi/2.how-it-works","i-lucide-cog",{"title":863,"path":864,"stem":865,"icon":844},"Interfaces","/dgi/interfaces","25.dgi/3.interfaces",{"title":867,"path":868,"stem":869,"icon":29},"Quickstart","/dgi/quickstart","25.dgi/4.quickstart",{"title":871,"path":872,"stem":873,"icon":16},"Trust and safety","/dgi/trust-and-safety","25.dgi/5.trust-and-safety",{"title":875,"path":876,"stem":877,"icon":878},"FAQ","/dgi/faq","25.dgi/6.faq","i-lucide-circle-help",{"id":880,"title":433,"body":881,"description":2169,"extension":2170,"links":2171,"meta":2172,"navigation":2173,"path":434,"seo":2174,"stem":435,"__hash__":2175},"docs/14.app-enablement/4.compositions.md",{"type":882,"value":883,"toc":2160},"minimark",[884,915,925,937,954,959,1021,1036,1040,1050,1353,1412,1488,1507,1524,1528,1531,1713,1727,1737,1741,1755,1845,1856,1865,1869,1879,2082,2092,2098,2102,2108,2114,2122,2126,2156],[885,886,887,888,892,893,897,898,902,903,906,907,910,911,914],"p",{},"A ",[889,890,891],"strong",{},"composition"," (a ",[894,895,896],"em",{},"virtual workflow",") is your business logic as structure, not code: layers of existing catalog workflows, with every input wired from ",[899,900,901],"code",{},"input",", ",[899,904,905],{},"step",", or ",[899,908,909],{},"static",". After ",[899,912,913],{},"composition.save"," it is a normal type:",[916,917,922],"pre",{"className":918,"code":920,"language":921},[919],"language-text","virtual.\u003Ccomposition_uuid>@\u003Cversion>\n","text",[899,923,920],{"__ignoreMap":924},"",[885,926,927,928,931,932,936],{},"That is the ",[889,929,930],{},"only"," kind of workflow you can share with an ",[933,934,935],"a",{"href":420},"app end-user",". Raw catalog types are not startable with an end-user JWT.",[885,938,939,940,946,947,950,951,953],{},"Contract on ",[933,941,945],{"href":942,"rel":943},"https://reference.orkestia.dev/composition",[944],"nofollow","reference.orkestia.dev/composition",". Authoring detail: ",[933,948,949],{"href":129},"Creating & exposing virtual workflows",". To put a closed-set gate in front of later steps, use ",[933,952,152],{"href":153}," as the first layer.",[955,956,958],"h2",{"id":957},"what-you-do","What you do",[960,961,962,973,986,996,1009],"ol",{},[963,964,965,968,969,972],"li",{},[889,966,967],{},"Author"," — JSON, DGI, the console DAG builder, or ",[899,970,971],{},"ltinteg-devkit vw",".",[963,974,975,978,979,982,983,985],{},[889,976,977],{},"Validate / save"," — ",[899,980,981],{},"composition.validate"," then ",[899,984,913],{}," (org-member token or MCP).",[963,987,988,991,992,995],{},[889,989,990],{},"Invoke"," — start ",[899,993,994],{},"virtual.\u003Cuuid>@N"," as yourself to prove it.",[963,997,998,978,1001,1004,1005,1008],{},[889,999,1000],{},"Share",[899,1002,1003],{},"identity.app.expose-virtual-workflow"," so ",[894,1006,1007],{},"your app's users"," can start that version.",[963,1010,1011,1014,1015,1020],{},[889,1012,1013],{},"Enable the user"," — they sign in with ",[933,1016,1017],{"href":489},[899,1018,1019],{},"@orkestia/auth"," and your UI starts the virtual with their JWT.",[885,1022,1023,1024,1027,1028,1031,1032,1035],{},"Do ",[889,1025,1026],{},"not"," pass ",[899,1029,1030],{},"organization_uuid"," or ",[899,1033,1034],{},"actor",". The server fills those from the token.",[955,1037,1039],{"id":1038},"_1-author-and-save","1. Author and save",[885,1041,1042,1045,1046,1049],{},[899,1043,1044],{},"input_mapping"," is an ",[889,1047,1048],{},"object",". Keys are the step's parameter names. Live dialect:",[916,1051,1055],{"className":1052,"code":1053,"language":1054,"meta":924,"style":924},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"name\": \"list-my-orders\",\n  \"layers\": [\n    {\n      \"name\": \"query\",\n      \"steps\": [\n        {\n          \"name\": \"rows\",\n          \"workflow_type\": \"data.appdata.record.query\",\n          \"input_mapping\": {\n            \"table\": { \"source\": \"static\", \"value\": \"orders\" },\n            \"page_size\": { \"source\": \"input\", \"field_name\": \"page_size\" }\n          }\n        }\n      ]\n    }\n  ]\n}\n","json",[899,1056,1057,1066,1094,1109,1115,1137,1151,1157,1179,1200,1214,1269,1317,1323,1329,1335,1341,1347],{"__ignoreMap":924},[1058,1059,1062],"span",{"class":1060,"line":1061},"line",1,[1058,1063,1065],{"class":1064},"sMK4o","{\n",[1058,1067,1069,1072,1076,1079,1082,1085,1089,1091],{"class":1060,"line":1068},2,[1058,1070,1071],{"class":1064},"  \"",[1058,1073,1075],{"class":1074},"spNyl","name",[1058,1077,1078],{"class":1064},"\"",[1058,1080,1081],{"class":1064},":",[1058,1083,1084],{"class":1064}," \"",[1058,1086,1088],{"class":1087},"sfazB","list-my-orders",[1058,1090,1078],{"class":1064},[1058,1092,1093],{"class":1064},",\n",[1058,1095,1097,1099,1102,1104,1106],{"class":1060,"line":1096},3,[1058,1098,1071],{"class":1064},[1058,1100,1101],{"class":1074},"layers",[1058,1103,1078],{"class":1064},[1058,1105,1081],{"class":1064},[1058,1107,1108],{"class":1064}," [\n",[1058,1110,1112],{"class":1060,"line":1111},4,[1058,1113,1114],{"class":1064},"    {\n",[1058,1116,1118,1121,1124,1126,1128,1130,1133,1135],{"class":1060,"line":1117},5,[1058,1119,1120],{"class":1064},"      \"",[1058,1122,1075],{"class":1123},"sBMFI",[1058,1125,1078],{"class":1064},[1058,1127,1081],{"class":1064},[1058,1129,1084],{"class":1064},[1058,1131,1132],{"class":1087},"query",[1058,1134,1078],{"class":1064},[1058,1136,1093],{"class":1064},[1058,1138,1140,1142,1145,1147,1149],{"class":1060,"line":1139},6,[1058,1141,1120],{"class":1064},[1058,1143,1144],{"class":1123},"steps",[1058,1146,1078],{"class":1064},[1058,1148,1081],{"class":1064},[1058,1150,1108],{"class":1064},[1058,1152,1154],{"class":1060,"line":1153},7,[1058,1155,1156],{"class":1064},"        {\n",[1058,1158,1160,1163,1166,1168,1170,1172,1175,1177],{"class":1060,"line":1159},8,[1058,1161,1162],{"class":1064},"          \"",[1058,1164,1075],{"class":1165},"sbssI",[1058,1167,1078],{"class":1064},[1058,1169,1081],{"class":1064},[1058,1171,1084],{"class":1064},[1058,1173,1174],{"class":1087},"rows",[1058,1176,1078],{"class":1064},[1058,1178,1093],{"class":1064},[1058,1180,1182,1184,1187,1189,1191,1193,1196,1198],{"class":1060,"line":1181},9,[1058,1183,1162],{"class":1064},[1058,1185,1186],{"class":1165},"workflow_type",[1058,1188,1078],{"class":1064},[1058,1190,1081],{"class":1064},[1058,1192,1084],{"class":1064},[1058,1194,1195],{"class":1087},"data.appdata.record.query",[1058,1197,1078],{"class":1064},[1058,1199,1093],{"class":1064},[1058,1201,1203,1205,1207,1209,1211],{"class":1060,"line":1202},10,[1058,1204,1162],{"class":1064},[1058,1206,1044],{"class":1165},[1058,1208,1078],{"class":1064},[1058,1210,1081],{"class":1064},[1058,1212,1213],{"class":1064}," {\n",[1058,1215,1217,1220,1224,1226,1228,1231,1233,1237,1239,1241,1243,1245,1247,1250,1252,1255,1257,1259,1261,1264,1266],{"class":1060,"line":1216},11,[1058,1218,1219],{"class":1064},"            \"",[1058,1221,1223],{"class":1222},"swJcz","table",[1058,1225,1078],{"class":1064},[1058,1227,1081],{"class":1064},[1058,1229,1230],{"class":1064}," {",[1058,1232,1084],{"class":1064},[1058,1234,1236],{"class":1235},"su27w","source",[1058,1238,1078],{"class":1064},[1058,1240,1081],{"class":1064},[1058,1242,1084],{"class":1064},[1058,1244,909],{"class":1087},[1058,1246,1078],{"class":1064},[1058,1248,1249],{"class":1064},",",[1058,1251,1084],{"class":1064},[1058,1253,1254],{"class":1235},"value",[1058,1256,1078],{"class":1064},[1058,1258,1081],{"class":1064},[1058,1260,1084],{"class":1064},[1058,1262,1263],{"class":1087},"orders",[1058,1265,1078],{"class":1064},[1058,1267,1268],{"class":1064}," },\n",[1058,1270,1272,1274,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1304,1306,1308,1310,1312,1314],{"class":1060,"line":1271},12,[1058,1273,1219],{"class":1064},[1058,1275,1276],{"class":1222},"page_size",[1058,1278,1078],{"class":1064},[1058,1280,1081],{"class":1064},[1058,1282,1230],{"class":1064},[1058,1284,1084],{"class":1064},[1058,1286,1236],{"class":1235},[1058,1288,1078],{"class":1064},[1058,1290,1081],{"class":1064},[1058,1292,1084],{"class":1064},[1058,1294,901],{"class":1087},[1058,1296,1078],{"class":1064},[1058,1298,1249],{"class":1064},[1058,1300,1084],{"class":1064},[1058,1302,1303],{"class":1235},"field_name",[1058,1305,1078],{"class":1064},[1058,1307,1081],{"class":1064},[1058,1309,1084],{"class":1064},[1058,1311,1276],{"class":1087},[1058,1313,1078],{"class":1064},[1058,1315,1316],{"class":1064}," }\n",[1058,1318,1320],{"class":1060,"line":1319},13,[1058,1321,1322],{"class":1064},"          }\n",[1058,1324,1326],{"class":1060,"line":1325},14,[1058,1327,1328],{"class":1064},"        }\n",[1058,1330,1332],{"class":1060,"line":1331},15,[1058,1333,1334],{"class":1064},"      ]\n",[1058,1336,1338],{"class":1060,"line":1337},16,[1058,1339,1340],{"class":1064},"    }\n",[1058,1342,1344],{"class":1060,"line":1343},17,[1058,1345,1346],{"class":1064},"  ]\n",[1058,1348,1350],{"class":1060,"line":1349},18,[1058,1351,1352],{"class":1064},"}\n",[1223,1354,1355,1372],{},[1356,1357,1358],"thead",{},[1359,1360,1361,1366,1369],"tr",{},[1362,1363,1364],"th",{},[899,1365,1236],{},[1362,1367,1368],{},"Who sets it",[1362,1370,1371],{},"Use for",[1373,1374,1375,1388,1400],"tbody",{},[1359,1376,1377,1382,1385],{},[1378,1379,1380],"td",{},[899,1381,909],{},[1378,1383,1384],{},"You, at authoring time",[1378,1386,1387],{},"Table, connection, tenant column — the user must not see or change this",[1359,1389,1390,1394,1397],{},[1378,1391,1392],{},[899,1393,901],{},[1378,1395,1396],{},"The caller at invoke time",[1378,1398,1399],{},"Free inputs only (a filter, a page size)",[1359,1401,1402,1406,1409],{},[1378,1403,1404],{},[899,1405,905],{},[1378,1407,1408],{},"A previous step's output",[1378,1410,1411],{},"Chain layers",[916,1413,1417],{"className":1414,"code":1415,"language":1416,"meta":924,"style":924},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// MCP or org-member SDK\ncomposition.validate({ definition })\ncomposition.save({ name: \"list-my-orders\", definition })\n// → { composition_uuid, workflow_type: \"virtual.\u003Cuuid>@1\", version: 1 }\n","ts",[899,1418,1419,1425,1451,1483],{"__ignoreMap":924},[1058,1420,1421],{"class":1060,"line":1061},[1058,1422,1424],{"class":1423},"sHwdD","// MCP or org-member SDK\n",[1058,1426,1427,1430,1432,1436,1439,1442,1445,1448],{"class":1060,"line":1068},[1058,1428,891],{"class":1429},"sTEyZ",[1058,1431,972],{"class":1064},[1058,1433,1435],{"class":1434},"s2Zo4","validate",[1058,1437,1438],{"class":1429},"(",[1058,1440,1441],{"class":1064},"{",[1058,1443,1444],{"class":1429}," definition ",[1058,1446,1447],{"class":1064},"}",[1058,1449,1450],{"class":1429},")\n",[1058,1452,1453,1455,1457,1460,1462,1464,1467,1469,1471,1473,1475,1477,1479,1481],{"class":1060,"line":1096},[1058,1454,891],{"class":1429},[1058,1456,972],{"class":1064},[1058,1458,1459],{"class":1434},"save",[1058,1461,1438],{"class":1429},[1058,1463,1441],{"class":1064},[1058,1465,1466],{"class":1222}," name",[1058,1468,1081],{"class":1064},[1058,1470,1084],{"class":1064},[1058,1472,1088],{"class":1087},[1058,1474,1078],{"class":1064},[1058,1476,1249],{"class":1064},[1058,1478,1444],{"class":1429},[1058,1480,1447],{"class":1064},[1058,1482,1450],{"class":1429},[1058,1484,1485],{"class":1060,"line":1111},[1058,1486,1487],{"class":1423},"// → { composition_uuid, workflow_type: \"virtual.\u003Cuuid>@1\", version: 1 }\n",[885,1489,1490,1493,1494,1497,1498,1501,1502,972],{},[899,1491,1492],{},"composition.version"," appends ",[899,1495,1496],{},"@2"," on the same lineage. ",[899,1499,1500],{},"composition.activate"," re-validates and sets active. Browse ops on ",[933,1503,1506],{"href":1504,"rel":1505},"https://reference.orkestia.dev/composition/",[944],"reference — Composition domain",[885,1508,1509,1510,1513,1514,1519,1520,1523],{},"Every step you will expose must be ",[899,1511,1512],{},"end_user_eligible"," in the ",[933,1515,1518],{"href":1516,"rel":1517},"https://reference.orkestia.dev",[944],"catalog",". Expose fails with ",[899,1521,1522],{},"ineligible_steps"," otherwise.",[955,1525,1527],{"id":1526},"_2-invoke-you","2. Invoke (you)",[885,1529,1530],{},"Org member, API token, or MCP — same type name:",[916,1532,1534],{"className":1414,"code":1533,"language":1416,"meta":924,"style":924},"import { LtIntegWorkflowsClient } from \"@ltinteg/workflows-sdk\"\n\nconst client = new LtIntegWorkflowsClient({\n  baseUrl: \"https://workflow-api.orkestia.dev\",\n  token: process.env.ORKESTIA_TOKEN,\n})\n\nconst run = await client.start(\"virtual.\u003Ccomposition_uuid>@1\", {\n  page_size: 20,\n})\nconst { state_data } = await run.wait()\n",[899,1535,1536,1561,1567,1587,1603,1625,1631,1635,1668,1680,1686],{"__ignoreMap":924},[1058,1537,1538,1542,1544,1547,1550,1553,1555,1558],{"class":1060,"line":1061},[1058,1539,1541],{"class":1540},"s7zQu","import",[1058,1543,1230],{"class":1064},[1058,1545,1546],{"class":1429}," LtIntegWorkflowsClient",[1058,1548,1549],{"class":1064}," }",[1058,1551,1552],{"class":1540}," from",[1058,1554,1084],{"class":1064},[1058,1556,1557],{"class":1087},"@ltinteg/workflows-sdk",[1058,1559,1560],{"class":1064},"\"\n",[1058,1562,1563],{"class":1060,"line":1068},[1058,1564,1566],{"emptyLinePlaceholder":1565},true,"\n",[1058,1568,1569,1572,1575,1578,1581,1583,1585],{"class":1060,"line":1096},[1058,1570,1571],{"class":1074},"const",[1058,1573,1574],{"class":1429}," client ",[1058,1576,1577],{"class":1064},"=",[1058,1579,1580],{"class":1064}," new",[1058,1582,1546],{"class":1434},[1058,1584,1438],{"class":1429},[1058,1586,1065],{"class":1064},[1058,1588,1589,1592,1594,1596,1599,1601],{"class":1060,"line":1111},[1058,1590,1591],{"class":1222},"  baseUrl",[1058,1593,1081],{"class":1064},[1058,1595,1084],{"class":1064},[1058,1597,1598],{"class":1087},"https://workflow-api.orkestia.dev",[1058,1600,1078],{"class":1064},[1058,1602,1093],{"class":1064},[1058,1604,1605,1608,1610,1613,1615,1618,1620,1623],{"class":1060,"line":1117},[1058,1606,1607],{"class":1222},"  token",[1058,1609,1081],{"class":1064},[1058,1611,1612],{"class":1429}," process",[1058,1614,972],{"class":1064},[1058,1616,1617],{"class":1429},"env",[1058,1619,972],{"class":1064},[1058,1621,1622],{"class":1429},"ORKESTIA_TOKEN",[1058,1624,1093],{"class":1064},[1058,1626,1627,1629],{"class":1060,"line":1139},[1058,1628,1447],{"class":1064},[1058,1630,1450],{"class":1429},[1058,1632,1633],{"class":1060,"line":1153},[1058,1634,1566],{"emptyLinePlaceholder":1565},[1058,1636,1637,1639,1642,1644,1647,1650,1652,1655,1657,1659,1662,1664,1666],{"class":1060,"line":1159},[1058,1638,1571],{"class":1074},[1058,1640,1641],{"class":1429}," run ",[1058,1643,1577],{"class":1064},[1058,1645,1646],{"class":1540}," await",[1058,1648,1649],{"class":1429}," client",[1058,1651,972],{"class":1064},[1058,1653,1654],{"class":1434},"start",[1058,1656,1438],{"class":1429},[1058,1658,1078],{"class":1064},[1058,1660,1661],{"class":1087},"virtual.\u003Ccomposition_uuid>@1",[1058,1663,1078],{"class":1064},[1058,1665,1249],{"class":1064},[1058,1667,1213],{"class":1064},[1058,1669,1670,1673,1675,1678],{"class":1060,"line":1181},[1058,1671,1672],{"class":1222},"  page_size",[1058,1674,1081],{"class":1064},[1058,1676,1677],{"class":1165}," 20",[1058,1679,1093],{"class":1064},[1058,1681,1682,1684],{"class":1060,"line":1202},[1058,1683,1447],{"class":1064},[1058,1685,1450],{"class":1429},[1058,1687,1688,1690,1692,1695,1697,1700,1702,1705,1707,1710],{"class":1060,"line":1216},[1058,1689,1571],{"class":1074},[1058,1691,1230],{"class":1064},[1058,1693,1694],{"class":1429}," state_data ",[1058,1696,1447],{"class":1064},[1058,1698,1699],{"class":1064}," =",[1058,1701,1646],{"class":1540},[1058,1703,1704],{"class":1429}," run",[1058,1706,972],{"class":1064},[1058,1708,1709],{"class":1434},"wait",[1058,1711,1712],{"class":1429},"()\n",[885,1714,1715,1716,1719,1720,1723,1724,972],{},"REST: ",[899,1717,1718],{},"POST https://workflow-api.orkestia.dev/api/workflows/start"," with ",[899,1721,1722],{},"Authorization: Bearer …"," and ",[899,1725,1726],{},"{ \"workflow_type\": \"virtual.\u003Cuuid>@1\", \"initial_data\": { … } }",[885,1728,1729,1730,1733,1734,972],{},"MCP: ",[899,1731,1732],{},"start_workflow(\"virtual.\u003Cuuid>@1\", { … })"," after ",[899,1735,1736],{},"whoami()",[955,1738,1740],{"id":1739},"_3-share-with-an-app-user","3. Share with an app user",[885,1742,1743,1744,1746,1747,1751,1752,1081],{},"Provision the app first (",[933,1745,425],{"href":426}," / ",[933,1748,1750],{"href":1749},"/app-enablement#paste-this-into-your-agent","agent prompt","). Then expose ",[889,1753,1754],{},"that version",[916,1756,1758],{"className":1414,"code":1757,"language":1416,"meta":924,"style":924},"identity.app.expose-virtual-workflow({\n  identity_app_uuid: \"…\",   // from identity.app.provision\n  composition_uuid: \"…\",    // from composition.save\n  version: 1,\n})\n",[899,1759,1760,1790,1809,1827,1839],{"__ignoreMap":924},[1058,1761,1762,1765,1767,1770,1772,1775,1778,1781,1783,1786,1788],{"class":1060,"line":1061},[1058,1763,1764],{"class":1429},"identity",[1058,1766,972],{"class":1064},[1058,1768,1769],{"class":1429},"app",[1058,1771,972],{"class":1064},[1058,1773,1774],{"class":1429},"expose",[1058,1776,1777],{"class":1064},"-",[1058,1779,1780],{"class":1429},"virtual",[1058,1782,1777],{"class":1064},[1058,1784,1785],{"class":1434},"workflow",[1058,1787,1438],{"class":1429},[1058,1789,1065],{"class":1064},[1058,1791,1792,1795,1797,1799,1802,1804,1806],{"class":1060,"line":1068},[1058,1793,1794],{"class":1222},"  identity_app_uuid",[1058,1796,1081],{"class":1064},[1058,1798,1084],{"class":1064},[1058,1800,1801],{"class":1087},"…",[1058,1803,1078],{"class":1064},[1058,1805,1249],{"class":1064},[1058,1807,1808],{"class":1423},"   // from identity.app.provision\n",[1058,1810,1811,1814,1816,1818,1820,1822,1824],{"class":1060,"line":1096},[1058,1812,1813],{"class":1222},"  composition_uuid",[1058,1815,1081],{"class":1064},[1058,1817,1084],{"class":1064},[1058,1819,1801],{"class":1087},[1058,1821,1078],{"class":1064},[1058,1823,1249],{"class":1064},[1058,1825,1826],{"class":1423},"    // from composition.save\n",[1058,1828,1829,1832,1834,1837],{"class":1060,"line":1111},[1058,1830,1831],{"class":1222},"  version",[1058,1833,1081],{"class":1064},[1058,1835,1836],{"class":1165}," 1",[1058,1838,1093],{"class":1064},[1058,1840,1841,1843],{"class":1060,"line":1117},[1058,1842,1447],{"class":1064},[1058,1844,1450],{"class":1429},[885,1846,1847,1848,1851,1852,1855],{},"Revoke with ",[899,1849,1850],{},"identity.app.unexpose-virtual-workflow"," (same ids; ",[899,1853,1854],{},"version"," optional).",[885,1857,1858,1859,1861,1862,1864],{},"An end-user token can start ",[889,1860,930],{}," virtuals you exposed — never ",[899,1863,1195],{}," by catalog name.",[955,1866,1868],{"id":1867},"_4-enable-the-user-to-use-it","4. Enable the user to use it",[885,1870,1871,1872,1875,1876,1878],{},"In ",[894,1873,1874],{},"their"," browser: Sign in, then start the virtual with ",[889,1877,1874],{}," JWT. Never put an org-member token in the page.",[916,1880,1882],{"className":1414,"code":1881,"language":1416,"meta":924,"style":924},"import { createOrkestiaAuth } from \"@orkestia/auth\"\nimport { LtIntegWorkflowsClient } from \"@ltinteg/workflows-sdk\"\n\nconst auth = createOrkestiaAuth({ clientKey: \"orkestia_…\" })\nconst session = auth.getSession()\n\nconst client = new LtIntegWorkflowsClient({\n  baseUrl: \"https://workflow-api.orkestia.dev\",\n  token: session.token,\n})\n\nconst run = await client.start(\"virtual.\u003Ccomposition_uuid>@1\", {\n  page_size: 20, // free inputs only\n})\n",[899,1883,1884,1903,1921,1925,1956,1975,1979,1995,2009,2025,2031,2035,2063,2076],{"__ignoreMap":924},[1058,1885,1886,1888,1890,1893,1895,1897,1899,1901],{"class":1060,"line":1061},[1058,1887,1541],{"class":1540},[1058,1889,1230],{"class":1064},[1058,1891,1892],{"class":1429}," createOrkestiaAuth",[1058,1894,1549],{"class":1064},[1058,1896,1552],{"class":1540},[1058,1898,1084],{"class":1064},[1058,1900,1019],{"class":1087},[1058,1902,1560],{"class":1064},[1058,1904,1905,1907,1909,1911,1913,1915,1917,1919],{"class":1060,"line":1068},[1058,1906,1541],{"class":1540},[1058,1908,1230],{"class":1064},[1058,1910,1546],{"class":1429},[1058,1912,1549],{"class":1064},[1058,1914,1552],{"class":1540},[1058,1916,1084],{"class":1064},[1058,1918,1557],{"class":1087},[1058,1920,1560],{"class":1064},[1058,1922,1923],{"class":1060,"line":1096},[1058,1924,1566],{"emptyLinePlaceholder":1565},[1058,1926,1927,1929,1932,1934,1936,1938,1940,1943,1945,1947,1950,1952,1954],{"class":1060,"line":1111},[1058,1928,1571],{"class":1074},[1058,1930,1931],{"class":1429}," auth ",[1058,1933,1577],{"class":1064},[1058,1935,1892],{"class":1434},[1058,1937,1438],{"class":1429},[1058,1939,1441],{"class":1064},[1058,1941,1942],{"class":1222}," clientKey",[1058,1944,1081],{"class":1064},[1058,1946,1084],{"class":1064},[1058,1948,1949],{"class":1087},"orkestia_…",[1058,1951,1078],{"class":1064},[1058,1953,1549],{"class":1064},[1058,1955,1450],{"class":1429},[1058,1957,1958,1960,1963,1965,1968,1970,1973],{"class":1060,"line":1117},[1058,1959,1571],{"class":1074},[1058,1961,1962],{"class":1429}," session ",[1058,1964,1577],{"class":1064},[1058,1966,1967],{"class":1429}," auth",[1058,1969,972],{"class":1064},[1058,1971,1972],{"class":1434},"getSession",[1058,1974,1712],{"class":1429},[1058,1976,1977],{"class":1060,"line":1139},[1058,1978,1566],{"emptyLinePlaceholder":1565},[1058,1980,1981,1983,1985,1987,1989,1991,1993],{"class":1060,"line":1153},[1058,1982,1571],{"class":1074},[1058,1984,1574],{"class":1429},[1058,1986,1577],{"class":1064},[1058,1988,1580],{"class":1064},[1058,1990,1546],{"class":1434},[1058,1992,1438],{"class":1429},[1058,1994,1065],{"class":1064},[1058,1996,1997,1999,2001,2003,2005,2007],{"class":1060,"line":1159},[1058,1998,1591],{"class":1222},[1058,2000,1081],{"class":1064},[1058,2002,1084],{"class":1064},[1058,2004,1598],{"class":1087},[1058,2006,1078],{"class":1064},[1058,2008,1093],{"class":1064},[1058,2010,2011,2013,2015,2018,2020,2023],{"class":1060,"line":1181},[1058,2012,1607],{"class":1222},[1058,2014,1081],{"class":1064},[1058,2016,2017],{"class":1429}," session",[1058,2019,972],{"class":1064},[1058,2021,2022],{"class":1429},"token",[1058,2024,1093],{"class":1064},[1058,2026,2027,2029],{"class":1060,"line":1202},[1058,2028,1447],{"class":1064},[1058,2030,1450],{"class":1429},[1058,2032,2033],{"class":1060,"line":1216},[1058,2034,1566],{"emptyLinePlaceholder":1565},[1058,2036,2037,2039,2041,2043,2045,2047,2049,2051,2053,2055,2057,2059,2061],{"class":1060,"line":1271},[1058,2038,1571],{"class":1074},[1058,2040,1641],{"class":1429},[1058,2042,1577],{"class":1064},[1058,2044,1646],{"class":1540},[1058,2046,1649],{"class":1429},[1058,2048,972],{"class":1064},[1058,2050,1654],{"class":1434},[1058,2052,1438],{"class":1429},[1058,2054,1078],{"class":1064},[1058,2056,1661],{"class":1087},[1058,2058,1078],{"class":1064},[1058,2060,1249],{"class":1064},[1058,2062,1213],{"class":1064},[1058,2064,2065,2067,2069,2071,2073],{"class":1060,"line":1319},[1058,2066,1672],{"class":1222},[1058,2068,1081],{"class":1064},[1058,2070,1677],{"class":1165},[1058,2072,1249],{"class":1064},[1058,2074,2075],{"class":1423}," // free inputs only\n",[1058,2077,2078,2080],{"class":1060,"line":1325},[1058,2079,1447],{"class":1064},[1058,2081,1450],{"class":1429},[885,2083,2084,2085,2088,2089,2091],{},"Orkestia injects the end-user principal ",[889,2086,2087],{},"immutably",". Ownership / workspace on ",[933,2090,92],{"href":512}," is forced from that identity.",[916,2093,2096],{"className":2094,"code":2095,"language":921},[919],"App user  →  @orkestia/auth  →  JWT\n        →  start virtual.\u003Cuuid>@N\n        →  only their rows\n",[899,2097,2095],{"__ignoreMap":924},[955,2099,2101],{"id":2100},"paste-this-into-your-agent","Paste this into your agent",[885,2103,2104,2105,1081],{},"Copy into Cursor, Claude, or any client connected to ",[899,2106,2107],{},"https://mcp.orkestia.dev/mcp",[916,2109,2112],{"className":2110,"code":2111,"language":921,"meta":924},[919],"Enable this app's users to run an Orkestia composition.\n\nYou are connected to the Orkestia MCP (https://mcp.orkestia.dev/mcp).\nIf you are not, stop: https://docs.orkestia.dev/reference/mcp-integration\n\n1. Call whoami() first. Do not ask me for organization_uuid.\n2. If I do not already have an identity app, follow\n   https://docs.orkestia.dev/app-enablement#paste-this-into-your-agent\n3. Ask me what the composition should do, and the free inputs vs static secrets.\n4. Author a definition using input_mapping objects (not input_mappings arrays):\n   { \"\u003Cparam>\": { \"source\": \"input\"|\"step\"|\"static\", \"field_name\"?, \"step\"?, \"value\"? } }\n   Every step I will expose must be end_user_eligible.\n5. start_workflow(\"composition.validate\", { definition }). Fix errors.\n6. start_workflow(\"composition.save\", { name, definition }).\n   Take composition_uuid, workflow_type, version from the terminal output.\n7. Invoke it once as me: start_workflow(\"virtual.\u003Cuuid>@\u003Cversion>\", free inputs).\n8. Share with app users:\n   start_workflow(\"identity.app.expose-virtual-workflow\", {\n     identity_app_uuid, composition_uuid, version\n   })\n9. Wire the frontend: createOrkestiaAuth({ clientKey }) + start the virtual\n   with session.token. Never put an org token in the browser.\n10. Tell me composition_uuid, version, workflow_type, and the files you changed.\n",[899,2113,2111],{"__ignoreMap":924},[2115,2116,2117],"tip",{},[885,2118,2119,2121],{},[899,2120,909],{}," mappings are how you share a capability without sharing a credential. The user never sees the connection or the table name.",[955,2123,2125],{"id":2124},"next","Next",[2127,2128,2129,2138,2144,2150],"card-group",{},[2130,2131,2132],"card",{"icon":417,"title":425,"to":426},[885,2133,2134,2135,2137],{},"Hosted login + ",[899,2136,1019],{}," so the user has a JWT.",[2130,2139,2141],{"icon":2140,"title":429,"to":430},"i-lucide-user-check",[885,2142,2143],{},"Why only exposed virtuals are startable.",[2130,2145,2147],{"icon":95,"title":2146,"to":512},"Expose App Data",[885,2148,2149],{},"Same pattern for declared tables.",[2130,2151,2153],{"icon":51,"title":2152,"to":942},"Reference — compositions",[885,2154,2155],{},"Definition format, composition.* ops, MCP invoke.",[2157,2158,2159],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .su27w, html code.shiki .su27w{--shiki-light:#916B53;--shiki-default:#916B53;--shiki-dark:#916B53}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}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":924,"searchDepth":1061,"depth":1068,"links":2161},[2162,2163,2164,2165,2166,2167,2168],{"id":957,"depth":1068,"text":958},{"id":1038,"depth":1068,"text":1039},{"id":1526,"depth":1068,"text":1527},{"id":1739,"depth":1068,"text":1740},{"id":1867,"depth":1068,"text":1868},{"id":2100,"depth":1068,"text":2101},{"id":2124,"depth":1068,"text":2125},"Save a virtual workflow, invoke it, expose it to your app's users, and let them run it with their Sign in with Orkestia JWT.","md",null,{},{"icon":131},{"title":433,"description":2169},"xKUdh3kbPZ53fiqIo5O3cZ5mlJboArhXcoTUgee-bFE",[2177,2179],{"title":429,"path":430,"stem":431,"description":2178,"icon":95,"children":-1},"Let a signed-in user run business logic through Orkestia — where the platform enforces that they only ever touch their own data.",{"title":437,"path":438,"stem":439,"description":2180,"icon":80,"children":-1},"Observability control plane — structured logs, SHA-256 error groups, traces/spans, metrics, Pulse, and a query/MCP API",1790354052365]