> ## 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.

# Publish a module

> How to prepare a Devias module for sharing. Lists the identity properties (label, description, icon, logo limits, website), semantic versioning and engines, the package exports (manifest, server, studio), the experimental policy declaration, and a pre-release checklist.

A module is an ordinary npm package, so sharing one means preparing the package: identity, version and exports.

## Identity properties

| Property | What it is for |
| - | - |
| `label` | The name people read in **Settings → Modules**. |
| `description` | One sentence under the name. |
| `icon` | A line icon, shown when there is no logo. |
| `logo` | An image in your package, such as `./logo.svg`. It can be `.svg`, `.png` or `.webp`, up to 256 KB, and must stay inside the package. |
| `website` | Your site, or the service your module connects to. Only `http` and `https` links are accepted. |

## Versions

`version` is a semantic version, like `1.2.0`. Bump it when the manifest changes, so people can tell which version they have. Devias notices a changed manifest and shows the plan to apply it.

You can also state which Devias versions you work with, with `engines: { devias: '>=0.1' }`. It is shown to people, but nothing enforces it yet.

## What the package exports

A package tells Devias which parts it has through its `exports`:

```json theme={"dark"}
"exports": {
  "./manifest": "./src/manifest/index.ts",
  "./server": "./src/server/index.ts",
  "./studio": "./src/studio/index.ts"
}
```

Exports a module does not have are left out. The studio and server packages are optional peer dependencies, so a manifest-only module stays light and the CLI can read it without loading React.

## Policies (experimental)

A **policy** is a module's default for what should wait for a person's review, such as "expenses over 500". It is declared with `definePolicy` and has a decision of `auto`, `review` or `deny`.

Policies are experimental: they are stored and shown to the person installing the module, and nothing enforces them yet.

## Pre-release checklist

* Every declared item has a uuid, and none is reused from another module.
* `devias plan` against a fresh workspace shows only creates.
* The module installs cleanly after the modules it depends on, and uninstalls cleanly.

## Related

* [Built-in modules](https://docs.devias.io/guides/modules/built-in-modules.md): the modules that ship with Devias, as examples.
* [Customize the studio](https://docs.devias.io/guides/customize-studio/what-you-can-customize.md): add screens of your own.
* [Plan and apply](https://docs.devias.io/guides/modules/plan-and-apply.md): preview and apply a manifest.


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