Platform

Platform overviewArchitectureWorkflow orchestrationGitOps configurationGovernance and AAAAI and MCPKnowledge and contextRuntime and executionEvidence and monitoring

Use cases

All use casesProduction incidentRelease preparationHotfix to productionSecurity scan triage
Why NopsAIIntegrationsSecurity

Resources

All resourcesAI agent governanceMCP governanceMCP securitySelf-hosted platforms
PricingGitHub

Company

How a run worksAboutContactBook a demo

How runs start

The six entry points into a run, and what each one controls about ownership and scope.

ConceptAutomation authorOperator

Key points

  • Manual — POST /v1/run/{pipelineName} from the UI, CLI, or API.
  • Schedule — a cron or one-time schedule owned by a team path.
  • Git event — a GitHub App event or a Git Webhook Source delivery matched against a repository trigger manifest.
  • External trigger — an authenticated invocation from another system, with payload mapping and rate limiting.
  • Child pipeline — a pipeline: include started by a parent run.
  • Rerun — a new run created from an existing run definition and inputs.

How it works

Every entry point produces a normal run with the same authorization, logging, and audit behavior. What differs is who the original caller is and which scope and team path the run inherits.

Scope decides which variables and secrets resolve. Team path decides run ownership and notification lineage; global means no concrete team assignment.

AAA authorizes the original caller for every resource the run references, including the pipeline, the scope, and each selected profile — not just the entry point.

Examples

Start the same pipeline from each entry pointbash
# manually, in a chosen scope
curl -sX POST "$NOPSAI_URL/v1/run/platform/release-service" \
  -H "Authorization: Bearer $NOPSAI_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"scope":"platform/production"}'

# from another system, through an external trigger
curl -sX POST "$NOPSAI_URL/v1/external-triggers/$TRIGGER_ID/invoke" \
  -H "Authorization: Bearer $CALLER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"payload":{"channel":"stable"}}'

# on a schedule, run once now without waiting for the next tick
curl -sX POST -H "Authorization: Bearer $NOPSAI_TOKEN" \
  "$NOPSAI_URL/v1/schedules/$SCHEDULE_ID/run"
Result

Three different entry points, one pipeline, and one run record shape. The entry point decides ownership and scope, not what the pipeline does.

Replace before running
  • $NOPSAI_URL is the API address; $TRIGGER_ID and $SCHEDULE_ID come from their list endpoints.

Implementation evidence

  • doc/runtime-flows.md

    Execution flow for each entry point.