> For the complete documentation index, see [llms.txt](https://docs.qpoint.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.qpoint.io/configuration.md).

# Deployment

Qtap offers two flexible management approaches, catering to different deployment needs and preferences: through a cloud control plane or via local configuration files. Both methods provide powerful capabilities with different advantages.

## Cloud-Connected Configuration

[**Cloud-connected mode**](/getting-started/qplane.md) leverages Qpoint's control plane for centralized management:

* **Setup**: Register agents with a token from the Qplane dashboard
* **Management**: Configure via the web UI or API
* **Updates**: Changes automatically propagate to agents
* **Monitoring**: View agent status and health in real-time

```bash
# Example: Deploy with cloud-connected configuration
docker run \
  --privileged \
  --pid=host \
  --network=host \
  -v /sys:/sys \
  us-docker.pkg.dev/qpoint-edge/public/qtap:v0 \
  tap \
  --registration-token=YOUR_TOKEN
```

## Local Configuration

[**Local configuration mode**](/getting-started/qtap.md) uses a YAML file for direct agent configuration:

* **Setup**: Create a `qpoint.yaml` file with your desired settings
* **Management**: Update the configuration file and restart the agent
* **Control**: Complete control over all aspects without external dependencies
* **Isolation**: Works in air-gapped or restricted environments

```yaml
# Example: Minimal local configuration
version: 2
services:
  event_stores:
    - id: console_stdout
      type: stdout
  object_stores:
    - id: console_stdout
      type: stdout
stacks:
  default_stack: # Stack Name
    plugins:
      - type: access_logs
        config:
          mode: details # Default action (summary|details|full)
          format: console # (json|console)
          rules:
            - name: summary log example.com
              expr: request.host == "example.com"
              mode: summary
            - name: details log on anything above 400
              expr: response.status >= 400
              mode: full
tap:
  direction: egress
  ignore_loopback: false
  audit_include_dns: true
  http:
    stack: default_stack
```
