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

# Core Concepts

## How Beam Works

Beam is a new kind of cloud provider that makes the experience of using the cloud feel almost the same as using your local machine.

It's powered by an [open-source container orchestrator](https://github.com/beam-cloud/beta9) that launches containers in less than 1 second.

## Functions

You can run functions on the cloud, either once, or on a schedule. [Learn more about Functions](/v2/function/running-functions).

<CardGroup cols={2}>
  <Card title="Functions" icon="code">
    One-off Python functions, like training runs, scraping, or batch jobs.

    ```python theme={null}
    from beam import function

    @function()
    def handler():
        return {}

    if __name__ == "__main__":
        # Runs locally
        handler.local()
        # Runs on the cloud
        handler.remote()
    ```
  </Card>

  <Card title="Scheduled Jobs" icon="clock">
    Functions that run based on a schedule you specify.

    ```python theme={null}
    from beam import schedule

    @schedule(when="every 1d")
    def handler():
        return {}

    if __name__ == "__main__":
        # Runs locally
        handler.local()
        # Runs on the cloud
        handler.remote()
    ```
  </Card>
</CardGroup>

<CardGroup cols={1}>
  <Card title="Run Your Function" icon="bolt">
    You'll run your functions like a normal Python function: `python app.py`.
    Even though it *feels* like the code is running locally, it's running on a
    container in the cloud.
  </Card>
</CardGroup>

## Endpoints

You can also deploy synchronous and asynchronous web endpoints. Learn more about [Endpoints](/v2/endpoint/overview) and [Task Queues](/v2/task-queue/running-tasks).

<CardGroup cols={2}>
  <Card title="Endpoints" icon="bolt">
    Synchronous REST API endpoints, for tasks that run in 60s or less.

    ```python theme={null}
    from beam import endpoint

    @endpoint(name="quickstart")
    def handler():
      return {}
    ```
  </Card>

  <Card title="Task Queues" icon="layer-group">
    Asynchronous REST API endpoints, for heavier tasks that take a long time to run.

    ```python theme={null}
    from beam import task_queue

    @task_queue(name="quickstart")
    def handler():
      print(48393 * 39383)
    ```
  </Card>
</CardGroup>

<CardGroup cols={1}>
  <Card title="Testing Your Code (Optional)" icon="loader">
    Beam provides a temporary cloud environment to test your code.

    <br />

    These environments hot-reload with your code changes. You can test your workflow end-to-end before deploying to production.

    ```bash theme={null}
    beam serve app.py:handler
    ```
  </Card>
</CardGroup>

<CardGroup cols={1}>
  <Card title="Deploying to Production" icon="check-double">
    When you're ready to deploy a persistent endpoint, you'll use `beam deploy`:

    ```bash theme={null}
    beam deploy app.py:handler
    ```
  </Card>
</CardGroup>

## Web Services

You can also bring your own container and host web services, like Jupyter Notebooks, Node.js apps, and much more. [Learn more about Pods](/v2/pod/web-service).

<Card title="Pods" icon="bolt">
  Run any container behind an SSL-backed REST API.

  ```python theme={null}
  from beam import Pod

  pod = Pod(
    name="my-pod",
    cpu=2,
    memory="1Gi",
    ports=[8000],
    entrypoint=["python", "-m", "http.server", "--bind", "::", "8000"],
  )

  # Run the container as an API
  pod.deploy()
  ```
</Card>
