# About dbt artifacts

(Applies to dbt v1.12 and later)

With every invocation, dbt generates and saves one or more *artifacts*. Several of these are JSON files (`semantic_manifest.json`, `osi_document.json`, `manifest.json`, `catalog.json`, `run_results.json`, and `sources.json`) that are used to power:

* [documentation](../../docs/explore/build-and-view-your-docs.md)
* [state](../node-selection/syntax.md#about-node-selection)
* [visualizing source freshness](../../docs/build/sources.md#source-data-freshness)

They could also be used to:

* gain insights into your [Semantic Layer](../../docs/use-dbt-semantic-layer/dbt-sl.md)
* calculate project-level test coverage
* perform longitudinal analysis of run timing
* identify historical changes in table structure
* do much, much more

### When are artifacts produced? [Starter](https://www.getdbt.com/pricing "Go to https://www.getdbt.com/pricing")[Enterprise](https://www.getdbt.com/pricing "Go to https://www.getdbt.com/pricing")

Most dbt commands (and corresponding RPC methods) produce artifacts:

* [semantic manifest](./sl-manifest.md): produced whenever your dbt project is parsed

(Applies to dbt v1.12 and later)

* [Apache Ossie document](./sl-manifest.md#apache-ossie-document): produced whenever your dbt project is parsed

- [manifest](./manifest-json.md): produced by commands that read and understand your project
- [run results](./run-results-json.md): produced by commands that run, compile, or catalog nodes in your DAG
- [catalog](./catalog-json.md): produced by `docs generate`
- [sources](./sources-json.md): produced by `source freshness`

When running commands from the [dbt CLI](../../docs/platform/dbt-cli-installation.md), all artifacts are downloaded by default. If you want to change this behavior, refer to [How to skip artifacts from being downloaded](../../docs/platform/configure-dbt-cli.md#how-to-skip-artifacts-from-being-downloaded).

## Where are artifacts produced?

By default, artifacts are written to the `/target` directory of your dbt project. You can configure the location using the [`target-path` flag](../global-configs/json-artifacts.md).

## Common metadata

All artifacts produced by dbt include a `metadata` dictionary with these properties:

* `dbt_version`: Version of dbt that produced this artifact. For details about release versioning, refer to [Versioning](../commands/version.md#versioning).
* `dbt_schema_version`: URL of this artifact's schema. See notes below.
* `generated_at`: Timestamp in UTC when this artifact was produced.
* `adapter_type`: The adapter (database), e.g. `postgres`, `spark`, etc.
* `env`: Any environment variables prefixed with `DBT_ENV_CUSTOM_ENV_` will be included in a dictionary, with the prefix-stripped variable name as its key.
* [`invocation_id`](../dbt-jinja-functions/invocation_id.md): Unique identifier for this dbt invocation

In the manifest, the `metadata` may also include:

* `send_anonymous_usage_stats`: Whether this invocation sent [anonymous usage statistics](../global-configs/usage-stats.md) while executing.
* `project_name`: The `name` defined in the root project's `dbt_project.yml`. (Added in manifest v10 / dbt v1.6)
* `project_id`: Project identifier, hashed from `project_name`, sent with anonymous usage stats if enabled.
* `user_id`: User identifier, stored by default in `~/dbt/.user.yml`, sent with anonymous usage stats if enabled.

#### Notes:

* The structure of dbt artifacts is canonized by [JSON schemas](https://json-schema.org/), which are hosted at [schemas.getdbt.com](https://schemas.getdbt.com/).
* Artifact versions may change in any minor version of dbt (`v1.x.0`). Each artifact is versioned independently.

## Related docs

* [Other artifacts](./other-artifacts.md) files such as `index.html` or `graph_summary.json`.
