---
title: Watch Paths	
description: Learn how to use watch paths in your application or docker compose.	
---

Watch paths are a feature that allows you to monitor specific directories or files for changes and automatically trigger actions when modifications occur.	

## Overview	

Watch paths functionality is available for both standalone applications and Docker Compose configurations. This feature helps automate deployments based on file changes in your repository.	

## Supported Source Providers	

The following source control providers are supported:	

- GitHub	
- GitLab	
- Bitbucket	
- Git (works with Bitbucket, Github, and GitLab repositories)	

## Basic Usage	

Let's say you have a project with the following directory structure:	

```	
my-app/	
├── src/	
│   ├── index.js	
├── public/	
```	

By default, dokploy accepts an array of paths, allowing you to monitor multiple locations. For example:

- To trigger deployments when any file in the `src/` directory changes, use the pattern: `src/*`
- To monitor a specific file, simply specify its path: `src/index.js`

## Configuration

Watch Paths works out of the box with zero configuration when using GitHub as your provider. For other providers, you'll need to first set up auto-deploys as explained in:

- [Auto Deploy](/docs/core/auto-deploy)
- [Bitbucket Integration](/docs/core/bitbucket)
- [GitLab Integration](/docs/core/gitlab)
- [GitHub Integration](/docs/core/github)
- [Gitea Integration](/docs/core/gitea)

Note: When using the Git provider, the functionality will only work with GitHub, GitLab, Bitbucket, or Gitea repositories.

## Pattern Matching Features

We support a wide range of pattern matching features:

- Multiple glob patterns
- Wildcards:
  - `**` (matches any number of directories)
  - `*.js` (matches all JavaScript files)
- Negation patterns:
  - `!a/*.js` (excludes JavaScript files in directory 'a')
  - `*!(b).js` (matches all JavaScript files except those ending with 'b')
- Extended glob patterns:
  - `+(x|y)` (matches 'x' or 'y' one or more times)
  - `!(a|b)` (matches anything except 'a' or 'b')
- POSIX character classes:
  - `[[:alpha:][:digit:]]` (matches any letter or number)
- Brace expansion:
  - `foo/{1..5}.md` (matches foo/1.md through foo/5.md)
  - `bar/{a,b,c}.js` (matches bar/a.js, bar/b.js, bar/c.js)
- Regex character classes:
  - `foo-[1-5].js` (matches foo-1.js through foo-5.js)
- Regex logical "or":
  - `foo/(abc|xyz).js` (matches foo/abc.js or foo/xyz.js)

<userStyle>Normal</userStyle>