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

# How Hoista works

> Accounts, projects, resources and the daemon that connects them.

Hoista is a control plane. Your providers are where your code and data run. Hoista sits beside them: it keeps the record of what you run and where, and sends the commands to deploy, roll back, change settings or delete. It never runs your workloads itself.

## Accounts, projects and resources

An **account** is a connection to one provider account, workspace or team. When you connect it, Hoista discovers what it can reach there.

A **resource** is one thing at a provider, such as a Railway service, a Cloudflare Worker or a Neon project.

A **project** groups the resources that make up one app. Each resource belongs to one project.

![The Hoista project my-app holds three resources: a website on Vercel, an API on Railway and a database on Neon. Each keeps running at its provider.](https://mintcdn.com/mirt-lab/xnVa5lZdCrkkDEzj/assets/diagrams/project-resources-light.svg?fit=max\&auto=format\&n=xnVa5lZdCrkkDEzj\&q=85\&s=591e4400af509881fdb3d4f26a8cd99c)

![The Hoista project my-app holds three resources: a website on Vercel, an API on Railway and a database on Neon. Each keeps running at its provider.](https://mintcdn.com/mirt-lab/xnVa5lZdCrkkDEzj/assets/diagrams/project-resources-dark.svg?fit=max\&auto=format\&n=xnVa5lZdCrkkDEzj\&q=85\&s=5d2a4265d5af14cf30cb4cbd05237716)

A project groups the resources of one app. Each resource still runs at its own provider.

## Watching and managed

Projects you import start in **watching** mode. The provider keeps building and running the project its own way. Hoista reads its status, deploys, logs and metrics. Where the provider supports it, you can ask the provider to redeploy, restart or roll back from Hoista.

A **managed** project deploys from a source you link in Hoista: a local folder or a GitHub repository. Hoista plans and starts its deployments. See [bring in a project](https://docs.hoista.dev/guides/import-apps.md) to change modes.

![Watching: the provider builds from your repository on its own, and Hoista reads its status, deploys, logs and metrics. Managed: Hoista plans and starts the deploy from your folder or GitHub repository.](https://mintcdn.com/mirt-lab/xnVa5lZdCrkkDEzj/assets/diagrams/watching-managed-light.svg?fit=max\&auto=format\&n=xnVa5lZdCrkkDEzj\&q=85\&s=1d0fc0ac7bef6e9494e4eb32f815ef97)

![Watching: the provider builds from your repository on its own, and Hoista reads its status, deploys, logs and metrics. Managed: Hoista plans and starts the deploy from your folder or GitHub repository.](https://mintcdn.com/mirt-lab/xnVa5lZdCrkkDEzj/assets/diagrams/watching-managed-dark.svg?fit=max\&auto=format\&n=xnVa5lZdCrkkDEzj\&q=85\&s=587239238d28d014f4678e702273bb71)

A watched project deploys at the provider as before, and Hoista reads it. A managed project is deployed by Hoista.

## The daemon

`hoistd` is the daemon that runs the control plane. It stores your projects, settings and activity, checks what each agent may do, and calls each provider's API. Desktop, the CLI and agents are all clients of the same daemon, so they see the same state.

![Coding agents connect over stdio, chat apps over HTTP with OAuth, and you through the desktop app or the hoist CLI over a local socket. All of them reach hoistd, the engine, which runs on your computer or as a remote in your own account. hoistd checks each caller's access, keeps its state in SQLite, works with your providers through their APIs and CLIs, and reads a provider token only for the call that needs it.](https://mintcdn.com/mirt-lab/xnVa5lZdCrkkDEzj/assets/diagrams/hoista-architecture-light.svg?fit=max\&auto=format\&n=xnVa5lZdCrkkDEzj\&q=85\&s=be0cb85efc1124edfe2bc76e022425a7)

![Coding agents connect over stdio, chat apps over HTTP with OAuth, and you through the desktop app or the hoist CLI over a local socket. All of them reach hoistd, the engine, which runs on your computer or as a remote in your own account. hoistd checks each caller's access, keeps its state in SQLite, works with your providers through their APIs and CLIs, and reads a provider token only for the call that needs it.](https://mintcdn.com/mirt-lab/xnVa5lZdCrkkDEzj/assets/diagrams/hoista-architecture-dark.svg?fit=max\&auto=format\&n=xnVa5lZdCrkkDEzj\&q=85\&s=70a88a357586256c676f0c69f0cf5823)

Desktop, the CLI and agents use one engine to reach your provider accounts.

## Local or remote

| | On your computer | In your own cloud (a **remote**) |
| - | - | - |
| State | SQLite on your computer | SQLite on the remote's persistent volume |
| Provider credentials | OS credential store | A separate credential keeper |
| Agents connect through | `hoist mcp` over stdio, or MCP over HTTP on `127.0.0.1:8788` through a [tunnel or proxy](https://docs.hoista.dev/agents/tools/chatgpt.md#from-your-computer) | HTTPS MCP with OAuth |
| Available | While your computer is on | Also while your computer is off |

The CLI starts the local daemon when it needs it, and Desktop can be closed. Moving to a remote is a [state transfer](https://docs.hoista.dev/guides/remote.md). Changing the address alone does not copy anything.

Agents sign in to Hoista with their own credentials and never receive your provider tokens. See [security](https://docs.hoista.dev/security/overview.md) and [credential storage](https://docs.hoista.dev/security/credentials.md).

## Related

> [card] [Quickstart](https://docs.hoista.dev/getting-started/quickstart.md)
>
> Connect a provider and add your first project.

> [card] [Bring in a project](https://docs.hoista.dev/guides/import-apps.md)
>
> Import projects and switch them to managed.

> [card] [Security](https://docs.hoista.dev/security/overview.md)
>
> Where tokens live and what agents can do.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.