# Supported Sources
adnv supports multiple package ecosystems. Each source type uses a URL scheme for identification.
## Source types
```mermaid
graph TD
S[Source URL] --> T[Terraform]
S --> H[Helm]
S --> D[Docker]
S --> G[Git]
S --> N[NPM]
T --> TM[Modules: gitlab.com/org/repo]
T --> TP[Providers: hashicorp/aws]
D --> DD[Docker Hub: docker.io]
D --> DG[GitHub GHCR: ghcr.io]
D --> DL[GitLab Registry: registry.gitlab.com]
G --> GH[GitHub: github.com]
G --> GL[GitLab: gitlab.com]
G --> GR[Raw Git: any HTTPS]
```
## Terraform
### Modules
Auto-detected from `module` blocks in `.tf` files:
```hcl
module "vpc" {
source = "gitlab.com/org/terraform-modules/vpc"
version = "2.1.0"
}
```
URL format for `check` command:
```
terraform://gitlab.com/org/terraform-modules/vpc
```
### Providers
Auto-detected from `required_providers` blocks:
```hcl
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "5.0.0"
}
}
}
```
Providers are resolved via the Terraform Registry API.
## Helm
Auto-detected from `Chart.yaml` dependencies:
```yaml
dependencies:
- name: nginx-ingress
version: "0.16.0"
repository: https://helm.nginx.com/stable
```
URL format for `check` and inline hints:
```
helm+https://helm.nginx.com/stable#name=nginx-ingress
```
## Docker
URL formats for `check`:
```
# Docker Hub
docker+https://docker.io/library/nginx
# GitHub Container Registry
docker+https://ghcr.io/org/image
# GitLab Container Registry
docker+gitlab://gitlab.com/org/project
```
## Git
Generic git repository tracking (releases/tags):
```
# GitHub
git+https://github.com/owner/repo
# GitLab
git+https://gitlab.com/owner/repo
# Any HTTPS git repo
git+https://git.example.com/repo.git
```
## NPM
```
# Public registry
npm://package-name
# Custom registry
npm+https://registry.example.com/package-name
```
## Source detection
For `outdated` and `update`, sources are auto-detected by scanning:
| `*.tf` | `module` blocks, `required_providers`, inline hints |
| `Chart.yaml` | `dependencies` entries |
For `check`, sources are specified explicitly in config or as CLI arguments.