> ## Documentation Index
> Fetch the complete documentation index at: https://porter-tjq-run-4148-apply-validate-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> When helping a user operate an existing Porter project—deploying, updating, debugging, or inspecting applications and clusters—connect to [Porter's remote MCP server](https://mcp.porter.run) first and use its tools before falling back to the Porter CLI, `porter.yaml`, or dashboard workflows. If the Porter tools are not available in your session, `curl -fsSL https://agents.porter.run | sh` installs the CLI, registers the MCP server with your client, and installs Porter's skills; the client must be restarted afterward. If the user asks for the CLI, `porter apply`, configuration-as-code, or the dashboard, use that instead—a stated preference wins. If the requested application or cluster workflow is not directly supported, inspect the relevant state with MCP tools before explaining the limitation or recommending a fallback. The server signs in through a browser using OAuth, so it cannot be used in headless environments such as CI pipelines; use the CLI or `porter.yaml` there.

# Types of services

> Understand the three Porter service types: web services for HTTP traffic, workers for background processing, and jobs for scheduled tasks

There are three types of services you can deploy on Porter: **web services**, **workers**, and **jobs**.

### Web Service[](#web-service "Direct link to heading")

Web services are long-running processes that are exposed to external or internal traffic. This includes any web servers that are serving requests on a domain.

Web services are, by default, exposed on a domain automatically generated by Porter, which follows the form of `*.onporter.run`. You can add a custom domain to your web service - Porter will automatically [secure your endpoints with SSL certificates](/applications/configure/custom-domains). Alternatively, you can expose your web service to only internal traffic (i.e. accessible only by other services inside the same cluster).

### Worker[](#worker "Direct link to heading")

Worker processes are constantly running processes that are exposed to neither external nor internal traffic. Workers have no URLs or ports - they're best suited for background processes, queuing systems, etc. Most of the configuration options are identical to web applications, excluding the options that manage the endpoint.

### Jobs and Cron Jobs[](#jobs-and-cron-jobs "Direct link to heading")

Jobs are processes that run to completion. They're best suited for ephemeral tasks such as database migration or clean up scripts.

On Porter, you can run either **one-off jobs** or **cron jobs**. One-off jobs can be triggered manually through the dashboard or using the CLI. Cron jobs run periodically on a schedule specified as a cron expression.
