# Sluice > Sluice is a self-hosted flow orchestrator: one Go binary with Postgres, a web UI, a CLI and an MCP server. Flows are YAML files in namespaces. ## Pages Each page is also Markdown at its URL plus `.md`. ### Tutorials - [Build a flow with a coding agent](https://sluice-docs.pages.dev/tutorials/build-a-flow-with-a-coding-agent.md): Give a coding agent the Sluice skill with sluice init, then let it write, validate, deploy, run and fix a flow. - [Build an ELT pipeline](https://sluice-docs.pages.dev/tutorials/build-an-elt-pipeline.md): Load a Postgres schema with dlt, transform it with SQLMesh, and read the outputs, the metrics and the metric chart of the flow. - [Run your first flow](https://sluice-docs.pages.dev/tutorials/run-your-first-flow.md): Start Sluice with Docker Compose, write a flow in the browser, run it, read the execution, and run it again from the CLI. ### How-to guides - [Chain flows](https://sluice-docs.pages.dev/how-to/chain-flows.md): Start one flow when another ends with a flow trigger, or run a flow as a step of another with a subflow task. - [Connect a secret provider](https://sluice-docs.pages.dev/how-to/connect-a-secret-provider.md): Resolve secrets from HashiCorp Vault, Azure Key Vault, Kubernetes Secrets or the server environment instead of storing them in Sluice. - [Connect an MCP client](https://sluice-docs.pages.dev/how-to/connect-an-mcp-client.md): Connect Claude Code, Cursor, VS Code or another MCP client to the Sluice MCP server with an API token of the lowest role that fits. - [Deploy on Kubernetes with Helm](https://sluice-docs.pages.dev/how-to/deploy-on-kubernetes.md): Install Sluice in a Kubernetes cluster with the Helm chart, with Secrets for the database, the master keys and the first admin. - [Deploy with Docker Compose](https://sluice-docs.pages.dev/how-to/deploy-with-docker-compose.md): Start Sluice and Postgres on one host with Docker Compose, keep the master key, and upgrade the stack. - [Pass data between tasks](https://sluice-docs.pages.dev/how-to/pass-data-between-tasks.md): Emit outputs, metrics and artifacts from a task through SLUICE_OUTPUTS, read outputs in later tasks, and declare flow outputs. - [Retry, time out and limit executions](https://sluice-docs.pages.dev/how-to/retry-time-out-and-limit.md): Retry failed tasks with a backoff, stop tasks and executions that run too long, and limit how many executions and tasks run at the same time. - [Run flows from GitHub Actions](https://sluice-docs.pages.dev/how-to/run-flows-from-github-actions.md): Deploy a namespace directory with sluice namespaces push and run a flow with the Sluice GitHub Action, with the result in the job summary. - [Run tasks in Docker](https://sluice-docs.pages.dev/how-to/run-tasks-in-docker.md): Run script and command tasks in Docker containers, with your own image, pull policy, network and resource limits. - [Run tasks on Kubernetes](https://sluice-docs.pages.dev/how-to/run-tasks-on-kubernetes.md): Run script and command tasks as Kubernetes Jobs, with requests, limits, a service account, node placement and pull secrets. - [Schedule a flow](https://sluice-docs.pages.dev/how-to/schedule-a-flow.md): Run a flow on a cron schedule in a time zone, and control what happens after missed times. - [Set up the assistant](https://sluice-docs.pages.dev/how-to/set-up-the-assistant.md): Connect Sluice to Anthropic or to an OpenAI-compatible model server, test it, and turn on automatic failure triage. - [Sync a namespace from git](https://sluice-docs.pages.dev/how-to/sync-a-namespace-from-git.md): Map a directory of a git branch to a namespace, sync it on a poll or a webhook, and push edits from Sluice to a new branch. - [Triage a failed execution](https://sluice-docs.pages.dev/how-to/triage-a-failed-execution.md): Find the failed task, read its logs and the AI triage, fix the cause, and run only the failed tasks again, from the UI, the CLI or MCP. - [Trigger a flow with a webhook](https://sluice-docs.pages.dev/how-to/trigger-a-flow-with-a-webhook.md): Start a flow from an HTTP call, map the request body and headers to flow inputs, and rotate the webhook key. - [Use secrets and variables](https://sluice-docs.pages.dev/how-to/use-secrets-and-variables.md): Store credentials as secrets and settings as variables, scope them to a namespace or to all namespaces, and read them in a flow. - [Use Sluice with coding agents](https://sluice-docs.pages.dev/how-to/use-sluice-with-coding-agents.md): Give a coding agent the Sluice docs, the skill, the flow schema, a CLI with JSON output and exit codes, and the MCP server. ### Concepts - [Architecture](https://sluice-docs.pages.dev/concepts/architecture.md): The parts of Sluice, the path of an execution through them, and how many instances share one database. - [Executions and states](https://sluice-docs.pages.dev/concepts/executions-and-states.md): How an execution moves from QUEUED to an end state, what a task run and an attempt are, and how rerun and restart differ. - [Executors, pools and the runner](https://sluice-docs.pages.dev/concepts/executors-pools-and-the-runner.md): Why Sluice has four executors, how pools route tasks to instances, how worker slots limit the work, and what the runner does inside a task. - [Flows, tasks and templates](https://sluice-docs.pages.dev/concepts/flows-and-tasks.md): How a flow file declares tasks, dependencies, inputs, environment and files, and where Sluice validates it. - [How Sluice compares](https://sluice-docs.pages.dev/concepts/how-sluice-compares.md): A factual comparison of Sluice with Kestra, Airflow, Dagster, Prefect, Windmill and Temporal, for a reader who chooses a tool. - [Namespaces and versions](https://sluice-docs.pages.dev/concepts/namespaces-and-versions.md): How namespaces group flows and files, how every change becomes a version, and how managed and git namespaces differ. - [Security model](https://sluice-docs.pages.dev/concepts/security-model.md): How Sluice authenticates users, tokens and runners, what each role can do, and how it protects sessions, secrets and the audit trail. - [The assistant and MCP](https://sluice-docs.pages.dev/concepts/the-assistant-and-mcp.md): How the assistant in the web UI and the MCP server share one tool registry, and how roles, confirmation, masking, attachments and limits apply to each. ### Reference - [CLI](https://sluice-docs.pages.dev/reference/cli.md): Every command of the sluice binary, with its flags. - [Environment variables](https://sluice-docs.pages.dev/reference/env.md): Every environment variable of the server, the client commands, the runner and the tasks. - [Exit codes](https://sluice-docs.pages.dev/reference/exit-codes.md): The exit codes of the sluice binary. - [Flow file](https://sluice-docs.pages.dev/reference/flow.md): Every field of a flow file and of namespace.yaml. - [GitHub Action](https://sluice-docs.pages.dev/reference/github-action.md): The inputs and outputs of the Sluice GitHub Action. - [HTTP API basics](https://sluice-docs.pages.dev/reference/http-api-basics.md): Authentication, the Origin check, the error envelope, pagination, event streams and the OpenAPI document of the Sluice HTTP API. - [Keyboard shortcuts](https://sluice-docs.pages.dev/reference/keyboard-shortcuts.md): Every keyboard shortcut of the Sluice web UI, the g chords, the command palette and its commands. - [MCP tools](https://sluice-docs.pages.dev/reference/mcp-tools.md): The tools of the MCP server and the assistant. - [JSON Schemas](https://sluice-docs.pages.dev/reference/schemas.md): The three JSON Schemas of Sluice, their URLs, and how to use them in an editor, in VS Code and from the server. - [States and reasons](https://sluice-docs.pages.dev/reference/states-and-reasons.md): Every state of an execution and a task run, the allowed transitions, and every reason value with its cause. - [Templates](https://sluice-docs.pages.dev/reference/templates.md): Every template expression, the fields that accept templates and secret(), the rendering rules and the error codes. ### Operations - [Back up and restore](https://sluice-docs.pages.dev/operations/back-up-and-restore.md): Back up the Postgres database, the object store and the master keys of a Sluice deployment, and restore them. - [Harden a deployment](https://sluice-docs.pages.dev/operations/harden-a-deployment.md): Put TLS in front of Sluice, limit roles and tokens, keep the security headers, protect the network and keep secrets out of the database. - [Metrics](https://sluice-docs.pages.dev/operations/metrics.md): Every Prometheus metric of /metrics, example queries, suggested alerts and the definitions of the dashboard figures. - [Rotate the master key](https://sluice-docs.pages.dev/operations/rotate-the-master-key.md): Add a new master key, encrypt all builtin secrets with it, and remove the old key without downtime. - [Runbook](https://sluice-docs.pages.dev/operations/runbook.md): Check the health of a Sluice deployment, read its logs, and fix stuck executions and common errors. - [Upgrade](https://sluice-docs.pages.dev/operations/upgrade.md): Upgrade a Sluice deployment to a new version, with the database migrations and a rolling rollout. The HTTP API reference is at https://sluice-docs.pages.dev/reference/api/ and the OpenAPI document at https://sluice-docs.pages.dev/openapi.yaml. ## Documentation Sets - [Abridged documentation](https://sluice-docs.pages.dev/llms-small.txt): a compact version of the documentation for Sluice, with non-essential content removed - [Complete documentation](https://sluice-docs.pages.dev/llms-full.txt): the full documentation for Sluice ## Notes - The complete documentation includes all content from the official documentation - The content is automatically generated from the same source as the official documentation