[{"data":1,"prerenderedAt":647},["ShallowReactive",2],{"navigation":3,"\u002Freference\u002Fserver-configuration":194,"\u002Freference\u002Fserver-configuration-surround":642},[4,18,31,64,81,102,111,132,149],{"title":5,"path":6,"stem":7,"children":8,"page":17},"Getting started","\u002Fgetting-started","1.getting-started",[9,13],{"title":10,"path":11,"stem":12},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":14,"path":15,"stem":16},"Run your first workflow","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart",false,{"title":19,"path":20,"stem":21,"children":22,"page":17},"Core concepts","\u002Fconcepts","2.concepts",[23,27],{"title":24,"path":25,"stem":26},"The platform model","\u002Fconcepts\u002Fplatform","2.concepts\u002F1.platform",{"title":28,"path":29,"stem":30},"Architecture and boundaries","\u002Fconcepts\u002Farchitecture","2.concepts\u002F2.architecture",{"title":32,"path":33,"stem":34,"children":35,"page":17},"Installation","\u002Finstallation","3.installation",[36,40,44,48,52,56,60],{"title":37,"path":38,"stem":39},"Overview and requirements","\u002Finstallation\u002Foverview","3.installation\u002F1.overview",{"title":41,"path":42,"stem":43},"Local evaluation","\u002Finstallation\u002Flocal-evaluation","3.installation\u002F2.local-evaluation",{"title":45,"path":46,"stem":47},"Install the server","\u002Finstallation\u002Fserver","3.installation\u002F3.server",{"title":49,"path":50,"stem":51},"Install a runner","\u002Finstallation\u002Frunner","3.installation\u002F4.runner",{"title":53,"path":54,"stem":55},"Verify the installation","\u002Finstallation\u002Fverification","3.installation\u002F5.verification",{"title":57,"path":58,"stem":59},"Upgrade the platform","\u002Finstallation\u002Fupgrades","3.installation\u002F6.upgrades",{"title":61,"path":62,"stem":63},"Guided installer","\u002Finstallation\u002Finstaller","3.installation\u002F7.installer",{"title":65,"path":66,"stem":67,"children":68,"page":17},"Build workflows","\u002Fworkflows","4.workflows",[69,73,77],{"title":70,"path":71,"stem":72},"Build a Definition","\u002Fworkflows\u002Fdefinitions","4.workflows\u002F0.definitions",{"title":74,"path":75,"stem":76},"Deploy and run workflows","\u002Fworkflows\u002Fruns","4.workflows\u002F1.runs",{"title":78,"path":79,"stem":80},"Inputs, context, and secrets","\u002Fworkflows\u002Finputs-and-secrets","4.workflows\u002F2.inputs-and-secrets",{"title":82,"path":83,"stem":84,"children":85,"page":17},"Run and recover","\u002Foperations","5.operations",[86,90,94,98],{"title":87,"path":88,"stem":89},"Monitor Runs","\u002Foperations\u002Fmonitoring","5.operations\u002F1.monitoring",{"title":91,"path":92,"stem":93},"Approve prepared steps","\u002Foperations\u002Fapprovals","5.operations\u002F2.approvals",{"title":95,"path":96,"stem":97},"Recover or cancel execution","\u002Foperations\u002Frecovery","5.operations\u002F3.recovery",{"title":99,"path":100,"stem":101},"Troubleshooting","\u002Foperations\u002Ftroubleshooting","5.operations\u002F4.troubleshooting",{"title":103,"path":104,"stem":105,"children":106,"page":17},"Action catalog","\u002Fcatalog","6.catalog",[107],{"title":108,"path":109,"stem":110},"Find and use Actions","\u002Fcatalog\u002Foverview","6.catalog\u002F1.overview",{"title":112,"path":113,"stem":114,"children":115,"page":17},"Administration","\u002Fadministration","7.administration",[116,120,124,128],{"title":117,"path":118,"stem":119},"Registries and Environments","\u002Fadministration\u002Fenvironments","7.administration\u002F2.environments",{"title":121,"path":122,"stem":123},"Manage runners","\u002Fadministration\u002Frunners","7.administration\u002F3.runners",{"title":125,"path":126,"stem":127},"Access and approval policies","\u002Fadministration\u002Faccess","7.administration\u002F4.access",{"title":129,"path":130,"stem":131},"Backups and upgrades","\u002Fadministration\u002Fmaintenance","7.administration\u002F5.maintenance",{"title":133,"path":134,"stem":135,"children":136,"page":17},"Develop Actions","\u002Factions","8.actions",[137,141,145],{"title":138,"path":139,"stem":140},"Build your first Action","\u002Factions\u002Fquickstart","8.actions\u002F1.quickstart",{"title":142,"path":143,"stem":144},"Local development","\u002Factions\u002Flocal-development","8.actions\u002F2.local-development",{"title":146,"path":147,"stem":148},"Publish an Action","\u002Factions\u002Fpublishing","8.actions\u002F3.publishing",{"title":150,"path":151,"stem":152,"children":153,"page":17},"Reference","\u002Freference","9.reference",[154,158,162,166,170,174,178,182,186,190],{"title":155,"path":156,"stem":157},"Operator CLI","\u002Freference\u002Foperator-cli","9.reference\u002F1.operator-cli",{"title":159,"path":160,"stem":161},"Installer CLI","\u002Freference\u002Finstaller-cli","9.reference\u002F10.installer-cli",{"title":163,"path":164,"stem":165},"Definition syntax","\u002Freference\u002Fdefinition","9.reference\u002F2.definition",{"title":167,"path":168,"stem":169},"CLI configuration","\u002Freference\u002Fconfiguration","9.reference\u002F3.configuration",{"title":171,"path":172,"stem":173},"API integration","\u002Freference\u002Fapi","9.reference\u002F4.api",{"title":175,"path":176,"stem":177},"Action CLI","\u002Freference\u002Faction-cli","9.reference\u002F5.action-cli",{"title":179,"path":180,"stem":181},"Action SDK","\u002Freference\u002Fsdk","9.reference\u002F6.sdk",{"title":183,"path":184,"stem":185},"Contracts and compatibility","\u002Freference\u002Fcontracts","9.reference\u002F7.contracts",{"title":187,"path":188,"stem":189},"Server configuration","\u002Freference\u002Fserver-configuration","9.reference\u002F8.server-configuration",{"title":191,"path":192,"stem":193},"Runner configuration","\u002Freference\u002Frunner-configuration","9.reference\u002F9.runner-configuration",{"id":195,"title":187,"body":196,"description":636,"extension":637,"meta":638,"navigation":639,"path":188,"seo":640,"stem":189,"__hash__":641},"docs\u002F9.reference\u002F8.server-configuration.md",{"type":197,"value":198,"toc":629},"minimark",[199,207,212,273,283,287,394,397,409,412,415,419,476,482,486,553,560,567,571,589,592,595,625],[200,201,202,203,206],"p",{},"For a complete deployment walkthrough, see ",[204,205,45],"a",{"href":46},". The server is configured through command-line flags and the two TLS environment variables below; it does not load a server YAML configuration file.",[208,209,211],"h2",{"id":210},"commands","Commands",[213,214,215,228],"table",{},[216,217,218],"thead",{},[219,220,221,225],"tr",{},[222,223,224],"th",{},"Command",[222,226,227],{},"Purpose",[229,230,231,243,253,263],"tbody",{},[219,232,233,240],{},[234,235,236],"td",{},[237,238,239],"code",{},"pyplines-server version",[234,241,242],{},"Print build version and commit information",[219,244,245,250],{},[234,246,247],{},[237,248,249],{},"pyplines-server bootstrap",[234,251,252],{},"Create the first administrator in a new data directory",[219,254,255,260],{},[234,256,257],{},[237,258,259],{},"pyplines-server migrate",[234,261,262],{},"Open the data directory and apply database migrations, then exit",[219,264,265,270],{},[234,266,267],{},[237,268,269],{},"pyplines-server start",[234,271,272],{},"Start embedded NATS, the coordinator, and the HTTPS API",[200,274,275,278,279,282],{},[237,276,277],{},"--data PATH"," is a persistent flag available to the commands. Its default is ",[237,280,281],{},".\u002F.pyplines-server",", relative to the process working directory. Use an absolute persistent path for a service.",[208,284,286],{"id":285},"start-flags","Start flags",[213,288,289,302],{},[216,290,291],{},[219,292,293,296,299],{},[222,294,295],{},"Flag",[222,297,298],{},"Default",[222,300,301],{},"Meaning",[229,303,304,318,333,349,364,379],{},[219,305,306,311,315],{},[234,307,308],{},[237,309,310],{},"--data",[234,312,313],{},[237,314,281],{},[234,316,317],{},"Private state directory",[219,319,320,325,330],{},[234,321,322],{},[237,323,324],{},"--listen",[234,326,327],{},[237,328,329],{},":8080",[234,331,332],{},"HTTPS bind address; the default listens on all interfaces",[219,334,335,340,346],{},[234,336,337],{},[237,338,339],{},"--tls-cert",[234,341,342,345],{},[237,343,344],{},"PYPLINES_TLS_CERT",", otherwise empty",[234,347,348],{},"PEM server certificate\u002Fchain",[219,350,351,356,361],{},[234,352,353],{},[237,354,355],{},"--tls-key",[234,357,358,345],{},[237,359,360],{},"PYPLINES_TLS_KEY",[234,362,363],{},"PEM private key",[219,365,366,371,376],{},[234,367,368],{},[237,369,370],{},"--nats-listen",[234,372,373],{},[237,374,375],{},":4222",[234,377,378],{},"Embedded NATS TLS bind address",[219,380,381,386,391],{},[234,382,383],{},[237,384,385],{},"--nats-url",[234,387,388],{},[237,389,390],{},"tls:\u002F\u002Flocalhost:4222",[234,392,393],{},"NATS URL advertised to runners",[200,395,396],{},"Explicit TLS flags override the corresponding environment variables. TLS certificate and key are required for startup even though the flag parser supplies empty defaults. There is no plain-HTTP server mode.",[200,398,399,401,402,404,405,408],{},[237,400,370],{}," chooses where the server listens; ",[237,403,385],{}," tells runners where to connect. Configure the latter for the actual runner network. The default ",[237,406,407],{},"localhost"," is unsuitable for runners on another host or in a separate container.",[200,410,411],{},"HTTPS and NATS use the same certificate and key. Their client-visible names must be covered by that certificate. A reverse proxy must preserve API behavior; runners require an HTTPS origin without a path prefix and reject registration redirects. NATS remains a separate TLS connection.",[200,413,414],{},"The current server embeds its broker and database. These flags do not support replacing NATS with an external broker, selecting PostgreSQL, or starting multiple server replicas against one data directory.",[208,416,418],{"id":417},"bootstrap-flags","Bootstrap flags",[213,420,421,431],{},[216,422,423],{},[219,424,425,427,429],{},[222,426,295],{},[222,428,298],{},[222,430,301],{},[229,432,433,448,461],{},[219,434,435,440,445],{},[234,436,437],{},[237,438,439],{},"--username",[234,441,442],{},[237,443,444],{},"admin",[234,446,447],{},"Initial administrator username",[219,449,450,455,458],{},[234,451,452],{},[237,453,454],{},"--password-file",[234,456,457],{},"Required",[234,459,460],{},"File containing the initial password, at least 12 characters",[219,462,463,468,473],{},[234,464,465],{},[237,466,467],{},"--if-needed",[234,469,470],{},[237,471,472],{},"false",[234,474,475],{},"Create the administrator only if no users exist",[200,477,478,479,481],{},"The command removes trailing CR\u002FLF from the password file. ",[237,480,467],{}," does not reset an existing account or password. The file must still exist and be readable when invoking bootstrap. Run bootstrap with the same data path and filesystem identity as the service, while the service is stopped.",[208,483,485],{"id":484},"persistent-state","Persistent state",[213,487,488,500],{},[216,489,490],{},[219,491,492,497],{},[222,493,494,495],{},"Path inside ",[237,496,310],{},[222,498,499],{},"Contents",[229,501,502,513,523,533,543],{},[219,503,504,510],{},[234,505,506,509],{},[237,507,508],{},"pyplines.db"," and SQLite sidecar files",[234,511,512],{},"Platform records, revisions, access, and execution state",[219,514,515,520],{},[234,516,517],{},[237,518,519],{},"encryption.key",[234,521,522],{},"Key needed to decrypt protected records",[219,524,525,530],{},[234,526,527],{},[237,528,529],{},"logs\u002F",[234,531,532],{},"Retained filesystem log data",[219,534,535,540],{},[234,536,537],{},[237,538,539],{},"nats\u002F",[234,541,542],{},"Embedded JetStream storage",[219,544,545,550],{},[234,546,547],{},[237,548,549],{},"pyplines.db.lock",[234,551,552],{},"Exclusive process lock for the database",[200,554,555,556,559],{},"Run only one server against this directory. The service user needs read\u002Fwrite access to state and read access to TLS files. Back up the complete stopped-service directory with its ownership and permissions; see ",[204,557,558],{"href":130},"maintenance",".",[200,561,562,563,566],{},"The server does not need access to a Docker socket. It does need registry network access to inspect Actions at deployment\u002Fpreparation time. Registry configuration and read credentials are managed through the ",[204,564,565],{"href":118},"operator API\u002FCLI",", separately from these startup flags.",[208,568,570],{"id":569},"health-and-shutdown","Health and shutdown",[200,572,573,576,577,580,581,584,585,588],{},[237,574,575],{},"GET \u002Fhealth"," returns ",[237,578,579],{},"status"," and ",[237,582,583],{},"version"," when the HTTP handler can reach the database; it returns HTTP 503 when the database check fails. It is not a check of runner admission, registry connectivity, or Action readiness. Use ",[204,586,587],{"href":54},"installation verification"," for those.",[200,590,591],{},"The process handles SIGTERM and SIGINT and allows up to ten seconds for HTTP shutdown. Stop operational work and settle runner executions before stopping the server. Certificate files are loaded at startup; apply replacements through a controlled restart rather than assuming automatic reload.",[200,593,594],{},"For the exact flags of an installed binary:",[596,597,603],"pre",{"className":598,"code":599,"filename":600,"language":601,"meta":602,"style":602},"language-sh shiki shiki-themes pyplines-light pyplines-light pyplines-dark","pyplines-server --help\npyplines-server start --help\npyplines-server bootstrap --help\n","Terminal","sh","",[237,604,605,613,619],{"__ignoreMap":602},[606,607,610],"span",{"class":608,"line":609},"line",1,[606,611,612],{},"pyplines-server --help\n",[606,614,616],{"class":608,"line":615},2,[606,617,618],{},"pyplines-server start --help\n",[606,620,622],{"class":608,"line":621},3,[606,623,624],{},"pyplines-server bootstrap --help\n",[626,627,628],"style",{},"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":602,"searchDepth":615,"depth":615,"links":630},[631,632,633,634,635],{"id":210,"depth":615,"text":211},{"id":285,"depth":615,"text":286},{"id":417,"depth":615,"text":418},{"id":484,"depth":615,"text":485},{"id":569,"depth":615,"text":570},"Commands, flags, TLS, storage, and lifecycle settings for pyplines-server.","md",{},true,{"title":187,"description":636},"WGwIgsj2x7HPAoxIVW7-RJ-xX_A3S6MM_QvIbWBBrkY",[643,645],{"title":183,"path":184,"stem":185,"description":644,"children":-1},"Discover, pin, and validate against the machine-readable Pyplines interfaces.",{"title":191,"path":192,"stem":193,"description":646,"children":-1},"Enrollment, persistent state, Docker, networks, and lifecycle settings for pyplines-runner.",1792213698039]