# senro > A pipeline engine defined in Go: build a Line of Steps as ordinary Go code, run it, and attach to it live over a unix socket to watch and debug what it's doing. A pipeline engine first - CI/CD is the obvious first use, not the boundary of what it's for. Auto-generated from the senro documentation. ## Documentation - [Introduction](https://xavidop.github.io/senro/docs) - [Agent skill](https://xavidop.github.io/senro/docs/reference/skill) - [api: the wire contract](https://xavidop.github.io/senro/docs/run/api) - [Archiving a run](https://xavidop.github.io/senro/docs/run/archiving) - [bazel](https://xavidop.github.io/senro/docs/monorepo/unit-graphs/bazel) - [Bitbucket triggers](https://xavidop.github.io/senro/docs/triggers/bitbucket) - [Cache keys](https://xavidop.github.io/senro/docs/data/cache-keys) - [Cache stores](https://xavidop.github.io/senro/docs/data/cache-stores) - [Caching a step](https://xavidop.github.io/senro/docs/data/caching) - [cargo](https://xavidop.github.io/senro/docs/monorepo/unit-graphs/cargo) - [CLI](https://xavidop.github.io/senro/docs/cli) - [CLI: cache and verify](https://xavidop.github.io/senro/docs/cli/cache) - [CLI: run and watch](https://xavidop.github.io/senro/docs/cli/run) - [CLI: workspaces and runs](https://xavidop.github.io/senro/docs/cli/workspaces) - [Concepts](https://xavidop.github.io/senro/docs/concepts) - [Conditions](https://xavidop.github.io/senro/docs/steps/conditions) - [Containers](https://xavidop.github.io/senro/docs/executors/containers) - [Control operations](https://xavidop.github.io/senro/docs/attach/control-ops) - [Env, dir & timeout](https://xavidop.github.io/senro/docs/steps/settings) - [Executors](https://xavidop.github.io/senro/docs/executors) - [Extending senro](https://xavidop.github.io/senro/docs/extend) - [Failure analyzers](https://xavidop.github.io/senro/docs/analyzers) - [Fan out with Expand](https://xavidop.github.io/senro/docs/monorepo/fan-out) - [Func steps](https://xavidop.github.io/senro/docs/steps/functions) - [Func steps off the coordinator](https://xavidop.github.io/senro/docs/executors/func-remote) - [Generate a subgraph](https://xavidop.github.io/senro/docs/monorepo/generators) - [Gitea triggers](https://xavidop.github.io/senro/docs/triggers/gitea) - [GitHub Checks](https://xavidop.github.io/senro/docs/notifications/github-checks) - [GitHub triggers](https://xavidop.github.io/senro/docs/triggers/github) - [GitLab triggers](https://xavidop.github.io/senro/docs/triggers/gitlab) - [glob](https://xavidop.github.io/senro/docs/monorepo/unit-graphs/glob) - [gowork](https://xavidop.github.io/senro/docs/monorepo/unit-graphs/gowork) - [gradle](https://xavidop.github.io/senro/docs/monorepo/unit-graphs/gradle) - [Handlers](https://xavidop.github.io/senro/docs/steps/handlers) - [Install](https://xavidop.github.io/senro/docs/install) - [jswork](https://xavidop.github.io/senro/docs/monorepo/unit-graphs/jswork) - [Kubernetes](https://xavidop.github.io/senro/docs/executors/kubernetes) - [maven](https://xavidop.github.io/senro/docs/monorepo/unit-graphs/maven) - [Monorepos](https://xavidop.github.io/senro/docs/monorepo) - [Notifications](https://xavidop.github.io/senro/docs/notifications) - [Ordering](https://xavidop.github.io/senro/docs/steps/ordering) - [Partition](https://xavidop.github.io/senro/docs/monorepo/partition) - [Per-unit edges](https://xavidop.github.io/senro/docs/monorepo/needs-each) - [Persistent workspaces](https://xavidop.github.io/senro/docs/data/persistent) - [pyproject](https://xavidop.github.io/senro/docs/monorepo/unit-graphs/pyproject) - [Quickstart](https://xavidop.github.io/senro/docs/quickstart) - [Reading a failed run](https://xavidop.github.io/senro/docs/run/debugging) - [rerun](https://xavidop.github.io/senro/docs/cli/rerun) - [Retries](https://xavidop.github.io/senro/docs/steps/retries) - [Run it as a server](https://xavidop.github.io/senro/docs/triggers/server) - [Run options and outcomes](https://xavidop.github.io/senro/docs/run/options) - [Running only what changed](https://xavidop.github.io/senro/docs/monorepo/affected) - [Schedule & manual triggers](https://xavidop.github.io/senro/docs/triggers/manual) - [Scratch caches](https://xavidop.github.io/senro/docs/data/scratch) - [Secret channels](https://xavidop.github.io/senro/docs/secrets/channels) - [Secrets](https://xavidop.github.io/senro/docs/secrets) - [Security](https://xavidop.github.io/senro/docs/attach/security) - [Shared cache](https://xavidop.github.io/senro/docs/data/shared-cache) - [Sharing scratch caches](https://xavidop.github.io/senro/docs/data/scratch-sharing) - [Slack](https://xavidop.github.io/senro/docs/notifications/slack) - [SSH](https://xavidop.github.io/senro/docs/executors/ssh) - [Step states](https://xavidop.github.io/senro/docs/steps/states) - [Steps](https://xavidop.github.io/senro/docs/steps) - [The AI analyzer](https://xavidop.github.io/senro/docs/analyzers/genkit) - [The browser UI](https://xavidop.github.io/senro/docs/attach/browser) - [The event file](https://xavidop.github.io/senro/docs/triggers/events) - [The event stream](https://xavidop.github.io/senro/docs/run/event-stream) - [The protocol](https://xavidop.github.io/senro/docs/attach) - [The shell](https://xavidop.github.io/senro/docs/attach/shell) - [The TUI](https://xavidop.github.io/senro/docs/attach/tui) - [Triggers](https://xavidop.github.io/senro/docs/triggers) - [Unit graphs](https://xavidop.github.io/senro/docs/monorepo/unit-graphs) - [Webhook](https://xavidop.github.io/senro/docs/notifications/webhook) - [Workspaces](https://xavidop.github.io/senro/docs/data/workspaces) - [Write a destination](https://xavidop.github.io/senro/docs/notifications/custom) - [Write a trigger source](https://xavidop.github.io/senro/docs/triggers/custom) - [Write a unit graph](https://xavidop.github.io/senro/docs/monorepo/unit-graphs/custom) - [Write an analyzer](https://xavidop.github.io/senro/docs/analyzers/custom) - [Writing a trace exporter](https://xavidop.github.io/senro/docs/extend/exporter) ## Full text - [Complete documentation](https://xavidop.github.io/senro/llms-full.txt): every page above concatenated into a single Markdown file.