---
sidebar_position: 1
question: How do I turn a marketplace module on?
kind: task
via_web: soon
via_cli: available
via_python: na
via_api: na
via_config: available
ref_web: Marketplace
ref_cli: uv add
ref_config: "modules:"
prereq: You need an ABI project (`abi new project`) with `config.yaml` and `pyproject.toml` at its root.
next:
  - /capabilities/build/apps/overview
  - /capabilities/build/modules/marketplace/marketplace-overview
  - /capabilities/build/agents/test-an-agent
---

# Install from the marketplace

The Marketplace is the `naas-abi-marketplace` package, which `naas-abi` already depends on. Each of its modules is a Python package under `naas_abi_marketplace`. Installing one means three things: add its dependencies, enable it in `config.yaml`, restart the engine. Its agents, apps, ontologies, workflows and pipelines then load with the rest.

| Category | Path | What it adds |
|---|---|---|
| AI providers | `naas_abi_marketplace.ai.<provider>` | Models for the model registry, and a chat agent |
| Applications | `naas_abi_marketplace.applications.<app>` | An integration with a third-party service, and an agent that uses it |
| Domains | `naas_abi_marketplace.domains.<bucket>...` | Domain-expert agents, workflows and ontologies |

## Web UI

Coming soon. The Nexus **Marketplace** lists the installed modules and the catalog, but the **Install** button on a Community module does nothing yet. Use the CLI or Config steps on this page, then the module shows as **Installed**.

## CLI

### Add the module's dependencies

Each module is an optional extra named `<category>-<module>`. Some extras are empty, others pull the module's third-party libraries. From the project root:

```bash
uv add "naas-abi-marketplace[applications-github]"
```

The extras are listed in `libs/naas-abi-marketplace/pyproject.toml` in the ABI repository. A project created with `abi new project` already has the OpenRouter module enabled; its extra, `ai-openrouter`, is empty.

### Enable it

Add the module under `modules:` in `config.yaml`, as in the [Config steps](/user-guide/build/modules/marketplace/marketplace-install?via=config). The module's `Configuration` class lists its settings, and its docstring has the entry to copy.

### Restart the engine

```bash
abi dev down
abi dev up
```

With Docker Compose, run `abi stack stop`, then `abi stack start`.

### Check it

```bash
abi module list
abi chat naas_abi_marketplace.applications.github GitHubAgent
```

`abi module list` prints the modules of `config.yaml` and whether each is enabled. `abi chat` talks to one of the module's agents from the terminal. The commands are [`abi module list`](/user-guide/reference/cli#abi-module-list) and [`abi chat`](/user-guide/reference/cli#abi-chat).

## Python

Not applicable. No code installs a module: the engine loads what `config.yaml` enables. To change a Marketplace module's code, copy it into your project, as under [Customize a module](#customize-a-module).

## REST API

Not applicable. No endpoint installs a module. `GET /api/modules/` lists the installed modules and the catalog, which is what the Nexus Marketplace shows.

## Config

### Add the module entry

Use the module's import path, with the settings its `Configuration` class declares. Write secrets as `{{ secret.NAME }}`:

```yaml title="config.yaml"
modules:
  - module: naas_abi_marketplace.applications.github
    enabled: true
    config:
      github_access_token: "{{ secret.GITHUB_ACCESS_TOKEN }}"
```

### Store the secret

```bash title=".env"
GITHUB_ACCESS_TOKEN=ghp_...
```

### List what it depends on

A module names the modules it needs in `dependencies`. Each of them must be under `modules:` and enabled too. One missing from `modules:` stops the engine with `Module <name> not found in configuration`; one listed with `enabled: false` stops it with `Module '<name>' depends on '<dependency>' which is not enabled. Aborting.` The engine adds `naas_abi_core.modules.templatablesparqlquery`, `bfo` and `cco` by itself, and a dependency written with `#soft` is optional.

### Restart

Restart the engine. The module's agents show in Nexus and on the API's `/agents` routes. Its apps show in Settings › Apps, off until a workspace turns them on.

## Customize a module

To change a Marketplace module, copy its package into your project's `src/`, for example `libs/naas-abi-marketplace/naas_abi_marketplace/applications/github` to `src/my_github`. Update the import paths inside the copy (the package imports itself by its full path), set `module: my_github` in `config.yaml`, and edit the copy. It is then an ordinary [in-engine module](/user-guide/build/modules/creating-a-module).

## Turn a module off

Set `enabled: false` on its entry in `config.yaml`, or remove the entry, and restart the engine.
