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

> ## Agent Instructions
> The docs are served at https://docs.devias.io. Every path in these docs is relative to that root: /llms.txt is https://docs.devias.io/llms.txt.
> Devias is an open-source platform that works as an operating system for a business: a core (records, views, workflows, agents, permissions) with installable modules.
> Pages are typed by folder. concepts/ explains what things are, guides/ gives procedures, reference/ is exhaustive (SDK, CLI, HTTP API), operate/ covers hosting. Use /start/glossary for exact terms.
> Every id in a module (module, object, field, view, action, workflow, step, connection, variable, event, policy) is a uuid. Generate them with `devias id <count>`. Never invent dotted or readable ids.
> Run `devias plan` and read its output before `devias apply`. Apply only what the plan says.
> The OpenAPI document, including the routes of the modules in the reference setup, is at /reference/api/openapi.json.
> Devias is young and changes quickly. If a page and the source repository (github.com/devias-io/devias) disagree, the repository is right.

# What a module is

> A Devias module is an npm package that adds one area of the business. Lists the three parts (manifest, server code, studio code), the package layout and exports, which part is required, and how a module reaches a workspace.

A **module** is an npm package that adds one area of the business to Devias: its data, its screens and its actions. The CRM is a module. So are invoicing, expenses and the Stripe connection.

## Parts of a module

| Part | What it adds | Where it lives |
| - | - | - |
| Manifest | Objects, fields, views, layouts, sidebar items, commands, agents, skills and workflows. It is plain data. | `src/manifest` |
| Server code | Actions, webhooks and connection checks. | `src/server` |
| Studio code | Custom screens: blocks, pages and field types written in React. | `src/studio` |

Only the manifest is required. The Expenses module is a manifest and nothing else.

```text theme={"dark"}
my-module/
├── package.json
└── src/
    ├── manifest/    ← always: what the module is
    ├── server/      ← optional: what it does
    └── studio/      ← optional: what it looks like
```

The package says which parts it has through its `exports`: `./manifest`, `./server` and `./studio`.

## How a module reaches a workspace

1. The package is listed in `devias.config.ts`, so the studio and the server know about it.
2. An admin installs it in a workspace from **Settings → Modules**, after reviewing a plan of what will change.
3. From then on the studio shows its screens and the server runs its code.

Everything a module declares carries a **uuid** that never changes. That is how Devias knows what the module owns, and how it updates the module later without touching anything the workspace created.

> [!NOTE]
>
> A module can build on another. Expenses, for example, needs the CRM installed first, because an expense points at a CRM company.

## Related

* [Create a first module](https://docs.devias.io/guides/modules/first-module.md): a procedure with a complete manifest.
* [Built-in modules](https://docs.devias.io/guides/modules/built-in-modules.md): the modules that ship with Devias, as examples.
* [Modules](https://docs.devias.io/concepts/modules.md): the concept.


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