Collections of solid, real-world examples you can copy, adapt, and use to see how ota removes hidden setup, repeated explanations, and brittle workflow glue.
If you are introducing ota to a team, start with the adoption flows first. They show how ota earns trust before you move into CI, execution boundaries, or adapter patterns.
Use these as starting points when you want:
- a repo contract you can adapt quickly
- a first-week adoption flow for an existing repo
- a workspace contract for multi-repo setup
- a CI or release pattern built around
ota - an
executionboundary when host drift or remote execution is the problem - an
extensionsboundary when the repo needs custom check, export, or backend adapters
templates/- starter contracts you can copy into a new repoci/- provider-specific CI patternsexecution/- container and remote execution patternsexecution/local-topology/- task target-binding patterns for helper apps and probesexecution/os-aware/- OS-specific launcher examplesextensions/- check, export, and backend adapter patternsworkspace/- multi-repo workspace patternsworkspace/adoption-flow/- workspace onboarding and first-week adoption patternreference/- canonical, production-adjacent repo examples
- First contract:
templates/node-serviceortemplates/python-service - Existing messy repo:
reference/adoption-flowThis is the flagship adoption starter. It now includes a real Java/Maven repo shape, a local service example, a task-prerequisite example withrequires_services, docs, and release-script companions so users can copy more than justota.yaml. - Container app URL projection:
execution/container/node-serviceUse this when one canonical app task should support container and native execution modes, bind to fixed internal ports (3000app +9090metrics), let ota pick free host ports, injectOTA_PUBLIC_URLand listener-specific env values before startup, and print the same reachable primary URL for users. - Fixed host URL + one-run override:
reference/adoption-flowUse this when the task keeps a fixed projected host port in contract (8080) but operators sometimes need a predictable one-run public override likeota run dev:api --host-port 4000without changing the app’s internal bind. - Internal task plumbing boundary: mark setup-only graph nodes with
internal: trueUse this when tasks likesetupshould still run throughdepends_on/hooks but should stay out of default operator discovery (ota tasks). Useota tasks --allto inspect the full graph including internal nodes. - Windows-first repo adoption:
reference/windows-adoption-flowThis is the Windows-oriented flagship starter. It shows how ota keeps.NET, PowerShell release flow, and cross-platform task variants explicit without hiding the repo behind shell glue. - Workspace adoption flow:
workspace/adoption-flow - CI and release flow:
ci - Container or remote execution:
execution - Remote execution context only:
execution/remote/templateUse this when one task should simply run off-host and you do not need one intentional shared remote backend boundary. - Minimal shared remote backend boundary:
execution/remote/shared-remote-backend-minimalUse this when two long-running remote tasks should intentionally reuse one ota-managed remote backend boundary and you want the smallest copyable example before adding remote target activation. - Shared remote backend plus remote producer activation:
execution/remote/shared-remote-backend-activationUse this when a helper task should target a repo-managed remote producer through one shared backend and ask ota to make that producer ready first. - Local helper app or probe targeting a repo-managed service:
execution/local-topology/task-target-bindingUse this when a helper workload like a sandbox, SDK harness, or smoke probe should target one repo-managed app by service identity, keep an open override when needed, and stop hardcodinglocalhostorhost.docker.internalas the primary contract truth. - Minimal shared local backend boundary:
execution/local-topology/shared-local-backend-minimalUse this when two long-running container tasks should intentionally reuse one ota-managed backend boundary and you want the smallest copyable example before adding target binding, fulfillment, or policy-backed backend environment. - Minimal native shared local backend boundary:
execution/local-topology/shared-local-backend-native-minimalUse this when two long-running native tasks should intentionally reuse one ota-managed host backend boundary without adding container image or policy-backed backend environment semantics. - Co-located long-running helper app plus producer in one shared container boundary:
execution/local-topology/shared-local-backendUse this when both workloads are intentional long-running container tasks and ota should treat them as one shared local backend soaddress_view: topologyresolves to the producer's in-boundary address without host bridge hacks. - Shared local backend plus backend preparation on the actual run path:
execution/local-topology/shared-local-backend-fulfillmentUse this when one shared backend shape should stay explicit but ota also needs to prepare the effective runtime/tool union before any bound task or dependency executes. - Shared local backend plus policy-governed backend image resolution:
execution/local-topology/shared-local-backend-environmentUse this when the repo should declare backend image intent and let policy resolve the approved effective image for the shared backend instead of hardcoding the final image string in every contract. - OS-specific launchers or platform branching:
execution/os-aware - Custom adapters and backend providers:
extensions - Multi-repo bootstrap:
workspace/monorepo - Serious repo reference shape:
reference/canonical-team-repoorreference/swift-service
- Starter contract: minimal copyable
ota.yamlwith a short README - Flagship adoption starter: contract plus repo signals, docs, and companion files that show obvious
doctor -> explain -> detect -> up -> agentsvalue - Windows-first flagship starter: a reference example that keeps
.NET, PowerShell, and cross-platform variants explicit - Canonical advanced reference: production-adjacent repo shape that teaches a full operating model
- Workspace reference: multi-repo bootstrap and adoption ordering.
- Pick the folder that matches the problem you are solving.
- Read that folder's
README.mdfirst to understand why the pattern exists. - Open its
ota.yamlfor the exact contract and task notes. - Copy only the files you need.
- Run
ota validate .orota workspace validate .before you ship the pattern.
Run ota run validate before opening a pull request.
Run ota run dogfood when Ota UX changes and you want to re-check the flagship examples against the current local CLI behavior.
- the repo shape and use-case for each example
- when to use the example
- what problem the example solves
- where to open the example's
ota.yamlfor task-level instructions
- Read
CONTRIBUTING.mdbefore opening a pull request. - Use the pull request and issue templates under
.github/. - Follow
CODE_OF_CONDUCT.md. - See
SECURITY.mdfor security disclosures. - See
SUPPORT.mdfor help and response expectations.