---
title: "Data project: databases and jobs with no site, the while.sh docs"
url: https://while.sh/en/docs/building-blocks/data-projects/
updated: 2026-11-09
---

# Data projects

A project with no web address, made of databases and scheduled jobs: a data warehouse that other projects read, nightly processing.

> You, to your agent: Set up a data warehouse that loads our sales every night.

## What your agent writes

Your agent writes it in while.yaml, at the root of your app:

```yaml titre="while.yaml"
crons:
  - name: ingestion
    schedule: "30 5 * * *"
    command: [node, ingestion.js]
    source: .
```

## What your app receives

Your app receives these environment variables at every deployment:

| Variable | What it holds |
|---|---|
| `DATABASE_URL` | The address of the project's database. |
| `WHILE_CRON` | The job's name. |
| `WHILE_TRIGGER` | How this run was started. |

## When to use it

For data and processing without a screen: nightly loads, a project that other projects read.

## How it works

A data project gathers databases and tasks, with no web address: a data warehouse, nightly processing. Its health is its databases and the runs of its tasks.

## What to know

The while.yaml has no services. Each task is built from its sources (source, `dockerfile`) or starts from an image, with 100 mCPU and 128 MiB by default (resources). A rollback gives the tasks back the image of the target version.

## Pricing

These prices are the same on every plan, excluding VAT:

| Resource | Price | Details |
|---|---|---|
| CPU and memory | €17 per vCPU·month and €8.50 per GiB·month | apps by usage, caches by reservation |

## Your agent's MCP tools

Your agent handles it with the `deploy_app`, `list_tasks` and `run_task` tools.

## Guides

- [Run a script on a schedule from your AI agent, with no server](/en/guides/run-cron-job/)
