# Automation and Scheduling

## Headless Client

### Overview

A headless client is a server-side client session that operates without an interface (UI), allowing you to automate tasks that do not require interaction from end-users. It can be configured to have a logged-in user account and perform long-running or background tasks, making it essential for server-side operations that don't need real-time interaction.

The Servoy Headless Client cannot be started by users directly, but need to be instantiated through code.

From within a Servoy solution this can be done through the [Headless Client plugin](https://docs.servoy.com/reference/servoyextensions/server-plugins/headlessclient#headlessclient), otherwise Headless Clients can be instantiated through the Servoy Public API in JSP pages for example.

### Use Cases

* **Automating background processes**: Useful for backend operations like data processing, reporting, or server-side jobs.
* **Running long-duration tasks**: Ideal for processes that take significant time and don't need real-time interaction.
* **Parallelized workloads**: By spawning multiple headless clients, you can handle several tasks in parallel, improving processing efficiency.

### Approaches

There are three main approaches to automating tasks using the headless client:

* [Batch Processor](https://docs.servoy.com/guides/develop/programming-guide/batch-processor#overview): Best for tasks that start automatically when the server is launched.
* [Headless API](https://docs.servoy.com/guides/develop/programming-guide/headless-api#overview): Allows starting and managing headless clients from within another session.
* [Scheduler API](https://docs.servoy.com/guides/develop/programming-guide/scheduler-api#overview): Provides the ability to schedule tasks at specific times or intervals.
