> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Essential Services

> Message queues, caches, storage, and any other service Monk can spin up

## What It Does

Your app doesn't just need a database. It needs message queues, object storage, caches, API gateways, and more.

Monk detects these needs during [code analysis](/features/code-analysis), then provisions and configures them automatically. You pick how they're deployed: self-hosted, cloud managed, or third-party. Monk handles provisioning, connection strings, and wiring.

## How It Works

### Automatic Service Detection

During code analysis, Monk identifies your infrastructure requirements:

* Message queue usage (RabbitMQ, Kafka, SQS clients)
* Object storage references (S3 SDK, MinIO client, file uploads)
* Caching layers (Redis, Memcached)
* API gateway and web server needs (Kong, Nginx, Apache)

It figures out what you need before you configure anything.

### Deployment Options

You've got three choices for each service.

#### Option 1: Self-Hosted in Containers

Best for development, staging, and full control. Services run in containers on your infrastructure. Monk handles setup, persistence, and configuration. Quick to spin up, easy to tear down.

#### Option 2: Cloud Provider Managed

Best for production. Uses your cloud provider's managed services (AWS S3/SQS, GCP Cloud Storage/Pub-Sub, Azure Blob/Service Bus). You provide credentials, Monk provisions and configures everything.

#### Option 3: Third-Party Managed

Best for specialized needs or multi-cloud setups. Uses providers like Cloudflare R2, Redis Cloud, or other SaaS platforms. Often have free tiers or pay-per-use pricing.

#### Progression Examples

**Object Storage:**

* Start with MinIO (containerized) for development
* Move to DigitalOcean Spaces or AWS S3 for production
* Scale to Cloudflare R2 for global CDN + storage

**Message Queues:**

* Start with RabbitMQ (containerized) for development
* Move to AWS SQS or managed RabbitMQ for production
* Scale to Apache Kafka for high-throughput event streaming

**Caching:**

* Start with Redis (containerized) for development
* Move to AWS ElastiCache or managed Redis for production
* Scale to Redis Cloud for global, multi-region caching

Monk recommends the best option based on your stage, scale, and requirements.

### Supported Services

Monk supports 50+ services out of the box. Here are the major categories:

* **Message Queues & Brokers** -- RabbitMQ, Apache Kafka, AWS SQS
* **Object Storage** -- MinIO, AWS S3, Cloudflare R2
* **Caching** -- Redis, Memcached, Hazelcast
* **API & Gateway** -- Kong, Hasura GraphQL Engine, AWS API Gateway
* **Web Servers & Proxies** -- Nginx, Apache, HAProxy
* **Security & Secrets** -- HashiCorp Vault, Keycloak
* **Monitoring & Observability** -- Prometheus + Grafana, ELK Stack, Fluent Bit
* **DevOps & CI/CD** -- Jenkins, GitLab, SonarQube
* **Data Integration & ETL** -- Airbyte, Apache Airflow
* **Analytics & BI** -- Metabase, Apache Superset
* **AI/ML Serving** -- Ollama, TensorFlow

See [Integrations](/integrations) for the full list.

### Automatic Connection Management

Monk generates and manages connection strings and credentials automatically via [Configuration & Wiring](/features/configuration-and-wiring). This includes:

* Connection string generation (queue URLs, storage endpoints, cache URLs)
* Credential creation and secure storage
* Network configuration and authentication setup
* Service discovery registration

Switch between deployment options without code changes. Move from self-hosted MinIO to AWS S3, and Monk updates your app's storage configuration automatically. Your code using the S3 SDK keeps working without modification.

<Warning>
  Data migration between service providers isn't automated yet. When you switch from self-hosted to managed (or vice versa), Monk updates connection strings but doesn't transfer existing data. You'll need to migrate data manually for now.
</Warning>

### Service Configuration

Monk can configure service settings to match your requirements -- queue sizes, storage quotas, cache memory limits, rate limits, health checks, monitoring thresholds, and more. Tell Monk what you need. It understands service-specific parameters for each supported type.

<Info>Data migration, advanced monitoring, and custom management actions are on the roadmap. [Vote on what to prioritize](https://monk.io/roadmap).</Info>

## Next Steps

<CardGroup cols={2}>
  <Card title="Integrations" icon="puzzle-piece" href="/integrations">
    Browse the full catalog of 50+ supported services and providers.
  </Card>

  <Card title="Configuration & Wiring" icon="plug" href="/features/configuration-and-wiring">
    Learn how Monk manages connection strings and credentials.
  </Card>
</CardGroup>
