# denver

<img src="https://raw.githubusercontent.com/thorsten-klein/denver/develop/src/denver_assets/logo.svg" alt="denver logo" width="500"/>

Development Environments as code — reproducible, flexible, simple and fast.

> [!NOTE]
> This documentation is also published as **plain Markdown**, one file per page
> mirroring this exact page tree — meant for AI tools/LLMs to ingest directly,
> without having to scrape rendered HTML. Start at
> <a href="markdown/index.md">markdown/index.md</a>

## Introduction

Start here if you have never seen a `denver.yml`.

- [About denver](introduction/index.md)
- [Install denver](introduction/install.md)

## Quickstart

There are some examples that show denver in action

- [denver in 5 minutes](quickstart/05-minutes.md)
- [denver in 30 minutes](quickstart/30-minutes.md)
- [Examples](quickstart/examples.md)

## Concepts

The vocabulary, the philosophy and the design principles behind `denver`

- [Glossary](concepts/glossary.md)
- [Philosophy](concepts/philosophy.md)

## `denver` command

Full reference documentation of the `denver` command line interface and
environment variables used by `denver`.

- [Arguments](cli/arguments.md)
- [Shell completion](cli/completion.md)
- [Environment variables](cli/environment-variables.md)

## Configuration

The complete config schema reference (`denver.yml`, denver’s default, or
`denver.toml`): every top-level key, every generic stage key, how `import:`
chains merge, and the mechanisms behind layering, hooks, overrides and
fingerprinting.

- [Configuration](configuration/config-file.md)

## Providers

One page per provider: a full key reference for that provider’s
`denver.yml` section (every key, what it does, its default) plus design
notes on the patterns it supports and how it behaves under
`--fast`/`--force`.

| Provider                            | Purpose                                                        |
|-------------------------------------|----------------------------------------------------------------|
| [`uv`](providers/uv.md)             | Create/manage a Python virtualenv via `uv`                     |
| [`conan`](providers/conan.md)       | Provision native tools (compilers, cmake, ninja) via Conan     |
| [`docker`](providers/docker.md)     | Wrapper: relocate the pipeline into a compose service          |
| [`zephyr`](providers/zephyr.md)     | Manage a West (Zephyr RTOS) workspace                          |
| [`download`](providers/download.md) | Fetch, verify and unpack prebuilt release archives             |
| [`git`](providers/git.md)           | Clone/fetch a git checkout, pinned to one revision             |
| [`nix`](providers/nix.md)           | Source a nix flake’s devShell into the environment             |
| [`custom`](providers/custom.md)     | Escape hatch: an arbitrary command, sourced script or launcher |

A project can also register its own provider, without a denver fork — see
“Extension providers” in [Configuration](configuration/config-file.md).

- [uv](providers/uv.md)
- [conan](providers/conan.md)
- [docker](providers/docker.md)
- [zephyr](providers/zephyr.md)
- [download](providers/download.md)
- [git](providers/git.md)
- [nix](providers/nix.md)
- [custom](providers/custom.md)

## Architecture (arc42)

Why denver is built the way it is: the problem, the constraints, the
decisions, and what is known to be weak. Structured after
[arc42](https://arc42.org).

- [Overview and reading order](arc42/index.md)
- [1. Introduction and Goals](arc42/01_introduction_and_goals/index.md)
- [2. Architecture Constraints](arc42/02_architecture_constraints/index.md)
- [3. Context and Scope](arc42/03_context_and_scope/index.md)
- [4. Solution Strategy](arc42/04_solution_strategy/index.md)
- [5. Building Block View](arc42/05_building_block_view/index.md)
- [6. Runtime View](arc42/06_runtime_view/index.md)
- [7. Deployment View](arc42/07_deployment_view/index.md)
- [8. Cross-cutting Concepts](arc42/08_cross_cutting_concepts/index.md)
- [9. Architecture Decisions](arc42/09_design_decisions/index.md)
- [10. Quality Scenarios](arc42/10_quality_scenarios/index.md)
- [11. Technical Risks](arc42/11_technical_risks/index.md)
- [12. Glossary](arc42/12_glossary/index.md)

## Contributing

- [Development](contributing/development.md)
